/*!
 * DevExtreme (dx.viz.debug.js)
 * Version: 25.1.3
 * Build date: Wed Jun 25 2025
 *
 * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
 * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
 */
"use strict";
! function() {
    var __webpack_modules__ = {
        12887:
            /*!*******************************************************************************************************************!*\
              !*** ../../node_modules/.pnpm/inferno-create-element@8.2.3/node_modules/inferno-create-element/dist/index.esm.js ***!
              \*******************************************************************************************************************/
            function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
                __webpack_require__.r(__webpack_exports__);
                __webpack_require__.d(__webpack_exports__, {
                    createElement: function() {
                        return createElement
                    }
                });
                var inferno__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! inferno */ 76231);

                function isNullOrUndef(o) {
                    return void 0 === o || null === o
                }

                function isUndefined(o) {
                    return void 0 === o
                }
                var componentHooks = {
                    onComponentDidAppear: 1,
                    onComponentDidMount: 1,
                    onComponentDidUpdate: 1,
                    onComponentShouldUpdate: 1,
                    onComponentWillDisappear: 1,
                    onComponentWillMount: 1,
                    onComponentWillUnmount: 1,
                    onComponentWillUpdate: 1
                };

                function createElement(type, props, _children) {
                    var children;
                    var ref = null;
                    var key = null;
                    var className = null;
                    var flags;
                    var newProps;
                    var childLen = arguments.length - 2;
                    if (1 === childLen) {
                        children = _children
                    } else if (childLen > 1) {
                        children = [];
                        while (childLen-- > 0) {
                            children[childLen] = arguments[childLen + 2]
                        }
                    }
                    if (o = type, "string" === typeof o) {
                        flags = (0, inferno__WEBPACK_IMPORTED_MODULE_0__.getFlagsForElementVnode)(type);
                        if (!isNullOrUndef(props)) {
                            newProps = {};
                            for (var prop in props) {
                                if ("className" === prop || "class" === prop) {
                                    className = props[prop]
                                } else if ("key" === prop) {
                                    key = props.key
                                } else if ("children" === prop && isUndefined(children)) {
                                    children = props.children
                                } else if ("ref" === prop) {
                                    ref = props.ref
                                } else {
                                    if ("contenteditable" === prop) {
                                        flags |= 4096
                                    }
                                    newProps[prop] = props[prop]
                                }
                            }
                        }
                    } else {
                        flags = 2;
                        if (!isUndefined(children)) {
                            if (!props) {
                                props = {}
                            }
                            props.children = children
                        }
                        if (!isNullOrUndef(props)) {
                            newProps = {};
                            for (var _prop in props) {
                                if ("key" === _prop) {
                                    key = props.key
                                } else if ("ref" === _prop) {
                                    ref = props.ref
                                } else if (1 === componentHooks[_prop]) {
                                    if (!ref) {
                                        ref = {}
                                    }
                                    ref[_prop] = props[_prop]
                                } else {
                                    newProps[_prop] = props[_prop]
                                }
                            }
                        }
                        return (0, inferno__WEBPACK_IMPORTED_MODULE_0__.createComponentVNode)(flags, type, newProps, key, ref)
                    }
                    var o;
                    if (8192 & flags) {
                        return (0, inferno__WEBPACK_IMPORTED_MODULE_0__.createFragment)(1 === childLen ? [children] : children, 0, key)
                    }
                    return (0, inferno__WEBPACK_IMPORTED_MODULE_0__.createVNode)(flags, type, className, children, 0, newProps, key, ref)
                }
            },
        76231:
            /*!********************************************************************************************!*\
              !*** ../../node_modules/.pnpm/inferno@8.2.3/node_modules/inferno/index.esm.js + 1 modules ***!
              \********************************************************************************************/
            function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
                __webpack_require__.r(__webpack_exports__);
                __webpack_require__.d(__webpack_exports__, {
                    AnimationQueues: function() {
                        return AnimationQueues
                    },
                    Component: function() {
                        return Component
                    },
                    EMPTY_OBJ: function() {
                        return EMPTY_OBJ
                    },
                    Fragment: function() {
                        return Fragment
                    },
                    _CI: function() {
                        return createClassComponentInstance
                    },
                    _HI: function() {
                        return normalizeRoot
                    },
                    _M: function() {
                        return mount
                    },
                    _MCCC: function() {
                        return mountClassComponentCallbacks
                    },
                    _ME: function() {
                        return mountElement
                    },
                    _MFCC: function() {
                        return mountFunctionalComponentCallbacks
                    },
                    _MP: function() {
                        return mountProps
                    },
                    _MR: function() {
                        return mountRef
                    },
                    _RFC: function() {
                        return renderFunctionalComponent
                    },
                    __render: function() {
                        return __render
                    },
                    createComponentVNode: function() {
                        return createComponentVNode
                    },
                    createFragment: function() {
                        return createFragment
                    },
                    createPortal: function() {
                        return createPortal
                    },
                    createRef: function() {
                        return createRef
                    },
                    createRenderer: function() {
                        return createRenderer
                    },
                    createTextVNode: function() {
                        return createTextVNode
                    },
                    createVNode: function() {
                        return createVNode
                    },
                    directClone: function() {
                        return directClone
                    },
                    findDOMFromVNode: function() {
                        return findDOMFromVNode
                    },
                    forwardRef: function() {
                        return forwardRef
                    },
                    getFlagsForElementVnode: function() {
                        return getFlagsForElementVnode
                    },
                    linkEvent: function() {
                        return linkEvent
                    },
                    normalizeProps: function() {
                        return normalizeProps
                    },
                    options: function() {
                        return options
                    },
                    render: function() {
                        return render
                    },
                    rerender: function() {
                        return rerender
                    },
                    version: function() {
                        return version
                    }
                });
                var isArray = Array.isArray;

                function isStringOrNumber(o) {
                    var type = typeof o;
                    return "string" === type || "number" === type
                }

                function isNullOrUndef(o) {
                    return void 0 === o || null === o
                }

                function isInvalid(o) {
                    return null === o || false === o || true === o || void 0 === o
                }

                function isFunction(o) {
                    return "function" === typeof o
                }

                function isString(o) {
                    return "string" === typeof o
                }

                function isNull(o) {
                    return null === o
                }

                function combineFrom(first, second) {
                    var out = {};
                    if (first) {
                        for (var key in first) {
                            out[key] = first[key]
                        }
                    }
                    if (second) {
                        for (var _key in second) {
                            out[_key] = second[_key]
                        }
                    }
                    return out
                }

                function linkEvent(data, event) {
                    if (isFunction(event)) {
                        return {
                            data: data,
                            event: event
                        }
                    }
                    return null
                }

                function isLinkEventObject(o) {
                    return !isNull(o) && "object" === typeof o
                }
                var EMPTY_OBJ = {};
                var Fragment = "$F";
                var AnimationQueues = function() {
                    this.componentDidAppear = [];
                    this.componentWillDisappear = [];
                    this.componentWillMove = []
                };

                function normalizeEventName(name) {
                    return name.substring(2).toLowerCase()
                }

                function appendChild(parentDOM, dom) {
                    parentDOM.appendChild(dom)
                }

                function insertOrAppend(parentDOM, newNode, nextNode) {
                    if (isNull(nextNode)) {
                        appendChild(parentDOM, newNode)
                    } else {
                        parentDOM.insertBefore(newNode, nextNode)
                    }
                }

                function removeChild(parentDOM, childNode) {
                    parentDOM.removeChild(childNode)
                }

                function callAll(arrayFn) {
                    for (var i = 0; i < arrayFn.length; i++) {
                        arrayFn[i]()
                    }
                }

                function findChildVNode(vNode, startEdge, flags) {
                    var children = vNode.children;
                    if (4 & flags) {
                        return children.$LI
                    }
                    if (8192 & flags) {
                        return 2 === vNode.childFlags ? children : children[startEdge ? 0 : children.length - 1]
                    }
                    return children
                }

                function findDOMFromVNode(vNode, startEdge) {
                    var flags;
                    while (vNode) {
                        flags = vNode.flags;
                        if (1521 & flags) {
                            return vNode.dom
                        }
                        vNode = findChildVNode(vNode, startEdge, flags)
                    }
                    return null
                }

                function callAllAnimationHooks(animationQueue, callback) {
                    var animationsLeft = animationQueue.length;
                    var fn;
                    while (void 0 !== (fn = animationQueue.pop())) {
                        fn((function() {
                            if (--animationsLeft <= 0 && isFunction(callback)) {
                                callback()
                            }
                        }))
                    }
                }

                function clearVNodeDOM(vNode, parentDOM, deferredRemoval) {
                    do {
                        var flags = vNode.flags;
                        if (1521 & flags) {
                            if (!deferredRemoval || vNode.dom.parentNode === parentDOM) {
                                removeChild(parentDOM, vNode.dom)
                            }
                            return
                        }
                        var children = vNode.children;
                        if (4 & flags) {
                            vNode = children.$LI
                        }
                        if (8 & flags) {
                            vNode = children
                        }
                        if (8192 & flags) {
                            if (2 === vNode.childFlags) {
                                vNode = children
                            } else {
                                for (var i = 0, len = children.length; i < len; ++i) {
                                    clearVNodeDOM(children[i], parentDOM, false)
                                }
                                return
                            }
                        }
                    } while (vNode)
                }

                function removeVNodeDOM(vNode, parentDOM, animations) {
                    if (animations.componentWillDisappear.length > 0) {
                        callAllAnimationHooks(animations.componentWillDisappear, function(vNode, parentDOM) {
                            return function() {
                                clearVNodeDOM(vNode, parentDOM, true)
                            }
                        }(vNode, parentDOM))
                    } else {
                        clearVNodeDOM(vNode, parentDOM, false)
                    }
                }

                function addMoveAnimationHook(animations, parentVNode, refOrInstance, dom, parentDOM, nextNode, flags, props) {
                    animations.componentWillMove.push({
                        dom: dom,
                        fn: function() {
                            if (4 & flags) {
                                refOrInstance.componentWillMove(parentVNode, parentDOM, dom)
                            } else if (8 & flags) {
                                refOrInstance.onComponentWillMove(parentVNode, parentDOM, dom, props)
                            }
                        },
                        next: nextNode,
                        parent: parentDOM
                    })
                }

                function moveVNodeDOM(parentVNode, vNode, parentDOM, nextNode, animations) {
                    var refOrInstance;
                    var instanceProps;
                    var instanceFlags = vNode.flags;
                    do {
                        var flags = vNode.flags;
                        if (1521 & flags) {
                            if (!isNullOrUndef(refOrInstance) && (isFunction(refOrInstance.componentWillMove) || isFunction(refOrInstance.onComponentWillMove))) {
                                addMoveAnimationHook(animations, parentVNode, refOrInstance, vNode.dom, parentDOM, nextNode, instanceFlags, instanceProps)
                            } else {
                                insertOrAppend(parentDOM, vNode.dom, nextNode)
                            }
                            return
                        }
                        var children = vNode.children;
                        if (4 & flags) {
                            refOrInstance = vNode.children;
                            instanceProps = vNode.props;
                            vNode = children.$LI
                        } else if (8 & flags) {
                            refOrInstance = vNode.ref;
                            instanceProps = vNode.props;
                            vNode = children
                        } else if (8192 & flags) {
                            if (2 === vNode.childFlags) {
                                vNode = children
                            } else {
                                for (var i = 0, len = children.length; i < len; ++i) {
                                    moveVNodeDOM(parentVNode, children[i], parentDOM, nextNode, animations)
                                }
                                return
                            }
                        }
                    } while (vNode)
                }

                function createDerivedState(instance, nextProps, state) {
                    if (instance.constructor.getDerivedStateFromProps) {
                        return combineFrom(state, instance.constructor.getDerivedStateFromProps(nextProps, state))
                    }
                    return state
                }
                var renderCheck = {
                    v: false
                };
                var options = {
                    componentComparator: null,
                    createVNode: null,
                    renderComplete: null
                };

                function setTextContent(dom, children) {
                    dom.textContent = children
                }

                function isLastValueSameLinkEvent(lastValue, nextValue) {
                    return isLinkEventObject(lastValue) && lastValue.event === nextValue.event && lastValue.data === nextValue.data
                }

                function mergeUnsetProperties(to, from) {
                    for (var propName in from) {
                        if (o = to[propName], void 0 === o) {
                            to[propName] = from[propName]
                        }
                    }
                    var o;
                    return to
                }

                function safeCall1(method, arg1) {
                    return !!isFunction(method) && (method(arg1), true)
                }
                var keyPrefix = "$";

                function V(childFlags, children, className, flags, key, props, ref, type) {
                    this.childFlags = childFlags;
                    this.children = children;
                    this.className = className;
                    this.dom = null;
                    this.flags = flags;
                    this.key = void 0 === key ? null : key;
                    this.props = void 0 === props ? null : props;
                    this.ref = void 0 === ref ? null : ref;
                    this.type = type
                }

                function createVNode(flags, type, className, children, childFlags, props, key, ref) {
                    var childFlag = void 0 === childFlags ? 1 : childFlags;
                    var vNode = new V(childFlag, children, className, flags, key, props, ref, type);
                    if (options.createVNode) {
                        options.createVNode(vNode)
                    }
                    if (0 === childFlag) {
                        normalizeChildren(vNode, vNode.children)
                    }
                    return vNode
                }

                function createComponentVNode(flags, type, props, key, ref) {
                    flags = function(flags, type) {
                        if (12 & flags) {
                            return flags
                        }
                        if (type.prototype && type.prototype.render) {
                            return 4
                        }
                        if (type.render) {
                            return 32776
                        }
                        return 8
                    }(flags, type);
                    var vNode = new V(1, null, null, flags, key, function(flags, type, props) {
                        var defaultProps = (32768 & flags ? type.render : type).defaultProps;
                        if (isNullOrUndef(defaultProps)) {
                            return props
                        }
                        if (isNullOrUndef(props)) {
                            return combineFrom(defaultProps, null)
                        }
                        return mergeUnsetProperties(props, defaultProps)
                    }(flags, type, props), function(flags, type, ref) {
                        if (4 & flags) {
                            return ref
                        }
                        var defaultHooks = (32768 & flags ? type.render : type).defaultHooks;
                        if (isNullOrUndef(defaultHooks)) {
                            return ref
                        }
                        if (isNullOrUndef(ref)) {
                            return defaultHooks
                        }
                        return mergeUnsetProperties(ref, defaultHooks)
                    }(flags, type, ref), type);
                    if (options.createVNode) {
                        options.createVNode(vNode)
                    }
                    return vNode
                }

                function createTextVNode(text, key) {
                    return new V(1, isNullOrUndef(text) || true === text || false === text ? "" : text, null, 16, key, null, null, null)
                }

                function createFragment(children, childFlags, key) {
                    var fragment = createVNode(8192, 8192, null, children, childFlags, null, key, null);
                    switch (fragment.childFlags) {
                        case 1:
                            fragment.children = createVoidVNode();
                            fragment.childFlags = 2;
                            break;
                        case 16:
                            fragment.children = [createTextVNode(children)];
                            fragment.childFlags = 4
                    }
                    return fragment
                }

                function normalizeProps(vNode) {
                    var props = vNode.props;
                    if (props) {
                        var flags = vNode.flags;
                        if (481 & flags) {
                            if (void 0 !== props.children && isNullOrUndef(vNode.children)) {
                                normalizeChildren(vNode, props.children)
                            }
                            if (void 0 !== props.className) {
                                if (isNullOrUndef(vNode.className)) {
                                    vNode.className = props.className || null
                                }
                                props.className = void 0
                            }
                        }
                        if (void 0 !== props.key) {
                            vNode.key = props.key;
                            props.key = void 0
                        }
                        if (void 0 !== props.ref) {
                            if (8 & flags) {
                                vNode.ref = combineFrom(vNode.ref, props.ref)
                            } else {
                                vNode.ref = props.ref
                            }
                            props.ref = void 0
                        }
                    }
                    return vNode
                }

                function directClone(vNodeToClone) {
                    var flags = -16385 & vNodeToClone.flags;
                    var props = vNodeToClone.props;
                    if (14 & flags) {
                        if (!isNull(props)) {
                            var propsToClone = props;
                            props = {};
                            for (var key in propsToClone) {
                                props[key] = propsToClone[key]
                            }
                        }
                    }
                    if (0 === (8192 & flags)) {
                        return new V(vNodeToClone.childFlags, vNodeToClone.children, vNodeToClone.className, flags, vNodeToClone.key, props, vNodeToClone.ref, vNodeToClone.type)
                    }
                    return function(vNodeToClone) {
                        var oldChildren = vNodeToClone.children;
                        var childFlags = vNodeToClone.childFlags;
                        return createFragment(2 === childFlags ? directClone(oldChildren) : oldChildren.map(directClone), childFlags, vNodeToClone.key)
                    }(vNodeToClone)
                }

                function createVoidVNode() {
                    return createTextVNode("", null)
                }

                function createPortal(children, container) {
                    var normalizedRoot = normalizeRoot(children);
                    return createVNode(1024, 1024, null, normalizedRoot, 0, null, normalizedRoot.key, container)
                }

                function _normalizeVNodes(nodes, result, index, currentKey) {
                    for (var len = nodes.length; index < len; index++) {
                        var n = nodes[index];
                        if (!isInvalid(n)) {
                            var newKey = currentKey + keyPrefix + index;
                            if (isArray(n)) {
                                _normalizeVNodes(n, result, 0, newKey)
                            } else {
                                if (isStringOrNumber(n)) {
                                    n = createTextVNode(n, newKey)
                                } else {
                                    var oldKey = n.key;
                                    var isPrefixedKey = isString(oldKey) && oldKey[0] === keyPrefix;
                                    if (81920 & n.flags || isPrefixedKey) {
                                        n = directClone(n)
                                    }
                                    n.flags |= 65536;
                                    if (!isPrefixedKey) {
                                        if (isNull(oldKey)) {
                                            n.key = newKey
                                        } else {
                                            n.key = currentKey + oldKey
                                        }
                                    } else if (oldKey.substring(0, currentKey.length) !== currentKey) {
                                        n.key = currentKey + oldKey
                                    }
                                }
                                result.push(n)
                            }
                        }
                    }
                }

                function getFlagsForElementVnode(type) {
                    switch (type) {
                        case "svg":
                            return 32;
                        case "input":
                            return 64;
                        case "select":
                            return 256;
                        case "textarea":
                            return 128;
                        case Fragment:
                            return 8192;
                        default:
                            return 1
                    }
                }

                function normalizeChildren(vNode, children) {
                    var newChildren;
                    var newChildFlags = 1;
                    if (isInvalid(children)) {
                        newChildren = children
                    } else if (isStringOrNumber(children)) {
                        newChildFlags = 16;
                        newChildren = children
                    } else if (isArray(children)) {
                        var len = children.length;
                        for (var i = 0; i < len; ++i) {
                            var n = children[i];
                            if (isInvalid(n) || isArray(n)) {
                                newChildren = newChildren || children.slice(0, i);
                                _normalizeVNodes(children, newChildren, i, "");
                                break
                            } else if (isStringOrNumber(n)) {
                                newChildren = newChildren || children.slice(0, i);
                                newChildren.push(createTextVNode(n, keyPrefix + i))
                            } else {
                                var key = n.key;
                                var needsCloning = (81920 & n.flags) > 0;
                                var isNullKey = isNull(key);
                                var isPrefixed = isString(key) && key[0] === keyPrefix;
                                if (needsCloning || isNullKey || isPrefixed) {
                                    newChildren = newChildren || children.slice(0, i);
                                    if (needsCloning || isPrefixed) {
                                        n = directClone(n)
                                    }
                                    if (isNullKey || isPrefixed) {
                                        n.key = keyPrefix + i
                                    }
                                    newChildren.push(n)
                                } else if (newChildren) {
                                    newChildren.push(n)
                                }
                                n.flags |= 65536
                            }
                        }
                        newChildren = newChildren || children;
                        if (0 === newChildren.length) {
                            newChildFlags = 1
                        } else {
                            newChildFlags = 8
                        }
                    } else {
                        newChildren = children;
                        newChildren.flags |= 65536;
                        if (81920 & children.flags) {
                            newChildren = directClone(children)
                        }
                        newChildFlags = 2
                    }
                    vNode.children = newChildren;
                    vNode.childFlags = newChildFlags;
                    return vNode
                }

                function normalizeRoot(input) {
                    if (isInvalid(input) || isStringOrNumber(input)) {
                        return createTextVNode(input, null)
                    }
                    if (isArray(input)) {
                        return createFragment(input, 0, null)
                    }
                    return 16384 & input.flags ? directClone(input) : input
                }
                var xlinkNS = "http://www.w3.org/1999/xlink";
                var xmlNS = "http://www.w3.org/XML/1998/namespace";
                var namespaces = {
                    "xlink:actuate": xlinkNS,
                    "xlink:arcrole": xlinkNS,
                    "xlink:href": xlinkNS,
                    "xlink:role": xlinkNS,
                    "xlink:show": xlinkNS,
                    "xlink:title": xlinkNS,
                    "xlink:type": xlinkNS,
                    "xml:base": xmlNS,
                    "xml:lang": xmlNS,
                    "xml:space": xmlNS
                };

                function getDelegatedEventObject(v) {
                    return {
                        onClick: v,
                        onDblClick: v,
                        onFocusIn: v,
                        onFocusOut: v,
                        onKeyDown: v,
                        onKeyPress: v,
                        onKeyUp: v,
                        onMouseDown: v,
                        onMouseMove: v,
                        onMouseUp: v,
                        onTouchEnd: v,
                        onTouchMove: v,
                        onTouchStart: v
                    }
                }
                var attachedEventCounts = getDelegatedEventObject(0);
                var attachedEvents = getDelegatedEventObject(null);
                var syntheticEvents = getDelegatedEventObject(true);

                function updateOrAddSyntheticEvent(name, dom) {
                    var eventsObject = dom.$EV;
                    if (!eventsObject) {
                        eventsObject = dom.$EV = getDelegatedEventObject(null)
                    }
                    if (!eventsObject[name]) {
                        if (1 === ++attachedEventCounts[name]) {
                            attachedEvents[name] = function(name) {
                                var attachedEvent = "onClick" === name || "onDblClick" === name ? function(name) {
                                    return function(event) {
                                        if (0 !== event.button) {
                                            event.stopPropagation();
                                            return
                                        }
                                        dispatchEvents(event, true, name, extendEventProperties(event))
                                    }
                                }(name) : function(name) {
                                    return function(event) {
                                        dispatchEvents(event, false, name, extendEventProperties(event))
                                    }
                                }(name);
                                document.addEventListener(normalizeEventName(name), attachedEvent);
                                return attachedEvent
                            }(name)
                        }
                    }
                    return eventsObject
                }

                function unmountSyntheticEvent(name, dom) {
                    var eventsObject = dom.$EV;
                    if (eventsObject && eventsObject[name]) {
                        if (0 === --attachedEventCounts[name]) {
                            document.removeEventListener(normalizeEventName(name), attachedEvents[name]);
                            attachedEvents[name] = null
                        }
                        eventsObject[name] = null
                    }
                }

                function dispatchEvents(event, isClick, name, eventData) {
                    var dom = function(event) {
                        return isFunction(event.composedPath) ? event.composedPath()[0] : event.target
                    }(event);
                    do {
                        if (isClick && dom.disabled) {
                            return
                        }
                        var eventsObject = dom.$EV;
                        if (eventsObject) {
                            var currentEvent = eventsObject[name];
                            if (currentEvent) {
                                eventData.dom = dom;
                                currentEvent.event ? currentEvent.event(currentEvent.data, event) : currentEvent(event);
                                if (event.cancelBubble) {
                                    return
                                }
                            }
                        }
                        dom = dom.parentNode
                    } while (!isNull(dom))
                }

                function stopPropagation() {
                    this.cancelBubble = true;
                    if (!this.immediatePropagationStopped) {
                        this.stopImmediatePropagation()
                    }
                }

                function isDefaultPrevented() {
                    return this.defaultPrevented
                }

                function isPropagationStopped() {
                    return this.cancelBubble
                }

                function extendEventProperties(event) {
                    var eventData = {
                        dom: document
                    };
                    event.isDefaultPrevented = isDefaultPrevented;
                    event.isPropagationStopped = isPropagationStopped;
                    event.stopPropagation = stopPropagation;
                    Object.defineProperty(event, "currentTarget", {
                        configurable: true,
                        get: function() {
                            return eventData.dom
                        }
                    });
                    return eventData
                }

                function triggerEventListener(props, methodName, e) {
                    if (props[methodName]) {
                        var listener = props[methodName];
                        if (listener.event) {
                            listener.event(listener.data, e)
                        } else {
                            listener(e)
                        }
                    } else {
                        var nativeListenerName = methodName.toLowerCase();
                        if (props[nativeListenerName]) {
                            props[nativeListenerName](e)
                        }
                    }
                }

                function createWrappedFunction(methodName, applyValue) {
                    var fnMethod = function(e) {
                        var vNode = this.$V;
                        if (!vNode) {
                            return
                        }
                        var props = vNode.props || EMPTY_OBJ;
                        var dom = vNode.dom;
                        if (isString(methodName)) {
                            triggerEventListener(props, methodName, e)
                        } else {
                            for (var i = 0; i < methodName.length; ++i) {
                                triggerEventListener(props, methodName[i], e)
                            }
                        }
                        if (isFunction(applyValue)) {
                            var newVNode = this.$V;
                            var newProps = newVNode.props || EMPTY_OBJ;
                            applyValue(newProps, dom, false, newVNode)
                        }
                    };
                    Object.defineProperty(fnMethod, "wrapped", {
                        configurable: false,
                        enumerable: false,
                        value: true,
                        writable: false
                    });
                    return fnMethod
                }

                function attachEvent(dom, eventName, handler) {
                    var previousKey = "$" + eventName;
                    var previousArgs = dom[previousKey];
                    if (previousArgs) {
                        if (previousArgs[1].wrapped) {
                            return
                        }
                        dom.removeEventListener(previousArgs[0], previousArgs[1]);
                        dom[previousKey] = null
                    }
                    if (isFunction(handler)) {
                        dom.addEventListener(eventName, handler);
                        dom[previousKey] = [eventName, handler]
                    }
                }

                function isCheckedType(type) {
                    return "checkbox" === type || "radio" === type
                }
                var onTextInputChange = createWrappedFunction("onInput", applyValueInput);
                var wrappedOnChange$1 = createWrappedFunction(["onClick", "onChange"], applyValueInput);

                function emptywrapper(event) {
                    event.stopPropagation()
                }
                emptywrapper.wrapped = true;

                function applyValueInput(nextPropsOrEmpty, dom) {
                    var type = nextPropsOrEmpty.type;
                    var value = nextPropsOrEmpty.value;
                    var checked = nextPropsOrEmpty.checked;
                    var multiple = nextPropsOrEmpty.multiple;
                    var defaultValue = nextPropsOrEmpty.defaultValue;
                    var hasValue = !isNullOrUndef(value);
                    if (type && type !== dom.type) {
                        dom.setAttribute("type", type)
                    }
                    if (!isNullOrUndef(multiple) && multiple !== dom.multiple) {
                        dom.multiple = multiple
                    }
                    if (!isNullOrUndef(defaultValue) && !hasValue) {
                        dom.defaultValue = defaultValue + ""
                    }
                    if (isCheckedType(type)) {
                        if (hasValue) {
                            dom.value = value
                        }
                        if (!isNullOrUndef(checked)) {
                            dom.checked = checked
                        }
                    } else if (hasValue && dom.value !== value) {
                        dom.defaultValue = value;
                        dom.value = value
                    } else if (!isNullOrUndef(checked)) {
                        dom.checked = checked
                    }
                }

                function updateChildOptions(vNode, value) {
                    if ("option" === vNode.type) {
                        ! function(vNode, value) {
                            var props = vNode.props || EMPTY_OBJ;
                            var dom = vNode.dom;
                            dom.value = props.value;
                            if (props.value === value || isArray(value) && -1 !== value.indexOf(props.value)) {
                                dom.selected = true
                            } else if (!isNullOrUndef(value) || !isNullOrUndef(props.selected)) {
                                dom.selected = props.selected || false
                            }
                        }(vNode, value)
                    } else {
                        var children = vNode.children;
                        var flags = vNode.flags;
                        if (4 & flags) {
                            updateChildOptions(children.$LI, value)
                        } else if (8 & flags) {
                            updateChildOptions(children, value)
                        } else if (2 === vNode.childFlags) {
                            updateChildOptions(children, value)
                        } else if (12 & vNode.childFlags) {
                            for (var i = 0, len = children.length; i < len; ++i) {
                                updateChildOptions(children[i], value)
                            }
                        }
                    }
                }
                var onSelectChange = createWrappedFunction("onChange", applyValueSelect);

                function applyValueSelect(nextPropsOrEmpty, dom, mounting, vNode) {
                    var multiplePropInBoolean = Boolean(nextPropsOrEmpty.multiple);
                    if (!isNullOrUndef(nextPropsOrEmpty.multiple) && multiplePropInBoolean !== dom.multiple) {
                        dom.multiple = multiplePropInBoolean
                    }
                    var index = nextPropsOrEmpty.selectedIndex;
                    if (-1 === index) {
                        dom.selectedIndex = -1
                    }
                    var childFlags = vNode.childFlags;
                    if (1 !== childFlags) {
                        var value = nextPropsOrEmpty.value;
                        if ((o = index, "number" === typeof o) && index > -1 && dom.options[index]) {
                            value = dom.options[index].value
                        }
                        if (mounting && isNullOrUndef(value)) {
                            value = nextPropsOrEmpty.defaultValue
                        }
                        updateChildOptions(vNode, value)
                    }
                    var o
                }
                var onTextareaInputChange = createWrappedFunction("onInput", applyValueTextArea);
                var wrappedOnChange = createWrappedFunction("onChange");

                function applyValueTextArea(nextPropsOrEmpty, dom, mounting) {
                    var value = nextPropsOrEmpty.value;
                    var domValue = dom.value;
                    if (isNullOrUndef(value)) {
                        if (mounting) {
                            var defaultValue = nextPropsOrEmpty.defaultValue;
                            if (!isNullOrUndef(defaultValue) && defaultValue !== domValue) {
                                dom.defaultValue = defaultValue;
                                dom.value = defaultValue
                            }
                        }
                    } else if (domValue !== value) {
                        dom.defaultValue = value;
                        dom.value = value
                    }
                }

                function processElement(flags, vNode, dom, nextPropsOrEmpty, mounting, isControlled) {
                    if (64 & flags) {
                        applyValueInput(nextPropsOrEmpty, dom)
                    } else if (256 & flags) {
                        applyValueSelect(nextPropsOrEmpty, dom, mounting, vNode)
                    } else if (128 & flags) {
                        applyValueTextArea(nextPropsOrEmpty, dom, mounting)
                    }
                    if (isControlled) {
                        dom.$V = vNode
                    }
                }

                function addFormElementEventHandlers(flags, dom, nextPropsOrEmpty) {
                    if (64 & flags) {
                        ! function(dom, nextPropsOrEmpty) {
                            if (isCheckedType(nextPropsOrEmpty.type)) {
                                attachEvent(dom, "change", wrappedOnChange$1);
                                attachEvent(dom, "click", emptywrapper)
                            } else {
                                attachEvent(dom, "input", onTextInputChange)
                            }
                        }(dom, nextPropsOrEmpty)
                    } else if (256 & flags) {
                        ! function(dom) {
                            attachEvent(dom, "change", onSelectChange)
                        }(dom)
                    } else if (128 & flags) {
                        ! function(dom, nextPropsOrEmpty) {
                            attachEvent(dom, "input", onTextareaInputChange);
                            if (nextPropsOrEmpty.onChange) {
                                attachEvent(dom, "change", wrappedOnChange)
                            }
                        }(dom, nextPropsOrEmpty)
                    }
                }

                function isControlledFormElement(nextPropsOrEmpty) {
                    return nextPropsOrEmpty.type && isCheckedType(nextPropsOrEmpty.type) ? !isNullOrUndef(nextPropsOrEmpty.checked) : !isNullOrUndef(nextPropsOrEmpty.value)
                }

                function createRef() {
                    return {
                        current: null
                    }
                }

                function forwardRef(render) {
                    var ref = {
                        render: render
                    };
                    return ref
                }

                function unmountRef(ref) {
                    if (ref) {
                        if (!safeCall1(ref, null) && ref.current) {
                            ref.current = null
                        }
                    }
                }

                function mountRef(ref, value, lifecycle) {
                    if (ref && (isFunction(ref) || void 0 !== ref.current)) {
                        lifecycle.push((function() {
                            if (!safeCall1(ref, value) && void 0 !== ref.current) {
                                ref.current = value
                            }
                        }))
                    }
                }

                function remove(vNode, parentDOM, animations) {
                    unmount(vNode, animations);
                    removeVNodeDOM(vNode, parentDOM, animations)
                }

                function unmount(vNode, animations) {
                    var flags = vNode.flags;
                    var children = vNode.children;
                    var ref;
                    if (481 & flags) {
                        ref = vNode.ref;
                        var props = vNode.props;
                        unmountRef(ref);
                        var childFlags = vNode.childFlags;
                        if (!isNull(props)) {
                            var keys = Object.keys(props);
                            for (var i = 0, len = keys.length; i < len; i++) {
                                var key = keys[i];
                                if (syntheticEvents[key]) {
                                    unmountSyntheticEvent(key, vNode.dom)
                                }
                            }
                        }
                        if (12 & childFlags) {
                            unmountAllChildren(children, animations)
                        } else if (2 === childFlags) {
                            unmount(children, animations)
                        }
                    } else if (children) {
                        if (4 & flags) {
                            if (isFunction(children.componentWillUnmount)) {
                                children.componentWillUnmount()
                            }
                            var childAnimations = animations;
                            if (isFunction(children.componentWillDisappear)) {
                                childAnimations = new AnimationQueues;
                                addDisappearAnimationHook(animations, children, children.$LI.dom, flags, void 0)
                            }
                            unmountRef(vNode.ref);
                            children.$UN = true;
                            unmount(children.$LI, childAnimations)
                        } else if (8 & flags) {
                            var _childAnimations = animations;
                            ref = vNode.ref;
                            if (!isNullOrUndef(ref)) {
                                var domEl = null;
                                if (isFunction(ref.onComponentWillUnmount)) {
                                    domEl = findDOMFromVNode(vNode, true);
                                    ref.onComponentWillUnmount(domEl, vNode.props || EMPTY_OBJ)
                                }
                                if (isFunction(ref.onComponentWillDisappear)) {
                                    _childAnimations = new AnimationQueues;
                                    domEl = domEl || findDOMFromVNode(vNode, true);
                                    addDisappearAnimationHook(animations, ref, domEl, flags, vNode.props)
                                }
                            }
                            unmount(children, _childAnimations)
                        } else if (1024 & flags) {
                            remove(children, vNode.ref, animations)
                        } else if (8192 & flags) {
                            if (12 & vNode.childFlags) {
                                unmountAllChildren(children, animations)
                            }
                        }
                    }
                }

                function unmountAllChildren(children, animations) {
                    for (var i = 0, len = children.length; i < len; ++i) {
                        unmount(children[i], animations)
                    }
                }

                function clearDOM(parentDOM, children, animations) {
                    if (animations.componentWillDisappear.length > 0) {
                        callAllAnimationHooks(animations.componentWillDisappear, function(children, parentDOM) {
                            return function() {
                                if (parentDOM) {
                                    for (var i = 0; i < children.length; i++) {
                                        var vNode = children[i];
                                        clearVNodeDOM(vNode, parentDOM, false)
                                    }
                                }
                            }
                        }(children, parentDOM))
                    } else {
                        parentDOM.textContent = ""
                    }
                }

                function removeAllChildren(dom, vNode, children, animations) {
                    unmountAllChildren(children, animations);
                    if (8192 & vNode.flags) {
                        removeVNodeDOM(vNode, dom, animations)
                    } else {
                        clearDOM(dom, children, animations)
                    }
                }

                function addDisappearAnimationHook(animations, instanceOrRef, dom, flags, props) {
                    animations.componentWillDisappear.push((function(callback) {
                        if (4 & flags) {
                            instanceOrRef.componentWillDisappear(dom, callback)
                        } else if (8 & flags) {
                            instanceOrRef.onComponentWillDisappear(dom, props, callback)
                        }
                    }))
                }

                function patchDangerInnerHTML(lastValue, nextValue, lastVNode, dom, animations) {
                    var lastHtml = lastValue && lastValue.__html || "";
                    var nextHtml = nextValue && nextValue.__html || "";
                    if (lastHtml !== nextHtml) {
                        if (!isNullOrUndef(nextHtml) && ! function(dom, innerHTML) {
                                var tempdom = document.createElement("i");
                                tempdom.innerHTML = innerHTML;
                                return tempdom.innerHTML === dom.innerHTML
                            }(dom, nextHtml)) {
                            if (!isNull(lastVNode)) {
                                if (12 & lastVNode.childFlags) {
                                    unmountAllChildren(lastVNode.children, animations)
                                } else if (2 === lastVNode.childFlags) {
                                    unmount(lastVNode.children, animations)
                                }
                                lastVNode.children = null;
                                lastVNode.childFlags = 1
                            }
                            dom.innerHTML = nextHtml
                        }
                    }
                }

                function patchProp(prop, lastValue, nextValue, dom, isSVG, hasControlledValue, lastVNode, animations) {
                    switch (prop) {
                        case "children":
                        case "childrenType":
                        case "className":
                        case "defaultValue":
                        case "key":
                        case "multiple":
                        case "ref":
                        case "selectedIndex":
                            break;
                        case "autoFocus":
                            dom.autofocus = !!nextValue;
                            break;
                        case "allowfullscreen":
                        case "autoplay":
                        case "capture":
                        case "checked":
                        case "controls":
                        case "default":
                        case "disabled":
                        case "hidden":
                        case "indeterminate":
                        case "loop":
                        case "muted":
                        case "novalidate":
                        case "open":
                        case "readOnly":
                        case "required":
                        case "reversed":
                        case "scoped":
                        case "seamless":
                        case "selected":
                            dom[prop] = !!nextValue;
                            break;
                        case "defaultChecked":
                        case "value":
                        case "volume":
                            if (hasControlledValue && "value" === prop) {
                                break
                            }
                            var value = isNullOrUndef(nextValue) ? "" : nextValue;
                            if (dom[prop] !== value) {
                                dom[prop] = value
                            }
                            break;
                        case "style":
                            ! function(lastAttrValue, nextAttrValue, dom) {
                                if (isNullOrUndef(nextAttrValue)) {
                                    dom.removeAttribute("style");
                                    return
                                }
                                var domStyle = dom.style;
                                var style;
                                var value;
                                if (isString(nextAttrValue)) {
                                    domStyle.cssText = nextAttrValue;
                                    return
                                }
                                if (!isNullOrUndef(lastAttrValue) && !isString(lastAttrValue)) {
                                    for (style in nextAttrValue) {
                                        value = nextAttrValue[style];
                                        if (value !== lastAttrValue[style]) {
                                            domStyle.setProperty(style, value)
                                        }
                                    }
                                    for (style in lastAttrValue) {
                                        if (isNullOrUndef(nextAttrValue[style])) {
                                            domStyle.removeProperty(style)
                                        }
                                    }
                                } else {
                                    for (style in nextAttrValue) {
                                        value = nextAttrValue[style];
                                        domStyle.setProperty(style, value)
                                    }
                                }
                            }(lastValue, nextValue, dom);
                            break;
                        case "dangerouslySetInnerHTML":
                            patchDangerInnerHTML(lastValue, nextValue, lastVNode, dom, animations);
                            break;
                        default:
                            if (syntheticEvents[prop]) {
                                ! function(name, lastEvent, nextEvent, dom) {
                                    if (isFunction(nextEvent)) {
                                        updateOrAddSyntheticEvent(name, dom)[name] = nextEvent
                                    } else if (isLinkEventObject(nextEvent)) {
                                        if (isLastValueSameLinkEvent(lastEvent, nextEvent)) {
                                            return
                                        }
                                        updateOrAddSyntheticEvent(name, dom)[name] = nextEvent
                                    } else {
                                        unmountSyntheticEvent(name, dom)
                                    }
                                }(prop, lastValue, nextValue, dom)
                            } else if (111 === prop.charCodeAt(0) && 110 === prop.charCodeAt(1)) {
                                ! function(name, lastValue, nextValue, dom) {
                                    if (isLinkEventObject(nextValue)) {
                                        if (isLastValueSameLinkEvent(lastValue, nextValue)) {
                                            return
                                        }
                                        nextValue = function(nextValue) {
                                            var ev = nextValue.event;
                                            return function(e) {
                                                ev(nextValue.data, e)
                                            }
                                        }(nextValue)
                                    }
                                    attachEvent(dom, normalizeEventName(name), nextValue)
                                }(prop, lastValue, nextValue, dom)
                            } else if (isNullOrUndef(nextValue)) {
                                dom.removeAttribute(prop)
                            } else if (isSVG && namespaces[prop]) {
                                dom.setAttributeNS(namespaces[prop], prop, nextValue)
                            } else {
                                dom.setAttribute(prop, nextValue)
                            }
                    }
                }

                function mountProps(vNode, flags, props, dom, isSVG, animations) {
                    var hasControlledValue = false;
                    var isFormElement = (448 & flags) > 0;
                    if (isFormElement) {
                        hasControlledValue = isControlledFormElement(props);
                        if (hasControlledValue) {
                            addFormElementEventHandlers(flags, dom, props)
                        }
                    }
                    for (var prop in props) {
                        patchProp(prop, null, props[prop], dom, isSVG, hasControlledValue, null, animations)
                    }
                    if (isFormElement) {
                        processElement(flags, vNode, dom, props, true, hasControlledValue)
                    }
                }

                function renderNewInput(instance, props, context) {
                    var nextInput = normalizeRoot(instance.render(props, instance.state, context));
                    var childContext = context;
                    if (isFunction(instance.getChildContext)) {
                        childContext = combineFrom(context, instance.getChildContext())
                    }
                    instance.$CX = childContext;
                    return nextInput
                }

                function createClassComponentInstance(vNode, Component, props, context, isSVG, lifecycle) {
                    var instance = new Component(props, context);
                    var usesNewAPI = instance.$N = Boolean(Component.getDerivedStateFromProps || instance.getSnapshotBeforeUpdate);
                    instance.$SVG = isSVG;
                    instance.$L = lifecycle;
                    vNode.children = instance;
                    instance.$BS = false;
                    instance.context = context;
                    if (instance.props === EMPTY_OBJ) {
                        instance.props = props
                    }
                    if (!usesNewAPI) {
                        if (isFunction(instance.componentWillMount)) {
                            instance.$BR = true;
                            instance.componentWillMount();
                            var pending = instance.$PS;
                            if (!isNull(pending)) {
                                var state = instance.state;
                                if (isNull(state)) {
                                    instance.state = pending
                                } else {
                                    for (var key in pending) {
                                        state[key] = pending[key]
                                    }
                                }
                                instance.$PS = null
                            }
                            instance.$BR = false
                        }
                    } else {
                        instance.state = createDerivedState(instance, props, instance.state)
                    }
                    instance.$LI = renderNewInput(instance, props, context);
                    return instance
                }

                function renderFunctionalComponent(vNode, context) {
                    var props = vNode.props || EMPTY_OBJ;
                    return 32768 & vNode.flags ? vNode.type.render(props, vNode.ref, context) : vNode.type(props, context)
                }

                function mount(vNode, parentDOM, context, isSVG, nextNode, lifecycle, animations) {
                    var flags = vNode.flags |= 16384;
                    if (481 & flags) {
                        mountElement(vNode, parentDOM, context, isSVG, nextNode, lifecycle, animations)
                    } else if (4 & flags) {
                        ! function(vNode, parentDOM, context, isSVG, nextNode, lifecycle, animations) {
                            var instance = createClassComponentInstance(vNode, vNode.type, vNode.props || EMPTY_OBJ, context, isSVG, lifecycle);
                            var childAnimations = animations;
                            if (isFunction(instance.componentDidAppear)) {
                                childAnimations = new AnimationQueues
                            }
                            mount(instance.$LI, parentDOM, instance.$CX, isSVG, nextNode, lifecycle, childAnimations);
                            mountClassComponentCallbacks(vNode.ref, instance, lifecycle, animations)
                        }(vNode, parentDOM, context, isSVG, nextNode, lifecycle, animations)
                    } else if (8 & flags) {
                        ! function(vNode, parentDOM, context, isSVG, nextNode, lifecycle, animations) {
                            var ref = vNode.ref;
                            var childAnimations = animations;
                            if (!isNullOrUndef(ref) && isFunction(ref.onComponentDidAppear)) {
                                childAnimations = new AnimationQueues
                            }
                            mount(vNode.children = normalizeRoot(renderFunctionalComponent(vNode, context)), parentDOM, context, isSVG, nextNode, lifecycle, childAnimations);
                            mountFunctionalComponentCallbacks(vNode, lifecycle, animations)
                        }(vNode, parentDOM, context, isSVG, nextNode, lifecycle, animations)
                    } else if (16 & flags) {
                        mountText(vNode, parentDOM, nextNode)
                    } else if (8192 & flags) {
                        ! function(vNode, context, parentDOM, isSVG, nextNode, lifecycle, animations) {
                            var children = vNode.children;
                            var childFlags = vNode.childFlags;
                            if (12 & childFlags && 0 === children.length) {
                                childFlags = vNode.childFlags = 2;
                                children = vNode.children = createVoidVNode()
                            }
                            if (2 === childFlags) {
                                mount(children, parentDOM, context, isSVG, nextNode, lifecycle, animations)
                            } else {
                                mountArrayChildren(children, parentDOM, context, isSVG, nextNode, lifecycle, animations)
                            }
                        }(vNode, context, parentDOM, isSVG, nextNode, lifecycle, animations)
                    } else if (1024 & flags) {
                        ! function(vNode, context, parentDOM, nextNode, lifecycle, animations) {
                            mount(vNode.children, vNode.ref, context, false, null, lifecycle, animations);
                            var placeHolderVNode = createVoidVNode();
                            mountText(placeHolderVNode, parentDOM, nextNode);
                            vNode.dom = placeHolderVNode.dom
                        }(vNode, context, parentDOM, nextNode, lifecycle, animations)
                    }
                }

                function mountText(vNode, parentDOM, nextNode) {
                    var dom = vNode.dom = document.createTextNode(vNode.children);
                    if (!isNull(parentDOM)) {
                        insertOrAppend(parentDOM, dom, nextNode)
                    }
                }

                function mountElement(vNode, parentDOM, context, isSVG, nextNode, lifecycle, animations) {
                    var flags = vNode.flags;
                    var props = vNode.props;
                    var className = vNode.className;
                    var childFlags = vNode.childFlags;
                    var dom = vNode.dom = function(tag, isSVG) {
                        if (isSVG) {
                            return document.createElementNS("http://www.w3.org/2000/svg", tag)
                        }
                        return document.createElement(tag)
                    }(vNode.type, isSVG = isSVG || (32 & flags) > 0);
                    var children = vNode.children;
                    if (!isNullOrUndef(className) && "" !== className) {
                        if (isSVG) {
                            dom.setAttribute("class", className)
                        } else {
                            dom.className = className
                        }
                    }
                    if (16 === childFlags) {
                        setTextContent(dom, children)
                    } else if (1 !== childFlags) {
                        var childrenIsSVG = isSVG && "foreignObject" !== vNode.type;
                        if (2 === childFlags) {
                            if (16384 & children.flags) {
                                vNode.children = children = directClone(children)
                            }
                            mount(children, dom, context, childrenIsSVG, null, lifecycle, animations)
                        } else if (8 === childFlags || 4 === childFlags) {
                            mountArrayChildren(children, dom, context, childrenIsSVG, null, lifecycle, animations)
                        }
                    }
                    if (!isNull(parentDOM)) {
                        insertOrAppend(parentDOM, dom, nextNode)
                    }
                    if (!isNull(props)) {
                        mountProps(vNode, flags, props, dom, isSVG, animations)
                    }
                    mountRef(vNode.ref, dom, lifecycle)
                }

                function mountArrayChildren(children, dom, context, isSVG, nextNode, lifecycle, animations) {
                    for (var i = 0; i < children.length; ++i) {
                        var child = children[i];
                        if (16384 & child.flags) {
                            children[i] = child = directClone(child)
                        }
                        mount(child, dom, context, isSVG, nextNode, lifecycle, animations)
                    }
                }

                function addAppearAnimationHook(animations, instanceOrRef, dom, flags, props) {
                    animations.componentDidAppear.push((function() {
                        if (4 & flags) {
                            instanceOrRef.componentDidAppear(dom)
                        } else if (8 & flags) {
                            instanceOrRef.onComponentDidAppear(dom, props)
                        }
                    }))
                }

                function mountClassComponentCallbacks(ref, instance, lifecycle, animations) {
                    mountRef(ref, instance, lifecycle);
                    if (isFunction(instance.componentDidMount)) {
                        lifecycle.push(function(instance) {
                            return function() {
                                instance.componentDidMount()
                            }
                        }(instance))
                    }
                    if (isFunction(instance.componentDidAppear)) {
                        addAppearAnimationHook(animations, instance, instance.$LI.dom, 4, void 0)
                    }
                }

                function mountFunctionalComponentCallbacks(vNode, lifecycle, animations) {
                    var ref = vNode.ref;
                    if (!isNullOrUndef(ref)) {
                        safeCall1(ref.onComponentWillMount, vNode.props || EMPTY_OBJ);
                        if (isFunction(ref.onComponentDidMount)) {
                            lifecycle.push(function(ref, vNode) {
                                return function() {
                                    ref.onComponentDidMount(findDOMFromVNode(vNode, true), vNode.props || EMPTY_OBJ)
                                }
                            }(ref, vNode))
                        }
                        if (isFunction(ref.onComponentDidAppear)) {
                            addAppearAnimationHook(animations, ref, findDOMFromVNode(vNode, true), 8, vNode.props)
                        }
                    }
                }

                function patch(lastVNode, nextVNode, parentDOM, context, isSVG, nextNode, lifecycle, animations) {
                    var nextFlags = nextVNode.flags |= 16384;
                    if (lastVNode.flags !== nextFlags || lastVNode.type !== nextVNode.type || lastVNode.key !== nextVNode.key || 2048 & nextFlags) {
                        if (16384 & lastVNode.flags) {
                            ! function(lastVNode, nextVNode, parentDOM, context, isSVG, lifecycle, animations) {
                                unmount(lastVNode, animations);
                                if (0 !== (nextVNode.flags & lastVNode.flags & 1521)) {
                                    mount(nextVNode, null, context, isSVG, null, lifecycle, animations);
                                    ! function(parentDOM, newDom, lastDom) {
                                        parentDOM.replaceChild(newDom, lastDom)
                                    }(parentDOM, nextVNode.dom, lastVNode.dom)
                                } else {
                                    mount(nextVNode, parentDOM, context, isSVG, findDOMFromVNode(lastVNode, true), lifecycle, animations);
                                    removeVNodeDOM(lastVNode, parentDOM, animations)
                                }
                            }(lastVNode, nextVNode, parentDOM, context, isSVG, lifecycle, animations)
                        } else {
                            mount(nextVNode, parentDOM, context, isSVG, nextNode, lifecycle, animations)
                        }
                    } else if (481 & nextFlags) {
                        ! function(lastVNode, nextVNode, context, isSVG, nextFlags, lifecycle, animations) {
                            var dom = nextVNode.dom = lastVNode.dom;
                            var lastProps = lastVNode.props;
                            var nextProps = nextVNode.props;
                            var isFormElement = false;
                            var hasControlledValue = false;
                            var nextPropsOrEmpty;
                            isSVG = isSVG || (32 & nextFlags) > 0;
                            if (lastProps !== nextProps) {
                                var lastPropsOrEmpty = lastProps || EMPTY_OBJ;
                                nextPropsOrEmpty = nextProps || EMPTY_OBJ;
                                if (nextPropsOrEmpty !== EMPTY_OBJ) {
                                    isFormElement = (448 & nextFlags) > 0;
                                    if (isFormElement) {
                                        hasControlledValue = isControlledFormElement(nextPropsOrEmpty)
                                    }
                                    for (var prop in nextPropsOrEmpty) {
                                        var lastValue = lastPropsOrEmpty[prop];
                                        var nextValue = nextPropsOrEmpty[prop];
                                        if (lastValue !== nextValue) {
                                            patchProp(prop, lastValue, nextValue, dom, isSVG, hasControlledValue, lastVNode, animations)
                                        }
                                    }
                                }
                                if (lastPropsOrEmpty !== EMPTY_OBJ) {
                                    for (var _prop in lastPropsOrEmpty) {
                                        if (isNullOrUndef(nextPropsOrEmpty[_prop]) && !isNullOrUndef(lastPropsOrEmpty[_prop])) {
                                            patchProp(_prop, lastPropsOrEmpty[_prop], null, dom, isSVG, hasControlledValue, lastVNode, animations)
                                        }
                                    }
                                }
                            }
                            var nextChildren = nextVNode.children;
                            var nextClassName = nextVNode.className;
                            if (lastVNode.className !== nextClassName) {
                                if (isNullOrUndef(nextClassName)) {
                                    dom.removeAttribute("class")
                                } else if (isSVG) {
                                    dom.setAttribute("class", nextClassName)
                                } else {
                                    dom.className = nextClassName
                                }
                            }
                            if (4096 & nextFlags) {
                                ! function(dom, nextChildren) {
                                    if (dom.textContent !== nextChildren) {
                                        dom.textContent = nextChildren
                                    }
                                }(dom, nextChildren)
                            } else {
                                patchChildren(lastVNode.childFlags, nextVNode.childFlags, lastVNode.children, nextChildren, dom, context, isSVG && "foreignObject" !== nextVNode.type, null, lastVNode, lifecycle, animations)
                            }
                            if (isFormElement) {
                                processElement(nextFlags, nextVNode, dom, nextPropsOrEmpty, false, hasControlledValue)
                            }
                            var nextRef = nextVNode.ref;
                            var lastRef = lastVNode.ref;
                            if (lastRef !== nextRef) {
                                unmountRef(lastRef);
                                mountRef(nextRef, dom, lifecycle)
                            }
                        }(lastVNode, nextVNode, context, isSVG, nextFlags, lifecycle, animations)
                    } else if (4 & nextFlags) {
                        ! function(lastVNode, nextVNode, parentDOM, context, isSVG, nextNode, lifecycle, animations) {
                            var instance = nextVNode.children = lastVNode.children;
                            if (isNull(instance)) {
                                return
                            }
                            instance.$L = lifecycle;
                            var nextProps = nextVNode.props || EMPTY_OBJ;
                            var nextRef = nextVNode.ref;
                            var lastRef = lastVNode.ref;
                            var nextState = instance.state;
                            if (!instance.$N) {
                                if (isFunction(instance.componentWillReceiveProps)) {
                                    instance.$BR = true;
                                    instance.componentWillReceiveProps(nextProps, context);
                                    if (instance.$UN) {
                                        return
                                    }
                                    instance.$BR = false
                                }
                                if (!isNull(instance.$PS)) {
                                    nextState = combineFrom(nextState, instance.$PS);
                                    instance.$PS = null
                                }
                            }
                            updateClassComponent(instance, nextState, nextProps, parentDOM, context, isSVG, false, nextNode, lifecycle, animations);
                            if (lastRef !== nextRef) {
                                unmountRef(lastRef);
                                mountRef(nextRef, instance, lifecycle)
                            }
                        }(lastVNode, nextVNode, parentDOM, context, isSVG, nextNode, lifecycle, animations)
                    } else if (8 & nextFlags) {
                        ! function(lastVNode, nextVNode, parentDOM, context, isSVG, nextNode, lifecycle, animations) {
                            var shouldUpdate = true;
                            var nextProps = nextVNode.props || EMPTY_OBJ;
                            var nextRef = nextVNode.ref;
                            var lastProps = lastVNode.props;
                            var nextHooksDefined = !isNullOrUndef(nextRef);
                            var lastInput = lastVNode.children;
                            if (nextHooksDefined && isFunction(nextRef.onComponentShouldUpdate)) {
                                shouldUpdate = nextRef.onComponentShouldUpdate(lastProps, nextProps)
                            }
                            if (false !== shouldUpdate) {
                                if (nextHooksDefined && isFunction(nextRef.onComponentWillUpdate)) {
                                    nextRef.onComponentWillUpdate(lastProps, nextProps)
                                }
                                var nextInput = normalizeRoot(renderFunctionalComponent(nextVNode, context));
                                patch(lastInput, nextInput, parentDOM, context, isSVG, nextNode, lifecycle, animations);
                                nextVNode.children = nextInput;
                                if (nextHooksDefined && isFunction(nextRef.onComponentDidUpdate)) {
                                    nextRef.onComponentDidUpdate(lastProps, nextProps)
                                }
                            } else {
                                nextVNode.children = lastInput
                            }
                        }(lastVNode, nextVNode, parentDOM, context, isSVG, nextNode, lifecycle, animations)
                    } else if (16 & nextFlags) {
                        ! function(lastVNode, nextVNode) {
                            var nextText = nextVNode.children;
                            var dom = nextVNode.dom = lastVNode.dom;
                            if (nextText !== lastVNode.children) {
                                dom.nodeValue = nextText
                            }
                        }(lastVNode, nextVNode)
                    } else if (8192 & nextFlags) {
                        ! function(lastVNode, nextVNode, parentDOM, context, isSVG, lifecycle, animations) {
                            var lastChildren = lastVNode.children;
                            var nextChildren = nextVNode.children;
                            var lastChildFlags = lastVNode.childFlags;
                            var nextChildFlags = nextVNode.childFlags;
                            var nextNode = null;
                            if (12 & nextChildFlags && 0 === nextChildren.length) {
                                nextChildFlags = nextVNode.childFlags = 2;
                                nextChildren = nextVNode.children = createVoidVNode()
                            }
                            var nextIsSingle = 0 !== (2 & nextChildFlags);
                            if (12 & lastChildFlags) {
                                var lastLen = lastChildren.length;
                                if (8 & lastChildFlags && 8 & nextChildFlags || nextIsSingle || !nextIsSingle && nextChildren.length > lastLen) {
                                    nextNode = findDOMFromVNode(lastChildren[lastLen - 1], false).nextSibling
                                }
                            }
                            patchChildren(lastChildFlags, nextChildFlags, lastChildren, nextChildren, parentDOM, context, isSVG, nextNode, lastVNode, lifecycle, animations)
                        }(lastVNode, nextVNode, parentDOM, context, isSVG, lifecycle, animations)
                    } else {
                        ! function(lastVNode, nextVNode, context, lifecycle, animations) {
                            var lastContainer = lastVNode.ref;
                            var nextContainer = nextVNode.ref;
                            var nextChildren = nextVNode.children;
                            patchChildren(lastVNode.childFlags, nextVNode.childFlags, lastVNode.children, nextChildren, lastContainer, context, false, null, lastVNode, lifecycle, animations);
                            nextVNode.dom = lastVNode.dom;
                            if (lastContainer !== nextContainer && !isInvalid(nextChildren)) {
                                var node = nextChildren.dom;
                                removeChild(lastContainer, node);
                                appendChild(nextContainer, node)
                            }
                        }(lastVNode, nextVNode, context, lifecycle, animations)
                    }
                }

                function patchChildren(lastChildFlags, nextChildFlags, lastChildren, nextChildren, parentDOM, context, isSVG, nextNode, parentVNode, lifecycle, animations) {
                    switch (lastChildFlags) {
                        case 2:
                            switch (nextChildFlags) {
                                case 2:
                                    patch(lastChildren, nextChildren, parentDOM, context, isSVG, nextNode, lifecycle, animations);
                                    break;
                                case 1:
                                    remove(lastChildren, parentDOM, animations);
                                    break;
                                case 16:
                                    unmount(lastChildren, animations);
                                    setTextContent(parentDOM, nextChildren);
                                    break;
                                default:
                                    ! function(lastChildren, nextChildren, parentDOM, context, isSVG, lifecycle, animations) {
                                        unmount(lastChildren, animations);
                                        mountArrayChildren(nextChildren, parentDOM, context, isSVG, findDOMFromVNode(lastChildren, true), lifecycle, animations);
                                        removeVNodeDOM(lastChildren, parentDOM, animations)
                                    }(lastChildren, nextChildren, parentDOM, context, isSVG, lifecycle, animations)
                            }
                            break;
                        case 1:
                            switch (nextChildFlags) {
                                case 2:
                                    mount(nextChildren, parentDOM, context, isSVG, nextNode, lifecycle, animations);
                                    break;
                                case 1:
                                    break;
                                case 16:
                                    setTextContent(parentDOM, nextChildren);
                                    break;
                                default:
                                    mountArrayChildren(nextChildren, parentDOM, context, isSVG, nextNode, lifecycle, animations)
                            }
                            break;
                        case 16:
                            switch (nextChildFlags) {
                                case 16:
                                    ! function(lastChildren, nextChildren, parentDOM) {
                                        if (lastChildren !== nextChildren) {
                                            if ("" !== lastChildren) {
                                                parentDOM.firstChild.nodeValue = nextChildren
                                            } else {
                                                setTextContent(parentDOM, nextChildren)
                                            }
                                        }
                                    }(lastChildren, nextChildren, parentDOM);
                                    break;
                                case 2:
                                    clearDOM(parentDOM, lastChildren, animations);
                                    mount(nextChildren, parentDOM, context, isSVG, nextNode, lifecycle, animations);
                                    break;
                                case 1:
                                    clearDOM(parentDOM, lastChildren, animations);
                                    break;
                                default:
                                    clearDOM(parentDOM, lastChildren, animations);
                                    mountArrayChildren(nextChildren, parentDOM, context, isSVG, nextNode, lifecycle, animations)
                            }
                            break;
                        default:
                            switch (nextChildFlags) {
                                case 16:
                                    unmountAllChildren(lastChildren, animations);
                                    setTextContent(parentDOM, nextChildren);
                                    break;
                                case 2:
                                    removeAllChildren(parentDOM, parentVNode, lastChildren, animations);
                                    mount(nextChildren, parentDOM, context, isSVG, nextNode, lifecycle, animations);
                                    break;
                                case 1:
                                    removeAllChildren(parentDOM, parentVNode, lastChildren, animations);
                                    break;
                                default:
                                    var lastLength = 0 | lastChildren.length;
                                    var nextLength = 0 | nextChildren.length;
                                    if (0 === lastLength) {
                                        if (nextLength > 0) {
                                            mountArrayChildren(nextChildren, parentDOM, context, isSVG, nextNode, lifecycle, animations)
                                        }
                                    } else if (0 === nextLength) {
                                        removeAllChildren(parentDOM, parentVNode, lastChildren, animations)
                                    } else if (8 === nextChildFlags && 8 === lastChildFlags) {
                                        ! function(a, b, dom, context, isSVG, aLength, bLength, outerEdge, parentVNode, lifecycle, animations) {
                                            var aEnd = aLength - 1;
                                            var bEnd = bLength - 1;
                                            var j = 0;
                                            var aNode = a[j];
                                            var bNode = b[j];
                                            var nextPos;
                                            var nextNode;
                                            outer: {
                                                while (aNode.key === bNode.key) {
                                                    if (16384 & bNode.flags) {
                                                        b[j] = bNode = directClone(bNode)
                                                    }
                                                    patch(aNode, bNode, dom, context, isSVG, outerEdge, lifecycle, animations);
                                                    a[j] = bNode;
                                                    ++j;
                                                    if (j > aEnd || j > bEnd) {
                                                        break outer
                                                    }
                                                    aNode = a[j];
                                                    bNode = b[j]
                                                }
                                                aNode = a[aEnd];bNode = b[bEnd];
                                                while (aNode.key === bNode.key) {
                                                    if (16384 & bNode.flags) {
                                                        b[bEnd] = bNode = directClone(bNode)
                                                    }
                                                    patch(aNode, bNode, dom, context, isSVG, outerEdge, lifecycle, animations);
                                                    a[aEnd] = bNode;
                                                    aEnd--;
                                                    bEnd--;
                                                    if (j > aEnd || j > bEnd) {
                                                        break outer
                                                    }
                                                    aNode = a[aEnd];
                                                    bNode = b[bEnd]
                                                }
                                            }
                                            if (j > aEnd) {
                                                if (j <= bEnd) {
                                                    nextPos = bEnd + 1;
                                                    nextNode = nextPos < bLength ? findDOMFromVNode(b[nextPos], true) : outerEdge;
                                                    while (j <= bEnd) {
                                                        bNode = b[j];
                                                        if (16384 & bNode.flags) {
                                                            b[j] = bNode = directClone(bNode)
                                                        }++j;
                                                        mount(bNode, dom, context, isSVG, nextNode, lifecycle, animations)
                                                    }
                                                }
                                            } else if (j > bEnd) {
                                                while (j <= aEnd) {
                                                    remove(a[j++], dom, animations)
                                                }
                                            } else {
                                                ! function(a, b, context, aLength, bLength, aEnd, bEnd, j, dom, isSVG, outerEdge, parentVNode, lifecycle, animations) {
                                                    var aNode;
                                                    var bNode;
                                                    var nextPos = 0;
                                                    var i = 0;
                                                    var aStart = j;
                                                    var bStart = j;
                                                    var aLeft = aEnd - j + 1;
                                                    var bLeft = bEnd - j + 1;
                                                    var sources = new Int32Array(bLeft + 1);
                                                    var canRemoveWholeContent = aLeft === aLength;
                                                    var moved = false;
                                                    var pos = 0;
                                                    var patched = 0;
                                                    if (bLength < 4 || (aLeft | bLeft) < 32) {
                                                        for (i = aStart; i <= aEnd; ++i) {
                                                            aNode = a[i];
                                                            if (patched < bLeft) {
                                                                for (j = bStart; j <= bEnd; j++) {
                                                                    bNode = b[j];
                                                                    if (aNode.key === bNode.key) {
                                                                        sources[j - bStart] = i + 1;
                                                                        if (canRemoveWholeContent) {
                                                                            canRemoveWholeContent = false;
                                                                            while (aStart < i) {
                                                                                remove(a[aStart++], dom, animations)
                                                                            }
                                                                        }
                                                                        if (pos > j) {
                                                                            moved = true
                                                                        } else {
                                                                            pos = j
                                                                        }
                                                                        if (16384 & bNode.flags) {
                                                                            b[j] = bNode = directClone(bNode)
                                                                        }
                                                                        patch(aNode, bNode, dom, context, isSVG, outerEdge, lifecycle, animations);
                                                                        ++patched;
                                                                        break
                                                                    }
                                                                }
                                                                if (!canRemoveWholeContent && j > bEnd) {
                                                                    remove(aNode, dom, animations)
                                                                }
                                                            } else if (!canRemoveWholeContent) {
                                                                remove(aNode, dom, animations)
                                                            }
                                                        }
                                                    } else {
                                                        var keyIndex = {};
                                                        for (i = bStart; i <= bEnd; ++i) {
                                                            keyIndex[b[i].key] = i
                                                        }
                                                        for (i = aStart; i <= aEnd; ++i) {
                                                            aNode = a[i];
                                                            if (patched < bLeft) {
                                                                j = keyIndex[aNode.key];
                                                                if (void 0 !== j) {
                                                                    if (canRemoveWholeContent) {
                                                                        canRemoveWholeContent = false;
                                                                        while (i > aStart) {
                                                                            remove(a[aStart++], dom, animations)
                                                                        }
                                                                    }
                                                                    sources[j - bStart] = i + 1;
                                                                    if (pos > j) {
                                                                        moved = true
                                                                    } else {
                                                                        pos = j
                                                                    }
                                                                    bNode = b[j];
                                                                    if (16384 & bNode.flags) {
                                                                        b[j] = bNode = directClone(bNode)
                                                                    }
                                                                    patch(aNode, bNode, dom, context, isSVG, outerEdge, lifecycle, animations);
                                                                    ++patched
                                                                } else if (!canRemoveWholeContent) {
                                                                    remove(aNode, dom, animations)
                                                                }
                                                            } else if (!canRemoveWholeContent) {
                                                                remove(aNode, dom, animations)
                                                            }
                                                        }
                                                    }
                                                    if (canRemoveWholeContent) {
                                                        removeAllChildren(dom, parentVNode, a, animations);
                                                        mountArrayChildren(b, dom, context, isSVG, outerEdge, lifecycle, animations)
                                                    } else if (moved) {
                                                        var seq = function(arr) {
                                                            var arrI = 0;
                                                            var i = 0;
                                                            var j = 0;
                                                            var k = 0;
                                                            var u = 0;
                                                            var v = 0;
                                                            var c = 0;
                                                            var len = arr.length;
                                                            if (len > maxLen) {
                                                                maxLen = len;
                                                                result = new Int32Array(len);
                                                                p = new Int32Array(len)
                                                            }
                                                            for (; i < len; ++i) {
                                                                arrI = arr[i];
                                                                if (0 !== arrI) {
                                                                    j = result[k];
                                                                    if (arr[j] < arrI) {
                                                                        p[i] = j;
                                                                        result[++k] = i;
                                                                        continue
                                                                    }
                                                                    u = 0;
                                                                    v = k;
                                                                    while (u < v) {
                                                                        c = u + v >> 1;
                                                                        if (arr[result[c]] < arrI) {
                                                                            u = c + 1
                                                                        } else {
                                                                            v = c
                                                                        }
                                                                    }
                                                                    if (arrI < arr[result[u]]) {
                                                                        if (u > 0) {
                                                                            p[i] = result[u - 1]
                                                                        }
                                                                        result[u] = i
                                                                    }
                                                                }
                                                            }
                                                            u = k + 1;
                                                            var seq = new Int32Array(u);
                                                            v = result[u - 1];
                                                            while (u-- > 0) {
                                                                seq[u] = v;
                                                                v = p[v];
                                                                result[u] = 0
                                                            }
                                                            return seq
                                                        }(sources);
                                                        j = seq.length - 1;
                                                        for (i = bLeft - 1; i >= 0; i--) {
                                                            if (0 === sources[i]) {
                                                                pos = i + bStart;
                                                                bNode = b[pos];
                                                                if (16384 & bNode.flags) {
                                                                    b[pos] = bNode = directClone(bNode)
                                                                }
                                                                nextPos = pos + 1;
                                                                mount(bNode, dom, context, isSVG, nextPos < bLength ? findDOMFromVNode(b[nextPos], true) : outerEdge, lifecycle, animations)
                                                            } else if (j < 0 || i !== seq[j]) {
                                                                pos = i + bStart;
                                                                bNode = b[pos];
                                                                nextPos = pos + 1;
                                                                moveVNodeDOM(parentVNode, bNode, dom, nextPos < bLength ? findDOMFromVNode(b[nextPos], true) : outerEdge, animations)
                                                            } else {
                                                                j--
                                                            }
                                                        }
                                                        if (animations.componentWillMove.length > 0) {
                                                            ! function(animationQueue) {
                                                                for (var i = 0; i < animationQueue.length; i++) {
                                                                    animationQueue[i].fn()
                                                                }
                                                                for (var _i = 0; _i < animationQueue.length; _i++) {
                                                                    var tmp = animationQueue[_i];
                                                                    insertOrAppend(tmp.parent, tmp.dom, tmp.next)
                                                                }
                                                                animationQueue.splice(0, animationQueue.length)
                                                            }(animations.componentWillMove)
                                                        }
                                                    } else if (patched !== bLeft) {
                                                        for (i = bLeft - 1; i >= 0; i--) {
                                                            if (0 === sources[i]) {
                                                                pos = i + bStart;
                                                                bNode = b[pos];
                                                                if (16384 & bNode.flags) {
                                                                    b[pos] = bNode = directClone(bNode)
                                                                }
                                                                nextPos = pos + 1;
                                                                mount(bNode, dom, context, isSVG, nextPos < bLength ? findDOMFromVNode(b[nextPos], true) : outerEdge, lifecycle, animations)
                                                            }
                                                        }
                                                    }
                                                }(a, b, context, aLength, bLength, aEnd, bEnd, j, dom, isSVG, outerEdge, parentVNode, lifecycle, animations)
                                            }
                                        }(lastChildren, nextChildren, parentDOM, context, isSVG, lastLength, nextLength, nextNode, parentVNode, lifecycle, animations)
                                    } else {
                                        ! function(lastChildren, nextChildren, dom, context, isSVG, lastChildrenLength, nextChildrenLength, nextNode, lifecycle, animations) {
                                            var commonLength = lastChildrenLength > nextChildrenLength ? nextChildrenLength : lastChildrenLength;
                                            var i = 0;
                                            var nextChild;
                                            var lastChild;
                                            for (; i < commonLength; ++i) {
                                                nextChild = nextChildren[i];
                                                lastChild = lastChildren[i];
                                                if (16384 & nextChild.flags) {
                                                    nextChild = nextChildren[i] = directClone(nextChild)
                                                }
                                                patch(lastChild, nextChild, dom, context, isSVG, nextNode, lifecycle, animations);
                                                lastChildren[i] = nextChild
                                            }
                                            if (lastChildrenLength < nextChildrenLength) {
                                                for (i = commonLength; i < nextChildrenLength; ++i) {
                                                    nextChild = nextChildren[i];
                                                    if (16384 & nextChild.flags) {
                                                        nextChild = nextChildren[i] = directClone(nextChild)
                                                    }
                                                    mount(nextChild, dom, context, isSVG, nextNode, lifecycle, animations)
                                                }
                                            } else if (lastChildrenLength > nextChildrenLength) {
                                                for (i = commonLength; i < lastChildrenLength; ++i) {
                                                    remove(lastChildren[i], dom, animations)
                                                }
                                            }
                                        }(lastChildren, nextChildren, parentDOM, context, isSVG, lastLength, nextLength, nextNode, lifecycle, animations)
                                    }
                            }
                    }
                }

                function updateClassComponent(instance, nextState, nextProps, parentDOM, context, isSVG, force, nextNode, lifecycle, animations) {
                    var lastState = instance.state;
                    var lastProps = instance.props;
                    var usesNewAPI = Boolean(instance.$N);
                    var hasSCU = isFunction(instance.shouldComponentUpdate);
                    if (usesNewAPI) {
                        nextState = createDerivedState(instance, nextProps, nextState !== lastState ? combineFrom(lastState, nextState) : nextState)
                    }
                    if (force || !hasSCU || hasSCU && instance.shouldComponentUpdate(nextProps, nextState, context)) {
                        if (!usesNewAPI && isFunction(instance.componentWillUpdate)) {
                            instance.componentWillUpdate(nextProps, nextState, context)
                        }
                        instance.props = nextProps;
                        instance.state = nextState;
                        instance.context = context;
                        var snapshot = null;
                        var nextInput = renderNewInput(instance, nextProps, context);
                        if (usesNewAPI && isFunction(instance.getSnapshotBeforeUpdate)) {
                            snapshot = instance.getSnapshotBeforeUpdate(lastProps, lastState)
                        }
                        patch(instance.$LI, nextInput, parentDOM, instance.$CX, isSVG, nextNode, lifecycle, animations);
                        instance.$LI = nextInput;
                        if (isFunction(instance.componentDidUpdate)) {
                            ! function(instance, lastProps, lastState, snapshot, lifecycle) {
                                lifecycle.push((function() {
                                    instance.componentDidUpdate(lastProps, lastState, snapshot)
                                }))
                            }(instance, lastProps, lastState, snapshot, lifecycle)
                        }
                    } else {
                        instance.props = nextProps;
                        instance.state = nextState;
                        instance.context = context
                    }
                }
                var result;
                var p;
                var maxLen = 0;
                var hasDocumentAvailable = "undefined" !== typeof document;
                if (hasDocumentAvailable) {
                    if (window.Node) {
                        Node.prototype.$EV = null;
                        Node.prototype.$V = null
                    }
                }

                function __render(input, parentDOM, callback, context) {
                    var lifecycle = [];
                    var animations = new AnimationQueues;
                    var rootInput = parentDOM.$V;
                    renderCheck.v = true;
                    if (isNullOrUndef(rootInput)) {
                        if (!isNullOrUndef(input)) {
                            if (16384 & input.flags) {
                                input = directClone(input)
                            }
                            mount(input, parentDOM, context, false, null, lifecycle, animations);
                            parentDOM.$V = input;
                            rootInput = input
                        }
                    } else if (isNullOrUndef(input)) {
                        remove(rootInput, parentDOM, animations);
                        parentDOM.$V = null
                    } else {
                        if (16384 & input.flags) {
                            input = directClone(input)
                        }
                        patch(rootInput, input, parentDOM, context, false, null, lifecycle, animations);
                        rootInput = parentDOM.$V = input
                    }
                    callAll(lifecycle);
                    callAllAnimationHooks(animations.componentDidAppear);
                    renderCheck.v = false;
                    if (isFunction(callback)) {
                        callback()
                    }
                    if (isFunction(options.renderComplete)) {
                        options.renderComplete(rootInput, parentDOM)
                    }
                }

                function render(input, parentDOM, callback, context) {
                    if (void 0 === callback) {
                        callback = null
                    }
                    if (void 0 === context) {
                        context = EMPTY_OBJ
                    }
                    __render(input, parentDOM, callback, context)
                }

                function createRenderer(parentDOM) {
                    return function(lastInput, nextInput, callback, context) {
                        if (!parentDOM) {
                            parentDOM = lastInput
                        }
                        render(nextInput, parentDOM, callback, context)
                    }
                }
                var COMPONENTS_QUEUE = [];
                var nextTick = "undefined" !== typeof Promise ? Promise.resolve().then.bind(Promise.resolve()) : function(a) {
                    window.setTimeout(a, 0)
                };
                var microTaskPending = false;

                function queueStateChanges(component, newState, callback, force) {
                    var pending = component.$PS;
                    if (isFunction(newState)) {
                        newState = newState(pending ? combineFrom(component.state, pending) : component.state, component.props, component.context)
                    }
                    if (isNullOrUndef(pending)) {
                        component.$PS = newState
                    } else {
                        for (var stateKey in newState) {
                            pending[stateKey] = newState[stateKey]
                        }
                    }
                    if (!component.$BR) {
                        if (!renderCheck.v) {
                            if (0 === COMPONENTS_QUEUE.length) {
                                applyState(component, force);
                                if (isFunction(callback)) {
                                    callback.call(component)
                                }
                                return
                            }
                        }
                        if (-1 === COMPONENTS_QUEUE.indexOf(component)) {
                            COMPONENTS_QUEUE.push(component)
                        }
                        if (force) {
                            component.$F = true
                        }
                        if (!microTaskPending) {
                            microTaskPending = true;
                            nextTick(rerender)
                        }
                        if (isFunction(callback)) {
                            var QU = component.$QU;
                            if (!QU) {
                                QU = component.$QU = []
                            }
                            QU.push(callback)
                        }
                    } else if (isFunction(callback)) {
                        component.$L.push(callback.bind(component))
                    }
                }

                function callSetStateCallbacks(component) {
                    var queue = component.$QU;
                    for (var i = 0; i < queue.length; ++i) {
                        queue[i].call(component)
                    }
                    component.$QU = null
                }

                function rerender() {
                    var component;
                    microTaskPending = false;
                    while (component = COMPONENTS_QUEUE.shift()) {
                        if (!component.$UN) {
                            var force = component.$F;
                            component.$F = false;
                            applyState(component, force);
                            if (component.$QU) {
                                callSetStateCallbacks(component)
                            }
                        }
                    }
                }

                function applyState(component, force) {
                    if (force || !component.$BR) {
                        var pendingState = component.$PS;
                        component.$PS = null;
                        var lifecycle = [];
                        var animations = new AnimationQueues;
                        renderCheck.v = true;
                        updateClassComponent(component, combineFrom(component.state, pendingState), component.props, findDOMFromVNode(component.$LI, true).parentNode, component.context, component.$SVG, force, null, lifecycle, animations);
                        callAll(lifecycle);
                        callAllAnimationHooks(animations.componentDidAppear);
                        renderCheck.v = false
                    } else {
                        component.state = component.$PS;
                        component.$PS = null
                    }
                }
                var Component = function() {
                    function Component(props, context) {
                        this.state = null;
                        this.props = void 0;
                        this.context = void 0;
                        this.displayName = void 0;
                        this.$BR = false;
                        this.$BS = true;
                        this.$PS = null;
                        this.$LI = null;
                        this.$UN = false;
                        this.$CX = null;
                        this.$QU = null;
                        this.$N = false;
                        this.$SSR = void 0;
                        this.$L = null;
                        this.$SVG = false;
                        this.$F = false;
                        this.props = props || EMPTY_OBJ;
                        this.context = context || EMPTY_OBJ
                    }
                    var _proto = Component.prototype;
                    _proto.forceUpdate = function(callback) {
                        if (this.$UN) {
                            return
                        }
                        queueStateChanges(this, {}, callback, true)
                    };
                    _proto.setState = function(newState, callback) {
                        if (this.$UN) {
                            return
                        }
                        if (!this.$BS) {
                            queueStateChanges(this, newState, callback, false)
                        }
                    };
                    _proto.render = function(props, state, context) {
                        return null
                    };
                    return Component
                }();
                Component.defaultProps = null;
                var version = "8.2.3";
                if (false) {}
            },
        55351:
            /*!***************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/common/m_charts.js ***!
              \***************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.registerPattern = exports.registerGradient = exports.default = void 0;
                var _utils = __webpack_require__( /*! ../../viz/core/utils */ 28779);

                function _extends() {
                    return _extends = Object.assign ? Object.assign.bind() : function(n) {
                        for (var e = 1; e < arguments.length; e++) {
                            var t = arguments[e];
                            for (var r in t) {
                                ({}).hasOwnProperty.call(t, r) && (n[r] = t[r])
                            }
                        }
                        return n
                    }, _extends.apply(null, arguments)
                }
                const graphicObjects = {};
                exports.registerPattern = options => {
                    const id = (0, _utils.getNextDefsSvgId)();
                    graphicObjects[id] = _extends({
                        type: "pattern"
                    }, options);
                    return id
                };
                exports.registerGradient = (type, options) => {
                    const id = (0, _utils.getNextDefsSvgId)();
                    graphicObjects[id] = _extends({
                        type: type
                    }, options);
                    return id
                };
                exports.default = {
                    getGraphicObjects: () => graphicObjects
                }
            },
        22692:
            /*!***********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/license/byte_utils.js ***!
              \***********************************************************************************/
            function(__unused_webpack_module, exports) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.base64ToBytes = function(base64) {
                    return new Uint8Array(atob(base64).split("").map((s => s.charCodeAt(0))))
                };
                exports.bytesToHex = function(bytes) {
                    return [...bytes].map((b => b.toString(16).padStart(2, "0"))).join("")
                };
                exports.bytesToWords = function(bytes) {
                    const words = new Uint32Array(1 + (bytes.length - 1 >> 2));
                    for (let k = 0; k < bytes.length; k += 1) {
                        words[k >> 2] |= bytes[k] << 8 * (3 - k % 4)
                    }
                    return words
                };
                exports.concatBytes = function(a, b) {
                    const result = new Uint8Array(a.length + b.length);
                    result.set(a, 0);
                    result.set(b, a.length);
                    return result
                };
                exports.hexToBytes = function(string) {
                    var _string$match;
                    return new Uint8Array((null === (_string$match = string.match(/.{1,2}/g)) || void 0 === _string$match ? void 0 : _string$match.map((byte => parseInt(byte, 16)))) ?? [])
                };
                exports.leftRotate = function(x, n) {
                    return (x << n | x >>> 32 - n) >>> 0
                };
                exports.stringToBytes = function(string) {
                    const bytes = new Uint8Array(string.length);
                    for (let k = 0; k < string.length; k += 1) {
                        bytes[k] = 255 & string.charCodeAt(k)
                    }
                    return bytes
                };
                exports.wordsToBytes = function(words) {
                    const bytes = new Uint8Array(4 * words.length);
                    for (let k = 0; k < bytes.length; k += 1) {
                        bytes[k] = words[k >> 2] >>> 8 * (3 - k % 4)
                    }
                    return bytes
                };
                exports.wordsToHex = function(words) {
                    return [...words].map((w => w.toString(16).padStart(8, "0"))).join("")
                }
            },
        78157:
            /*!****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/license/key.js ***!
              \****************************************************************************/
            function(__unused_webpack_module, exports) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.PUBLIC_KEY = exports.INTERNAL_USAGE_ID = void 0;
                exports.PUBLIC_KEY = {
                    e: 65537,
                    n: new Uint8Array([200, 219, 153, 203, 140, 7, 228, 253, 193, 243, 62, 137, 139, 60, 68, 242, 48, 142, 113, 88, 185, 235, 253, 105, 80, 74, 32, 170, 96, 74, 111, 250, 7, 205, 154, 3, 146, 115, 153, 53, 45, 132, 123, 56, 61, 208, 184, 201, 63, 24, 109, 223, 0, 179, 169, 102, 139, 224, 73, 233, 45, 173, 138, 66, 98, 88, 69, 76, 177, 111, 113, 218, 192, 33, 101, 152, 25, 134, 34, 173, 32, 82, 230, 44, 247, 200, 253, 170, 192, 246, 30, 12, 96, 205, 100, 249, 181, 93, 0, 231])
                };
                exports.INTERNAL_USAGE_ID = "V2QpQmJVXWy6Nexkq9Xk9o"
            },
        93391:
            /*!*******************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/license/license_validation.js ***!
              \*******************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                exports.parseLicenseKey = parseLicenseKey;
                exports.peekValidationPerformed = function() {
                    return validationPerformed
                };
                exports.setLicenseCheckSkipCondition = function() {};
                exports.validateLicense = validateLicense;
                var _config = _interopRequireDefault(__webpack_require__( /*! ../../../core/config */ 66636));
                var _errors = _interopRequireDefault(__webpack_require__( /*! ../../../core/errors */ 87129));
                var _version = __webpack_require__( /*! ../../../core/version */ 1956);
                var _version2 = __webpack_require__( /*! ../../utils/version */ 20258);
                var _byte_utils = __webpack_require__( /*! ./byte_utils */ 22692);
                var _key = __webpack_require__( /*! ./key */ 78157);
                var _pkcs = __webpack_require__( /*! ./pkcs1 */ 1012);
                var _rsa_bigint = __webpack_require__( /*! ./rsa_bigint */ 42752);
                var _sha = __webpack_require__( /*! ./sha1 */ 94281);
                var _trial_panel = __webpack_require__( /*! ./trial_panel */ 99671);
                var _types = __webpack_require__( /*! ./types */ 13407);
                const _excluded = ["customerId", "maxVersionAllowed", "format", "internalUsageId"];

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }

                function _extends() {
                    return _extends = Object.assign ? Object.assign.bind() : function(n) {
                        for (var e = 1; e < arguments.length; e++) {
                            var t = arguments[e];
                            for (var r in t) {
                                ({}).hasOwnProperty.call(t, r) && (n[r] = t[r])
                            }
                        }
                        return n
                    }, _extends.apply(null, arguments)
                }
                const FORMAT = 1;
                const RTM_MIN_PATCH_VERSION = 3;
                const KEY_SPLITTER = ".";
                const BUY_NOW_LINK = "https://go.devexpress.com/Licensing_Installer_Watermark_DevExtremeJQuery.aspx";
                const LICENSING_DOC_LINK = "https://go.devexpress.com/Licensing_Documentation_DevExtremeJQuery.aspx";
                const GENERAL_ERROR = {
                    kind: _types.TokenKind.corrupted,
                    error: "general"
                };
                const VERIFICATION_ERROR = {
                    kind: _types.TokenKind.corrupted,
                    error: "verification"
                };
                const DECODING_ERROR = {
                    kind: _types.TokenKind.corrupted,
                    error: "decoding"
                };
                const DESERIALIZATION_ERROR = {
                    kind: _types.TokenKind.corrupted,
                    error: "deserialization"
                };
                const PAYLOAD_ERROR = {
                    kind: _types.TokenKind.corrupted,
                    error: "payload"
                };
                const VERSION_ERROR = {
                    kind: _types.TokenKind.corrupted,
                    error: "version"
                };
                let validationPerformed = false;

                function parseLicenseKey(encodedKey) {
                    if (void 0 === encodedKey) {
                        return GENERAL_ERROR
                    }
                    const parts = encodedKey.split(KEY_SPLITTER);
                    if (2 !== parts.length || 0 === parts[0].length || 0 === parts[1].length) {
                        return GENERAL_ERROR
                    }
                    if (! function(_ref) {
                            let {
                                text: text,
                                signature: encodedSignature
                            } = _ref;
                            return (0, _rsa_bigint.compareSignatures)({
                                key: _key.PUBLIC_KEY,
                                signature: (0, _byte_utils.base64ToBytes)(encodedSignature),
                                actual: (0, _pkcs.pad)((0, _sha.sha1)(text))
                            })
                        }({
                            text: parts[0],
                            signature: parts[1]
                        })) {
                        return VERIFICATION_ERROR
                    }
                    let decodedPayload = "";
                    try {
                        decodedPayload = atob(parts[0])
                    } catch {
                        return DECODING_ERROR
                    }
                    let payload = {};
                    try {
                        payload = JSON.parse(decodedPayload)
                    } catch {
                        return DESERIALIZATION_ERROR
                    }
                    const {
                        customerId: customerId,
                        maxVersionAllowed: maxVersionAllowed,
                        format: format,
                        internalUsageId: internalUsageId
                    } = payload, rest = function(r, e) {
                        if (null == r) {
                            return {}
                        }
                        var t = {};
                        for (var n in r) {
                            if ({}.hasOwnProperty.call(r, n)) {
                                if (e.includes(n)) {
                                    continue
                                }
                                t[n] = r[n]
                            }
                        }
                        return t
                    }(payload, _excluded);
                    if (void 0 !== internalUsageId) {
                        return {
                            kind: _types.TokenKind.internal,
                            internalUsageId: internalUsageId
                        }
                    }
                    if (void 0 === customerId || void 0 === maxVersionAllowed || void 0 === format) {
                        return PAYLOAD_ERROR
                    }
                    if (format !== FORMAT) {
                        return VERSION_ERROR
                    }
                    return {
                        kind: _types.TokenKind.verified,
                        payload: _extends({
                            customerId: customerId,
                            maxVersionAllowed: maxVersionAllowed
                        }, rest)
                    }
                }

                function isPreview(patch) {
                    return isNaN(patch) || patch < RTM_MIN_PATCH_VERSION
                }

                function validateLicense(licenseKey) {
                    let versionStr = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : _version.fullVersion;
                    if (validationPerformed) {
                        return
                    }
                    validationPerformed = true;
                    const version = (0, _version2.parseVersion)(versionStr);
                    const versionsCompatible = (0, _version2.assertedVersionsCompatible)(version);
                    const {
                        internal: internal,
                        error: error
                    } = function(_ref2) {
                        let {
                            licenseKey: licenseKey,
                            version: version
                        } = _ref2;
                        let preview = false;
                        try {
                            preview = isPreview(version.patch);
                            const {
                                major: major,
                                minor: minor
                            } = preview ? (0, _version2.getPreviousMajorVersion)(version) : version;
                            if (!licenseKey) {
                                return {
                                    preview: preview,
                                    error: "W0019"
                                }
                            }
                            const license = parseLicenseKey(licenseKey);
                            if (license.kind === _types.TokenKind.corrupted) {
                                return {
                                    preview: preview,
                                    error: "W0021"
                                }
                            }
                            if (license.kind === _types.TokenKind.internal) {
                                return {
                                    preview: preview,
                                    internal: true,
                                    error: license.internalUsageId === _key.INTERNAL_USAGE_ID ? void 0 : "W0020"
                                }
                            }
                            if (!(major && minor)) {
                                return {
                                    preview: preview,
                                    error: "W0021"
                                }
                            }
                            if (10 * major + minor > license.payload.maxVersionAllowed) {
                                return {
                                    preview: preview,
                                    error: "W0020"
                                }
                            }
                            return {
                                preview: preview,
                                error: void 0
                            }
                        } catch {
                            return {
                                preview: preview,
                                error: "W0021"
                            }
                        }
                    }({
                        licenseKey: licenseKey,
                        version: version
                    });
                    if (!versionsCompatible && internal) {
                        return
                    }
                    if (error && !internal) {
                        const buyNowLink = (0, _config.default)().buyNowLink ?? BUY_NOW_LINK;
                        const licensingDocLink = (0, _config.default)().licensingDocLink ?? LICENSING_DOC_LINK;
                        (0, _trial_panel.showTrialPanel)(buyNowLink, licensingDocLink, _version.fullVersion)
                    }
                    const preview = isPreview(version.patch);
                    if (error) {
                        _errors.default.log(preview ? "W0022" : error);
                        return
                    }
                    if (preview && !internal) {
                        _errors.default.log("W0022")
                    }
                }
                exports.default = {
                    validateLicense: validateLicense
                }
            },
        1012:
            /*!******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/license/pkcs1.js ***!
              \******************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.pad = function(hash) {
                    const dataLength = (8 * _key.PUBLIC_KEY.n.length + 6) / 8;
                    const data = (0, _byte_utils.concatBytes)((0, _byte_utils.hexToBytes)(ASN1_SHA1), hash);
                    if (data.length + 10 > dataLength) {
                        throw Error("Key is too short for SHA1 signing algorithm")
                    }
                    const padding = new Uint8Array(dataLength - data.length);
                    padding.fill(255, 0, padding.length - 1);
                    padding[0] = 0;
                    padding[1] = 1;
                    padding[padding.length - 1] = 0;
                    return (0, _byte_utils.concatBytes)(padding, data)
                };
                var _byte_utils = __webpack_require__( /*! ./byte_utils */ 22692);
                var _key = __webpack_require__( /*! ./key */ 78157);
                const ASN1_SHA1 = "3021300906052b0e03021a05000414"
            },
        42752:
            /*!***********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/license/rsa_bigint.js ***!
              \***********************************************************************************/
            function(__unused_webpack_module, exports) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.compareSignatures = function(args) {
                    try {
                        const zero = BigInt(0);
                        const one = BigInt(1);
                        const eight = BigInt(8);
                        const modExp = (base, exponent, modulus) => {
                            let result = one;
                            let b = base;
                            let e = exponent;
                            while (e) {
                                if (e & one) {
                                    result = result * b % modulus
                                }
                                b = b * b % modulus;
                                e >>= one
                            }
                            return result
                        };
                        const bigIntFromBytes = bytes => bytes.reduce(((acc, cur) => (acc << eight) + BigInt(cur)), zero);
                        const actual = bigIntFromBytes(args.actual);
                        const signature = bigIntFromBytes(args.signature);
                        const exponent = BigInt(args.key.e);
                        const modulus = bigIntFromBytes(args.key.n);
                        const expected = modExp(signature, exponent, modulus);
                        return expected === actual
                    } catch {
                        return true
                    }
                }
            },
        94281:
            /*!*****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/license/sha1.js ***!
              \*****************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.preprocess = preprocess;
                exports.sha1 = function(text) {
                    const message = preprocess(text);
                    const h = new Uint32Array([1732584193, 4023233417, 2562383102, 271733878, 3285377520]);
                    for (let i = 0; i < message.length; i += 16) {
                        const w = new Uint32Array(80);
                        for (let j = 0; j < 16; j += 1) {
                            w[j] = message[i + j]
                        }
                        for (let j = 16; j < 80; j += 1) {
                            const n = w[j - 3] ^ w[j - 8] ^ w[j - 14] ^ w[j - 16];
                            w[j] = n << 1 | n >>> 31
                        }
                        let a = h[0];
                        let b = h[1];
                        let c = h[2];
                        let d = h[3];
                        let e = h[4];
                        for (let j = 0; j < 80; j += 1) {
                            const [f, k] = j < 20 ? [b & c | ~b & d, 1518500249] : j < 40 ? [b ^ c ^ d, 1859775393] : j < 60 ? [b & c | b & d | c & d, 2400959708] : [b ^ c ^ d, 3395469782];
                            const temp = (0, _byte_utils.leftRotate)(a, 5) + f + e + k + w[j];
                            e = d;
                            d = c;
                            c = (0, _byte_utils.leftRotate)(b, 30);
                            b = a;
                            a = temp
                        }
                        h[0] += a;
                        h[1] += b;
                        h[2] += c;
                        h[3] += d;
                        h[4] += e
                    }
                    return (0, _byte_utils.wordsToBytes)(h)
                };
                var _byte_utils = __webpack_require__( /*! ./byte_utils */ 22692);

                function preprocess(text) {
                    const bytes = new Uint8Array(text.length + 1);
                    bytes.set((0, _byte_utils.stringToBytes)(text));
                    bytes[bytes.length - 1] = 128;
                    const words = (0, _byte_utils.bytesToWords)(new Uint8Array(bytes));
                    const result = new Uint32Array(16 * Math.ceil((words.length + 2) / 16));
                    result.set(words, 0);
                    result[result.length - 1] = 8 * (bytes.length - 1);
                    return result
                }
            },
        42570:
            /*!*******************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/license/trial_panel.client.js ***!
              \*******************************************************************************************/
            function(__unused_webpack_module, exports) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.isClient = exports.BASE_Z_INDEX = void 0;
                exports.registerCustomComponents = registerCustomComponents;
                exports.renderTrialPanel = function(buyNowUrl, licensingDocUrl, version, customStyles) {
                    registerCustomComponents(customStyles);
                    const trialPanelTrigger = document.createElement(componentNames.trigger);
                    trialPanelTrigger.setAttribute(attributeNames.buyNow, buyNowUrl);
                    trialPanelTrigger.setAttribute(attributeNames.licensingDoc, licensingDocUrl);
                    trialPanelTrigger.setAttribute(attributeNames.version, version);
                    document.body.appendChild(trialPanelTrigger)
                };

                function _extends() {
                    return _extends = Object.assign ? Object.assign.bind() : function(n) {
                        for (var e = 1; e < arguments.length; e++) {
                            var t = arguments[e];
                            for (var r in t) {
                                ({}).hasOwnProperty.call(t, r) && (n[r] = t[r])
                            }
                        }
                        return n
                    }, _extends.apply(null, arguments)
                }
                const BASE_Z_INDEX = exports.BASE_Z_INDEX = 1500;
                const isClient = () => "undefined" !== typeof HTMLElement && "undefined" !== typeof customElements;
                exports.isClient = isClient;
                const SafeHTMLElement = isClient() ? HTMLElement : class {};
                const componentNames = {
                    trigger: "dx-license-trigger",
                    panel: "dx-license"
                };
                const attributeNames = {
                    buyNow: "buy-now",
                    licensingDoc: "licensing-doc",
                    version: "version"
                };
                const commonStyles = {
                    opacity: "1",
                    visibility: "visible",
                    "clip-path": "none",
                    filter: "none"
                };
                const contentStyles = _extends({}, commonStyles, {
                    width: "100%",
                    height: "auto",
                    "line-height": "normal",
                    display: "block",
                    "z-index": `${BASE_Z_INDEX}`,
                    position: "static",
                    transform: "translate(0px, 0px)",
                    "background-color": "#FF7200",
                    border: "none",
                    margin: "auto",
                    "box-sizing": "border-box",
                    "text-align": "center"
                });
                const containerStyles = _extends({}, contentStyles, {
                    display: "flex",
                    "align-items": "center",
                    "flex-direction": "row",
                    position: "relative",
                    top: "0px",
                    left: "0px",
                    padding: "0.5rem"
                });
                const buttonStyles = {
                    width: "1rem",
                    cursor: "pointer",
                    height: "1rem"
                };
                const textStyles = _extends({}, commonStyles, {
                    display: "inline",
                    position: "static",
                    padding: "0px",
                    margin: "0px",
                    color: "white",
                    "font-family": "'Segoe UI','Open Sans Condensed',-apple-system,BlinkMacSystemFont,avenir next,avenir,helvetica neue,helvetica,Cantarell,Ubuntu,roboto,noto,arial,sans-serif",
                    "font-size": "0.875rem",
                    "font-wight": "600"
                });

                function createImportantStyles(defaultStyles, customStyles) {
                    const styles = customStyles ? _extends({}, defaultStyles, customStyles) : defaultStyles;
                    return Object.keys(styles).reduce(((cssString, currentKey) => `${cssString}${[currentKey,`${styles[currentKey]} !important;`].join(": ")}`), "")
                }
                class DxLicense extends SafeHTMLElement {
                    constructor() {
                        var _DxLicense$customStyl, _DxLicense$customStyl2, _DxLicense$customStyl3, _DxLicense$customStyl4, _DxLicense$customStyl5;
                        super();
                        this._observer = null;
                        this._inReassign = false;
                        this._spanStyles = createImportantStyles(textStyles, null === (_DxLicense$customStyl = DxLicense.customStyles) || void 0 === _DxLicense$customStyl ? void 0 : _DxLicense$customStyl.textStyles);
                        this._linkStyles = createImportantStyles(textStyles, null === (_DxLicense$customStyl2 = DxLicense.customStyles) || void 0 === _DxLicense$customStyl2 ? void 0 : _DxLicense$customStyl2.linkStyles);
                        this._containerStyles = createImportantStyles(containerStyles, null === (_DxLicense$customStyl3 = DxLicense.customStyles) || void 0 === _DxLicense$customStyl3 ? void 0 : _DxLicense$customStyl3.containerStyles);
                        this._contentStyles = createImportantStyles(contentStyles, null === (_DxLicense$customStyl4 = DxLicense.customStyles) || void 0 === _DxLicense$customStyl4 ? void 0 : _DxLicense$customStyl4.contentStyles);
                        this._buttonStyles = createImportantStyles(buttonStyles, null === (_DxLicense$customStyl5 = DxLicense.customStyles) || void 0 === _DxLicense$customStyl5 ? void 0 : _DxLicense$customStyl5.contentStyles)
                    }
                    _createSpan(text) {
                        const span = document.createElement("span");
                        span.innerText = text;
                        span.style.cssText = this._spanStyles;
                        return span
                    }
                    _createLink(text, href) {
                        const link = document.createElement("a");
                        link.innerText = text;
                        link.style.cssText = this._linkStyles;
                        link.href = href;
                        link.target = "_blank";
                        return link
                    }
                    _createButton() {
                        const button = document.createElement("div");
                        button.style.cssText = this._buttonStyles;
                        const polygon = document.createElementNS("http://www.w3.org/2000/svg", "polygon");
                        const svg = document.createElementNS("http://www.w3.org/2000/svg", "svg");
                        polygon.setAttribute("points", "13.4 12.7 8.7 8 13.4 3.4 12.6 2.6 8 7.3 3.4 2.6 2.6 3.4 7.3 8 2.6 12.6 3.4 13.4 8 8.7 12.7 13.4 13.4 12.7");
                        polygon.style.cssText = createImportantStyles({
                            fill: "#fff",
                            opacity: ".5",
                            "stroke-width": "0px"
                        });
                        svg.setAttribute("id", "Layer_1");
                        svg.setAttribute("data-name", "Layer 1");
                        svg.setAttribute("version", "1.1");
                        svg.setAttribute("viewBox", "0 0 16 16");
                        svg.style.cssText = createImportantStyles({
                            "vertical-align": "baseline"
                        });
                        svg.appendChild(polygon);
                        button.appendChild(svg);
                        button.onclick = () => {
                            DxLicense.closed = true;
                            this.style.cssText = createImportantStyles({
                                display: "none"
                            })
                        };
                        return button
                    }
                    _createContentContainer() {
                        const contentContainer = document.createElement("div");
                        contentContainer.style.cssText = this._contentStyles;
                        contentContainer.append(this._createSpan("For evaluation purposes only. Redistribution prohibited. Please "), this._createLink("register", this.getAttribute(attributeNames.licensingDoc)), this._createSpan(" an existing license or "), this._createLink("purchase a new license", this.getAttribute(attributeNames.buyNow)), this._createSpan(` to continue use of DevExpress product libraries (v${this.getAttribute(attributeNames.version)}).`));
                        return contentContainer
                    }
                    _reassignComponent() {
                        this.innerHTML = "";
                        this.style.cssText = this._containerStyles;
                        this.append(this._createContentContainer(), this._createButton())
                    }
                    connectedCallback() {
                        this._reassignComponent();
                        if (!this._observer) {
                            this._observer = new MutationObserver((() => {
                                if (DxLicense.closed) {
                                    var _this$_observer;
                                    null === (_this$_observer = this._observer) || void 0 === _this$_observer || _this$_observer.disconnect();
                                    return
                                }
                                if (this._inReassign) {
                                    this._inReassign = false
                                } else {
                                    this._inReassign = true;
                                    this._reassignComponent()
                                }
                            }));
                            this._observer.observe(this, {
                                childList: true,
                                attributes: true,
                                subtree: true
                            })
                        }
                    }
                    disconnectedCallback() {
                        if (DxLicense.closed) {
                            return
                        }
                        Promise.resolve().then((() => {
                            if (!document) {
                                return
                            }
                            const licensePanel = document.getElementsByTagName(componentNames.panel);
                            if (!licensePanel.length) {
                                document.body.prepend(this)
                            }
                        }))
                    }
                }
                DxLicense.customStyles = void 0;
                DxLicense.closed = false;
                class DxLicenseTrigger extends SafeHTMLElement {
                    connectedCallback() {
                        this.style.cssText = createImportantStyles({
                            display: "none"
                        });
                        const licensePanel = document.getElementsByTagName(componentNames.panel);
                        if (!licensePanel.length && !DxLicense.closed) {
                            const license = document.createElement(componentNames.panel);
                            license.setAttribute(attributeNames.version, this.getAttribute(attributeNames.version));
                            license.setAttribute(attributeNames.buyNow, this.getAttribute(attributeNames.buyNow));
                            license.setAttribute(attributeNames.licensingDoc, this.getAttribute(attributeNames.licensingDoc));
                            license.setAttribute("data-permanent", "");
                            document.body.prepend(license)
                        }
                    }
                }

                function registerCustomComponents(customStyles) {
                    if (!customElements.get(componentNames.trigger)) {
                        DxLicense.customStyles = customStyles;
                        customElements.define(componentNames.trigger, DxLicenseTrigger);
                        customElements.define(componentNames.panel, DxLicense)
                    }
                }
            },
        99671:
            /*!************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/license/trial_panel.js ***!
              \************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.registerTrialPanelComponents = function(customStyles) {
                    if ((0, _trial_panel.isClient)()) {
                        (0, _trial_panel.registerCustomComponents)(customStyles)
                    }
                };
                exports.showTrialPanel = function(buyNowUrl, licensingDocUrl, version, customStyles) {
                    if ((0, _trial_panel.isClient)()) {
                        (0, _trial_panel.renderTrialPanel)(buyNowUrl, licensingDocUrl, version, customStyles)
                    }
                };
                var _trial_panel = __webpack_require__( /*! ./trial_panel.client */ 42570)
            },
        13407:
            /*!******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/license/types.js ***!
              \******************************************************************************/
            function(__unused_webpack_module, exports) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.TokenKind = void 0;
                var TokenKind;
                ! function(TokenKind) {
                    TokenKind.corrupted = "corrupted";
                    TokenKind.verified = "verified";
                    TokenKind.internal = "internal"
                }(TokenKind || (exports.TokenKind = TokenKind = {}))
            },
        3226:
            /*!*************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/m_action.js ***!
              \*************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = exports.Action = void 0;
                var _renderer = (e = __webpack_require__( /*! ../../core/renderer */ 64553), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 21274);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 11528);
                var _window = __webpack_require__( /*! ../../core/utils/window */ 3104);
                class Action {
                    constructor(action, config) {
                        config = config || {};
                        this._action = action;
                        this._context = config.context || (0, _window.getWindow)();
                        this._beforeExecute = config.beforeExecute;
                        this._afterExecute = config.afterExecute;
                        this._component = config.component;
                        this._validatingTargetName = config.validatingTargetName;
                        const excludeValidators = this._excludeValidators = {};
                        if (config.excludeValidators) {
                            for (let i = 0; i < config.excludeValidators.length; i++) {
                                excludeValidators[config.excludeValidators[i]] = true
                            }
                        }
                    }
                    execute() {
                        for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
                            args[_key] = arguments[_key]
                        }
                        const e = {
                            action: this._action,
                            args: Array.prototype.slice.call(args),
                            context: this._context,
                            component: this._component,
                            validatingTargetName: this._validatingTargetName,
                            cancel: false,
                            handled: false
                        };
                        const beforeExecute = this._beforeExecute;
                        const afterExecute = this._afterExecute;
                        const argsBag = e.args[0] || {};
                        if (!this._validateAction(e)) {
                            return
                        }
                        null === beforeExecute || void 0 === beforeExecute || beforeExecute.call(this._context, e);
                        if (e.cancel) {
                            return
                        }
                        const result = this._executeAction(e);
                        if (argsBag.cancel) {
                            return
                        }
                        null === afterExecute || void 0 === afterExecute || afterExecute.call(this._context, e);
                        return result
                    }
                    _validateAction(e) {
                        const excludeValidators = this._excludeValidators;
                        const {
                            executors: executors
                        } = Action;
                        for (const name in executors) {
                            if (!excludeValidators[name]) {
                                var _executor$validate;
                                const executor = executors[name];
                                null === (_executor$validate = executor.validate) || void 0 === _executor$validate || _executor$validate.call(executor, e);
                                if (e.cancel) {
                                    return false
                                }
                            }
                        }
                        return true
                    }
                    _executeAction(e) {
                        let result;
                        const {
                            executors: executors
                        } = Action;
                        for (const name in executors) {
                            var _executor$execute;
                            const executor = executors[name];
                            null === (_executor$execute = executor.execute) || void 0 === _executor$execute || _executor$execute.call(executor, e);
                            if (e.handled) {
                                result = e.result;
                                break
                            }
                        }
                        return result
                    }
                    static registerExecutor(name, executor) {
                        if ((0, _type.isPlainObject)(name)) {
                            (0, _iterator.each)(name, Action.registerExecutor);
                            return
                        }
                        Action.executors[name] = executor
                    }
                    static unregisterExecutor() {
                        for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
                            args[_key2] = arguments[_key2]
                        }(0, _iterator.each)(args, (function() {
                            delete Action.executors[this]
                        }))
                    }
                }
                exports.Action = Action;
                Action.executors = {};
                const createValidatorByTargetElement = condition => e => {
                    if (!e.args.length) {
                        return
                    }
                    const args = e.args[0];
                    const element = args[e.validatingTargetName] || args.element;
                    if (element && condition((0, _renderer.default)(element))) {
                        e.cancel = true
                    }
                };
                Action.registerExecutor({
                    disabled: {
                        validate: createValidatorByTargetElement(($target => $target.is(".dx-state-disabled, .dx-state-disabled *")))
                    },
                    readOnly: {
                        validate: createValidatorByTargetElement(($target => $target.is(".dx-state-readonly, .dx-state-readonly *:not(.dx-state-independent)")))
                    },
                    undefined: {
                        execute: e => {
                            if (!e.action) {
                                e.result = void 0;
                                e.handled = true
                            }
                        }
                    },
                    func: {
                        execute: e => {
                            if ((0, _type.isFunction)(e.action)) {
                                e.result = e.action.call(e.context, e.args[0]);
                                e.handled = true
                            }
                        }
                    }
                });
                exports.default = Action
            },
        40958:
            /*!************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/m_class.js ***!
              \************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _errors = (e = __webpack_require__( /*! ../../core/errors */ 87129), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                var _type = __webpack_require__( /*! ../../core/utils/type */ 11528);
                const wrapOverridden = function(baseProto, methodName, method) {
                    return function() {
                        const prevCallBase = this.callBase;
                        this.callBase = baseProto[methodName];
                        try {
                            return method.apply(this, arguments)
                        } finally {
                            this.callBase = prevCallBase
                        }
                    }
                };
                const redefine = function(members) {
                    const that = this;
                    let overridden;
                    let memberName;
                    let member;
                    if (!members) {
                        return that
                    }
                    for (memberName in members) {
                        member = members[memberName];
                        overridden = "function" === typeof that.prototype[memberName] && "function" === typeof member;
                        that.prototype[memberName] = overridden ? wrapOverridden(that.parent.prototype, memberName, member) : member
                    }
                    return that
                };
                const include = function() {
                    const classObj = this;
                    let argument;
                    let name;
                    let i;
                    const hasClassObjOwnProperty = Object.prototype.hasOwnProperty.bind(classObj);
                    const isES6Class = !hasClassObjOwnProperty("_includedCtors") && !hasClassObjOwnProperty("_includedPostCtors");
                    if (isES6Class) {
                        classObj._includedCtors = classObj._includedCtors.slice(0);
                        classObj._includedPostCtors = classObj._includedPostCtors.slice(0)
                    }
                    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
                        args[_key] = arguments[_key]
                    }
                    for (i = 0; i < args.length; i++) {
                        argument = args[i];
                        if (argument.ctor) {
                            classObj._includedCtors.push(argument.ctor)
                        }
                        if (argument.postCtor) {
                            classObj._includedPostCtors.push(argument.postCtor)
                        }
                        for (name in argument) {
                            if ("ctor" === name || "postCtor" === name || "default" === name) {
                                continue
                            }
                            classObj.prototype[name] = argument[name]
                        }
                    }
                    return classObj
                };
                const subclassOf = function(parentClass) {
                    const hasParentProperty = Object.prototype.hasOwnProperty.bind(this)("parent");
                    const isES6Class = !hasParentProperty && this.parent;
                    if (isES6Class) {
                        const baseClass = Object.getPrototypeOf(this);
                        return baseClass === parentClass || baseClass.subclassOf(parentClass)
                    }
                    if (this.parent === parentClass) {
                        return true
                    }
                    if (!this.parent || !this.parent.subclassOf) {
                        return false
                    }
                    return this.parent.subclassOf(parentClass)
                };
                const abstract = function() {
                    throw _errors.default.Error("E0001")
                };
                const classImpl = function() {};
                classImpl.inherit = function(members) {
                    const inheritor = function() {
                        if (!this || (0, _type.isWindow)(this) || "function" !== typeof this.constructor) {
                            throw _errors.default.Error("E0003")
                        }
                        const instance = this;
                        const {
                            ctor: ctor
                        } = instance;
                        const includedCtors = instance.constructor._includedCtors;
                        const includedPostCtors = instance.constructor._includedPostCtors;
                        let i;
                        for (i = 0; i < includedCtors.length; i++) {
                            includedCtors[i].call(instance)
                        }
                        if (ctor) {
                            for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
                                args[_key2] = arguments[_key2]
                            }
                            ctor.apply(instance, args)
                        }
                        for (i = 0; i < includedPostCtors.length; i++) {
                            includedPostCtors[i].call(instance)
                        }
                    };
                    inheritor.prototype = function(obj) {
                        const func = function() {};
                        func.prototype = obj.prototype;
                        return new func
                    }(this);
                    Object.setPrototypeOf(inheritor, this);
                    inheritor.inherit = this.inherit;
                    inheritor.abstract = abstract;
                    inheritor.redefine = redefine;
                    inheritor.include = include;
                    inheritor.subclassOf = subclassOf;
                    inheritor.parent = this;
                    inheritor._includedCtors = this._includedCtors ? this._includedCtors.slice(0) : [];
                    inheritor._includedPostCtors = this._includedPostCtors ? this._includedPostCtors.slice(0) : [];
                    inheritor.prototype.constructor = inheritor;
                    inheritor.redefine(members);
                    return inheritor
                };
                classImpl.abstract = abstract;
                exports.default = classImpl
            },
        10718:
            /*!****************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/m_component_registrator.js ***!
              \****************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.registerComponent = void 0;
                var _component_registrator_callbacks = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator_callbacks */ 55771));
                var _errors = _interopRequireDefault(__webpack_require__( /*! ../../core/errors */ 87129));
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553));
                var _public_component = __webpack_require__( /*! ../../core/utils/public_component */ 85521);

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                exports.registerComponent = function(name, namespace, componentClass) {
                    if (!componentClass) {
                        componentClass = namespace
                    } else {
                        namespace[name] = componentClass
                    }(0, _public_component.name)(componentClass, name);
                    _component_registrator_callbacks.default.fire(name, componentClass)
                };
                _component_registrator_callbacks.default.add((function(name, componentClass) {
                    _renderer.default.fn[name] = function(options) {
                        const isMemberInvoke = "string" === typeof options;
                        let result;
                        if (isMemberInvoke) {
                            const memberName = options;
                            const memberArgs = [].slice.call(arguments).slice(1);
                            this.each((function() {
                                const instance = componentClass.getInstance(this);
                                if (!instance) {
                                    throw _errors.default.Error("E0009", name)
                                }
                                const member = instance[memberName];
                                const memberValue = member.apply(instance, memberArgs);
                                if (void 0 === result) {
                                    result = memberValue
                                }
                            }))
                        } else {
                            this.each((function() {
                                const instance = componentClass.getInstance(this);
                                if (instance) {
                                    instance.option(options)
                                } else {
                                    new componentClass(this, options)
                                }
                            }));
                            result = this
                        }
                        return result
                    }
                }))
            },
        21233:
            /*!**************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/m_component_registrator_callbacks.js ***!
              \**************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.componentRegistratorCallbacks = void 0;
                var _memorized_callbacks = (e = __webpack_require__( /*! ../../core/memorized_callbacks */ 35329), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                exports.componentRegistratorCallbacks = new _memorized_callbacks.default
            },
        34338:
            /*!*************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/m_config.js ***!
              \*************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _errors = (e = __webpack_require__( /*! ../../core/errors */ 87129), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576);
                const config = {
                    rtlEnabled: false,
                    defaultCurrency: "USD",
                    defaultUseCurrencyAccountingStyle: true,
                    oDataFilterToLower: true,
                    serverDecimalSeparator: ".",
                    decimalSeparator: ".",
                    thousandsSeparator: ",",
                    forceIsoDateParsing: true,
                    wrapActionsBeforeExecute: true,
                    useLegacyStoreResult: false,
                    useJQuery: void 0,
                    editorStylingMode: void 0,
                    useLegacyVisibleIndex: false,
                    floatingActionButtonConfig: {
                        icon: "add",
                        closeIcon: "close",
                        label: "",
                        position: {
                            at: "right bottom",
                            my: "right bottom",
                            offset: {
                                x: -16,
                                y: -16
                            }
                        },
                        maxSpeedDialActionCount: 5,
                        shading: false,
                        direction: "auto"
                    },
                    optionsParser: optionsString => {
                        if ("{" !== optionsString.trim().charAt(0)) {
                            optionsString = `{${optionsString}}`
                        }
                        try {
                            return JSON.parse(optionsString)
                        } catch (ex) {
                            try {
                                return JSON.parse(normalizeToJSONString(optionsString))
                            } catch (exNormalize) {
                                throw _errors.default.Error("E3018", ex, optionsString)
                            }
                        }
                    }
                };
                const normalizeToJSONString = optionsString => optionsString.replace(/'/g, '"').replace(/,\s*([\]}])/g, "$1").replace(/([{,])\s*([^":\s]+)\s*:/g, '$1"$2":');
                const deprecatedFields = ["decimalSeparator", "thousandsSeparator"];
                const configMethod = function() {
                    if (!arguments.length) {
                        return config
                    }
                    const newConfig = arguments.length <= 0 ? void 0 : arguments[0];
                    deprecatedFields.forEach((deprecatedField => {
                        if (newConfig[deprecatedField]) {
                            const message = `Now, the ${deprecatedField} is selected based on the specified locale.`;
                            _errors.default.log("W0003", "config", deprecatedField, "19.2", message)
                        }
                    }));
                    (0, _extend.extend)(config, newConfig)
                };
                if ("undefined" !== typeof DevExpress && DevExpress.config) {
                    configMethod(DevExpress.config)
                }
                exports.default = configMethod
            },
        98905:
            /*!**************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/m_devices.js ***!
              \**************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _config = _interopRequireDefault(__webpack_require__( /*! ../../core/config */ 66636));
                var _errors = _interopRequireDefault(__webpack_require__( /*! ../../core/errors */ 87129));
                var _events_strategy = __webpack_require__( /*! ../../core/events_strategy */ 2607);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553));
                var _callbacks = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/callbacks */ 84718));
                var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 87739);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576);
                var _ready_callbacks = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/ready_callbacks */ 3122));
                var _resize_callbacks = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/resize_callbacks */ 63283));
                var _size = __webpack_require__( /*! ../../core/utils/size */ 57653);
                var _storage = __webpack_require__( /*! ../../core/utils/storage */ 98479);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 11528);
                var _view_port = __webpack_require__( /*! ../../core/utils/view_port */ 55355);
                var _window = __webpack_require__( /*! ../../core/utils/window */ 3104);
                var _m_common = __webpack_require__( /*! ../core/utils/m_common */ 39315);

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const window = (0, _window.getWindow)();
                const KNOWN_UA_TABLE = {
                    iPhone: "iPhone",
                    iPhone5: "iPhone",
                    iPhone6: "iPhone",
                    iPhone6plus: "iPhone",
                    iPad: "iPad",
                    iPadMini: "iPad Mini",
                    androidPhone: "Android Mobile",
                    androidTablet: "Android",
                    msSurface: "Windows ARM Tablet PC",
                    desktop: "desktop"
                };
                const DEFAULT_DEVICE = {
                    deviceType: "desktop",
                    platform: "generic",
                    version: [],
                    phone: false,
                    tablet: false,
                    android: false,
                    ios: false,
                    generic: true,
                    grade: "A",
                    mac: false
                };
                const UA_PARSERS = {
                    generic(userAgent) {
                        const isPhone = /windows phone/i.test(userAgent) || userAgent.match(/WPDesktop/);
                        const isTablet = !isPhone && /Windows(.*)arm(.*)Tablet PC/i.test(userAgent);
                        const isDesktop = !isPhone && !isTablet && /msapphost/i.test(userAgent);
                        const isMac = /((intel|ppc) mac os x)/.test(userAgent.toLowerCase());
                        if (!(isPhone || isTablet || isDesktop || isMac)) {
                            return null
                        }
                        return {
                            deviceType: isPhone ? "phone" : isTablet ? "tablet" : "desktop",
                            platform: "generic",
                            version: [],
                            grade: "A",
                            mac: isMac
                        }
                    },
                    appleTouchDevice(userAgent) {
                        const navigator = (0, _window.getNavigator)();
                        const isIpadOs = /Macintosh/i.test(userAgent) && (null === navigator || void 0 === navigator ? void 0 : navigator.maxTouchPoints) > 2;
                        const isAppleDevice = /ip(hone|od|ad)/i.test(userAgent);
                        if (!isAppleDevice && !isIpadOs) {
                            return null
                        }
                        const isPhone = /ip(hone|od)/i.test(userAgent);
                        const matches = userAgent.match(/os\s{0,}X? (\d+)_(\d+)_?(\d+)?/i);
                        const version = matches ? [parseInt(matches[1], 10), parseInt(matches[2], 10), parseInt(matches[3] || 0, 10)] : [];
                        const isIPhone4 = 480 === window.screen.height;
                        const grade = isIPhone4 ? "B" : "A";
                        return {
                            deviceType: isPhone ? "phone" : "tablet",
                            platform: "ios",
                            version: version,
                            grade: grade
                        }
                    },
                    android(userAgent) {
                        const isAndroid = /android|htc_|silk/i.test(userAgent);
                        const isWinPhone = /windows phone/i.test(userAgent);
                        if (!isAndroid || isWinPhone) {
                            return null
                        }
                        const isPhone = /mobile/i.test(userAgent);
                        const matches = userAgent.match(/android (\d+)\.?(\d+)?\.?(\d+)?/i);
                        const version = matches ? [parseInt(matches[1], 10), parseInt(matches[2] || 0, 10), parseInt(matches[3] || 0, 10)] : [];
                        const worseThan4_4 = version.length > 1 && (version[0] < 4 || 4 === version[0] && version[1] < 4);
                        const grade = worseThan4_4 ? "B" : "A";
                        return {
                            deviceType: isPhone ? "phone" : "tablet",
                            platform: "android",
                            version: version,
                            grade: grade
                        }
                    }
                };
                const UA_PARSERS_ARRAY = [UA_PARSERS.appleTouchDevice, UA_PARSERS.android, UA_PARSERS.generic];
                const devices = new class {
                    constructor(options) {
                        this._window = (null === options || void 0 === options ? void 0 : options.window) ?? window;
                        this._realDevice = this._getDevice();
                        this._currentDevice = void 0;
                        this._currentOrientation = void 0;
                        this._eventsStrategy = new _events_strategy.EventsStrategy(this);
                        this.changed = (0, _callbacks.default)();
                        if ((0, _window.hasWindow)()) {
                            _ready_callbacks.default.add(this._recalculateOrientation.bind(this));
                            _resize_callbacks.default.add(this._recalculateOrientation.bind(this))
                        }
                    }
                    current(deviceOrName) {
                        if (deviceOrName) {
                            this._currentDevice = this._getDevice(deviceOrName);
                            this._forced = true;
                            this.changed.fire();
                            return
                        }
                        if (!this._currentDevice) {
                            deviceOrName = void 0;
                            try {
                                deviceOrName = this._getDeviceOrNameFromWindowScope()
                            } catch (e) {
                                deviceOrName = this._getDeviceNameFromSessionStorage()
                            } finally {
                                if (!deviceOrName) {
                                    deviceOrName = this._getDeviceNameFromSessionStorage()
                                }
                                if (deviceOrName) {
                                    this._forced = true
                                }
                            }
                            this._currentDevice = this._getDevice(deviceOrName)
                        }
                        return this._currentDevice
                    }
                    real(forceDevice) {
                        return (0, _extend.extend)({}, this._realDevice)
                    }
                    orientation() {
                        return this._currentOrientation
                    }
                    isForced() {
                        return this._forced
                    }
                    isRippleEmulator() {
                        return !!this._window.tinyHippos
                    }
                    _getCssClasses(device) {
                        const result = [];
                        const realDevice = this._realDevice;
                        device = device || this.current();
                        if (device.deviceType) {
                            result.push(`dx-device-${device.deviceType}`);
                            if ("desktop" !== device.deviceType) {
                                result.push("dx-device-mobile")
                            }
                        }
                        result.push(`dx-device-${realDevice.platform}`);
                        if (realDevice.version && realDevice.version.length) {
                            result.push(`dx-device-${realDevice.platform}-${realDevice.version[0]}`)
                        }
                        if (this.isSimulator()) {
                            result.push("dx-simulator")
                        }
                        if ((0, _config.default)().rtlEnabled) {
                            result.push("dx-rtl")
                        }
                        return result
                    }
                    attachCssClasses(element, device) {
                        this._deviceClasses = this._getCssClasses(device).join(" ");
                        (0, _renderer.default)(element).addClass(this._deviceClasses)
                    }
                    detachCssClasses(element) {
                        (0, _renderer.default)(element).removeClass(this._deviceClasses)
                    }
                    isSimulator() {
                        try {
                            var _this$_window$top;
                            return this._isSimulator || (0, _window.hasWindow)() && this._window.top !== this._window.self && (null === (_this$_window$top = this._window.top) || void 0 === _this$_window$top ? void 0 : _this$_window$top["dx-force-device"]) || this.isRippleEmulator()
                        } catch (e) {
                            return false
                        }
                    }
                    forceSimulator() {
                        this._isSimulator = true
                    }
                    _getDevice(deviceName) {
                        if ("genericPhone" === deviceName) {
                            deviceName = {
                                deviceType: "phone",
                                platform: "generic",
                                generic: true
                            }
                        }
                        if ((0, _type.isPlainObject)(deviceName)) {
                            return this._fromConfig(deviceName)
                        }
                        let ua;
                        if (deviceName) {
                            ua = KNOWN_UA_TABLE[deviceName];
                            if (!ua) {
                                throw _errors.default.Error("E0005")
                            }
                        } else {
                            const navigator = (0, _window.getNavigator)();
                            ua = navigator.userAgent
                        }
                        return this._fromUA(ua)
                    }
                    _getDeviceOrNameFromWindowScope() {
                        var _this$_window$top2, _this$_window$top3;
                        let result;
                        if ((0, _window.hasWindow)() && (null !== (_this$_window$top2 = this._window.top) && void 0 !== _this$_window$top2 && _this$_window$top2["dx-force-device-object"] || null !== (_this$_window$top3 = this._window.top) && void 0 !== _this$_window$top3 && _this$_window$top3["dx-force-device"])) {
                            var _this$_window$top4, _this$_window$top5;
                            result = (null === (_this$_window$top4 = this._window.top) || void 0 === _this$_window$top4 ? void 0 : _this$_window$top4["dx-force-device-object"]) || (null === (_this$_window$top5 = this._window.top) || void 0 === _this$_window$top5 ? void 0 : _this$_window$top5["dx-force-device"])
                        }
                        return result
                    }
                    _getDeviceNameFromSessionStorage() {
                        const sessionStorage = (0, _storage.sessionStorage)();
                        if (!sessionStorage) {
                            return
                        }
                        const deviceOrName = sessionStorage.getItem("dx-force-device");
                        try {
                            return JSON.parse(deviceOrName)
                        } catch (ex) {
                            return deviceOrName
                        }
                    }
                    _fromConfig(config) {
                        const result = (0, _extend.extend)({}, DEFAULT_DEVICE, this._currentDevice, config);
                        const shortcuts = {
                            phone: "phone" === result.deviceType,
                            tablet: "tablet" === result.deviceType,
                            android: "android" === result.platform,
                            ios: "ios" === result.platform,
                            generic: "generic" === result.platform
                        };
                        return (0, _extend.extend)(result, shortcuts)
                    }
                    _fromUA(ua) {
                        for (let idx = 0; idx < UA_PARSERS_ARRAY.length; idx += 1) {
                            const parser = UA_PARSERS_ARRAY[idx];
                            const config = parser(ua);
                            if (config) {
                                return this._fromConfig(config)
                            }
                        }
                        return DEFAULT_DEVICE
                    }
                    _changeOrientation() {
                        const $window = (0, _renderer.default)(this._window);
                        const orientation = (0, _size.getHeight)($window) > (0, _size.getWidth)($window) ? "portrait" : "landscape";
                        if (this._currentOrientation === orientation) {
                            return
                        }
                        this._currentOrientation = orientation;
                        this._eventsStrategy.fireEvent("orientationChanged", [{
                            orientation: orientation
                        }])
                    }
                    _recalculateOrientation() {
                        const windowWidth = (0, _size.getWidth)(this._window);
                        if (this._currentWidth === windowWidth) {
                            return
                        }
                        this._currentWidth = windowWidth;
                        this._changeOrientation()
                    }
                    on(eventName, eventHandler) {
                        this._eventsStrategy.on(eventName, eventHandler);
                        return this
                    }
                    off(eventName, eventHandler) {
                        this._eventsStrategy.off(eventName, eventHandler);
                        return this
                    }
                };
                (0, _deferred.when)(_m_common.uiLayerInitialized).done((() => {
                    const viewPortElement = (0, _view_port.value)();
                    if (viewPortElement) {
                        devices.attachCssClasses(viewPortElement)
                    }
                    _view_port.changeCallback.add(((viewPort, prevViewport) => {
                        devices.detachCssClasses(prevViewport);
                        devices.attachCssClasses(viewPort)
                    }))
                }));
                exports.default = devices
            },
        62018:
            /*!******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/m_dom_adapter.js ***!
              \******************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.domAdapter = exports.default = void 0;
                var _common = __webpack_require__( /*! ../../core/utils/common */ 17781);
                var _dependency_injector = (e = __webpack_require__( /*! ../../core/utils/dependency_injector */ 89656), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                var _shadow_dom = __webpack_require__( /*! ../../core/utils/shadow_dom */ 93631);
                const nativeDOMAdapterStrategy = {
                    querySelectorAll: (element, selector) => element.querySelectorAll(selector),
                    elementMatches(element, selector) {
                        const matches = element.matches || element.matchesSelector || element.mozMatchesSelector || element.msMatchesSelector || element.oMatchesSelector || element.webkitMatchesSelector || (selector => {
                            const doc = element.document || element.ownerDocument;
                            if (!doc) {
                                return false
                            }
                            const items = this.querySelectorAll(doc, selector);
                            for (let i = 0; i < items.length; i++) {
                                if (items[i] === element) {
                                    return true
                                }
                            }
                        });
                        return matches.call(element, selector)
                    },
                    createElement(tagName, context) {
                        context = context ?? this._document;
                        return context.createElement(tagName)
                    },
                    createElementNS(ns, tagName, context) {
                        context = context || this._document;
                        return context.createElementNS(ns, tagName)
                    },
                    createTextNode(text, context) {
                        context = context || this._document;
                        return context.createTextNode(text)
                    },
                    createAttribute(text, context) {
                        context = context || this._document;
                        return context.createAttribute(text)
                    },
                    isNode: element => !!element && "object" === typeof element && "nodeType" in element && "nodeName" in element,
                    isElementNode: element => !!element && 1 === element.nodeType,
                    isTextNode: element => element && 3 === element.nodeType,
                    isDocument: element => element && 9 === element.nodeType,
                    isDocumentFragment: element => element && 11 === element.nodeType,
                    removeElement(element) {
                        const parentNode = element && element.parentNode;
                        if (parentNode) {
                            parentNode.removeChild(element)
                        }
                    },
                    insertElement(parentElement, newElement, nextSiblingElement) {
                        if (parentElement && newElement && parentElement !== newElement) {
                            if (nextSiblingElement) {
                                parentElement.insertBefore(newElement, nextSiblingElement)
                            } else {
                                parentElement.appendChild(newElement)
                            }
                        }
                    },
                    getAttribute: (element, name) => element.getAttribute(name),
                    setAttribute(element, name, value) {
                        if ("style" === name) {
                            element.style.cssText = value
                        } else {
                            element.setAttribute(name, value)
                        }
                    },
                    removeAttribute(element, name) {
                        element.removeAttribute(name)
                    },
                    setProperty(element, name, value) {
                        element[name] = value
                    },
                    setText(element, text) {
                        if (element) {
                            element.textContent = text
                        }
                    },
                    setClass(element, className, isAdd) {
                        if (1 === element.nodeType && className) {
                            isAdd ? element.classList.add(className) : element.classList.remove(className)
                        }
                    },
                    setStyle(element, name, value) {
                        element.style[name] = value || ""
                    },
                    _document: "undefined" === typeof document ? void 0 : document,
                    getDocument() {
                        return this._document
                    },
                    getActiveElement(element) {
                        const activeElementHolder = this.getRootNode(element);
                        return activeElementHolder.activeElement
                    },
                    getRootNode(element) {
                        var _element$getRootNode;
                        return (null === element || void 0 === element || null === (_element$getRootNode = element.getRootNode) || void 0 === _element$getRootNode ? void 0 : _element$getRootNode.call(element)) ?? this._document
                    },
                    getBody() {
                        return this._document.body
                    },
                    createDocumentFragment() {
                        return this._document.createDocumentFragment()
                    },
                    getDocumentElement() {
                        return this._document.documentElement
                    },
                    getLocation() {
                        return this._document.location
                    },
                    getSelection() {
                        return this._document.selection
                    },
                    getReadyState() {
                        return this._document.readyState
                    },
                    getHead() {
                        return this._document.head
                    },
                    hasDocumentProperty(property) {
                        return property in this._document
                    },
                    listen(element, event, callback, options) {
                        if (!element || !("addEventListener" in element)) {
                            return _common.noop
                        }
                        element.addEventListener(event, callback, options);
                        return () => {
                            element.removeEventListener(event, callback)
                        }
                    },
                    elementsFromPoint(x, y, element) {
                        const activeElementHolder = this.getRootNode(element);
                        if (activeElementHolder.host) {
                            return (0, _shadow_dom.getShadowElementsFromPoint)(x, y, activeElementHolder)
                        }
                        return activeElementHolder.elementsFromPoint(x, y)
                    }
                };
                const domAdapter = exports.domAdapter = (0, _dependency_injector.default)(nativeDOMAdapterStrategy);
                exports.default = domAdapter
            },
        93630:
            /*!**************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/m_element.js ***!
              \**************************************************************************/
            function(__unused_webpack_module, exports) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.getPublicElement = function(element) {
                    return strategy(element)
                };
                exports.getPublicElementNonJquery = getPublicElementNonJquery;
                exports.setPublicElementWrapper = function(newStrategy) {
                    strategy = newStrategy
                };

                function getPublicElementNonJquery(element) {
                    if (element && element.get) {
                        return element.get(0)
                    }
                    return element
                }
                let strategy = getPublicElementNonJquery
            },
        29489:
            /*!*******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/m_element_data.js ***!
              \*******************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.afterCleanData = function(callback) {
                    afterCleanDataFunc = callback
                };
                exports.beforeCleanData = function(callback) {
                    beforeCleanDataFunc = callback
                };
                exports.cleanData = function(nodes) {
                    return strategy.cleanData.call(this, nodes)
                };
                exports.cleanDataRecursive = function(element, cleanSelf) {
                    if (!_dom_adapter.default.isElementNode(element)) {
                        return
                    }
                    const childElements = element.getElementsByTagName("*");
                    strategy.cleanData(childElements);
                    if (cleanSelf) {
                        strategy.cleanData([element])
                    }
                };
                exports.data = function() {
                    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
                        args[_key] = arguments[_key]
                    }
                    return strategy.data.apply(this, args)
                };
                exports.getDataStrategy = function() {
                    return strategy
                };
                exports.removeData = function(element, key) {
                    return strategy.removeData.call(this, element, key)
                };
                exports.strategyChanging = exports.setDataStrategy = void 0;
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/core/events_engine */ 92774));
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../core/dom_adapter */ 64960));
                var _memorized_callbacks = _interopRequireDefault(__webpack_require__( /*! ../../core/memorized_callbacks */ 35329));

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const dataMap = new WeakMap;
                let strategy;
                const strategyChanging = exports.strategyChanging = new _memorized_callbacks.default;
                let beforeCleanDataFunc = function() {};
                let afterCleanDataFunc = function() {};
                const setDataStrategy = function(value) {
                    strategyChanging.fire(value);
                    strategy = value;
                    const {
                        cleanData: cleanData
                    } = strategy;
                    strategy.cleanData = function(nodes) {
                        beforeCleanDataFunc(nodes);
                        const result = cleanData.call(this, nodes);
                        afterCleanDataFunc(nodes);
                        return result
                    }
                };
                exports.setDataStrategy = setDataStrategy;
                setDataStrategy({
                    data: function() {
                        const element = arguments.length <= 0 ? void 0 : arguments[0];
                        const key = arguments.length <= 1 ? void 0 : arguments[1];
                        const value = arguments.length <= 2 ? void 0 : arguments[2];
                        if (!element) {
                            return
                        }
                        let elementData = dataMap.get(element);
                        if (!elementData) {
                            elementData = {};
                            dataMap.set(element, elementData)
                        }
                        if (void 0 === key) {
                            return elementData
                        }
                        if (2 === arguments.length) {
                            return elementData[key]
                        }
                        elementData[key] = value;
                        return value
                    },
                    removeData: function(element, key) {
                        if (!element) {
                            return
                        }
                        if (void 0 === key) {
                            dataMap.delete(element)
                        } else {
                            const elementData = dataMap.get(element);
                            if (elementData) {
                                delete elementData[key]
                            }
                        }
                    },
                    cleanData: function(elements) {
                        for (let i = 0; i < elements.length; i++) {
                            _events_engine.default.off(elements[i]);
                            dataMap.delete(elements[i])
                        }
                    }
                })
            },
        5583:
            /*!*************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/m_errors.js ***!
              \*************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _error = (e = __webpack_require__( /*! ../../core/utils/error */ 67264), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                exports.default = (0, _error.default)({
                    E0001: "Method is not implemented",
                    E0002: "Member name collision: {0}",
                    E0003: "A class must be instantiated using the 'new' keyword",
                    E0004: "The NAME property of the component is not specified",
                    E0005: "Unknown device",
                    E0006: "Unknown endpoint key is requested",
                    E0007: "'Invalidate' method is called outside the update transaction",
                    E0008: "Type of the option name is not appropriate to create an action",
                    E0009: "Component '{0}' has not been initialized for an element",
                    E0010: "Animation configuration with the '{0}' type requires '{1}' configuration as {2}",
                    E0011: "Unknown animation type '{0}'",
                    E0012: "jQuery version is too old. Please upgrade jQuery to 1.10.0 or later",
                    E0013: "KnockoutJS version is too old. Please upgrade KnockoutJS to 2.3.0 or later",
                    E0014: "The 'release' method shouldn't be called for an unlocked Lock object",
                    E0015: "Queued task returned an unexpected result",
                    E0017: "Event namespace is not defined",
                    E0018: "DevExpress.ui.DevExpressPopup widget is required",
                    E0020: "Template engine '{0}' is not supported",
                    E0021: "Unknown theme is set: {0}",
                    E0022: "LINK[rel=DevExpress-theme] tags must go before DevExpress included scripts",
                    E0023: "Template name is not specified",
                    E0024: "DevExtreme bundle already included",
                    E0025: "Unexpected argument type",
                    E0100: "Unknown validation type is detected",
                    E0101: "Misconfigured range validation rule is detected",
                    E0102: "Misconfigured comparison validation rule is detected",
                    E0103: "validationCallback of an asynchronous rule should return a jQuery or a native promise",
                    E0110: "Unknown validation group is detected",
                    E0120: "Adapter for a DevExpressValidator component cannot be configured",
                    E0121: "The 'customItem' parameter of the 'onCustomItemCreating' function is empty or contains invalid data. Assign a custom object or a Promise that is resolved after the item is created.",
                    E0122: "AIIntegration: The sendRequest method is missing.",
                    W0000: "'{0}' is deprecated in {1}. {2}",
                    W0001: "{0} - '{1}' option is deprecated in {2}. {3}",
                    W0002: "{0} - '{1}' method is deprecated in {2}. {3}",
                    W0003: "{0} - '{1}' property is deprecated in {2}. {3}",
                    W0004: "Timeout for theme loading is over: {0}",
                    W0005: "'{0}' event is deprecated in {1}. {2}",
                    W0006: "Invalid recurrence rule: '{0}'",
                    W0007: "'{0}' Globalize culture is not defined",
                    W0008: "Invalid view name: '{0}'",
                    W0009: "Invalid time zone name: '{0}'",
                    W0010: "{0} is deprecated in {1}. {2}",
                    W0011: "Number parsing is invoked while the parser is not defined",
                    W0012: "Date parsing is invoked while the parser is not defined",
                    W0013: "'{0}' file is deprecated in {1}. {2}",
                    W0014: "{0} - '{1}' type is deprecated in {2}. {3}",
                    W0015: "Instead of returning a value from the '{0}' function, write it into the '{1}' field of the function's parameter.",
                    W0016: 'The "{0}" option does not accept the "{1}" value since v{2}. {3}.',
                    W0017: 'Setting the "{0}" property with a function is deprecated since v21.2',
                    W0018: 'Setting the "position" property with a function is deprecated since v21.2',
                    W0019: "DevExtreme: Unable to Locate a Valid License Key.\n\nDetailed license/registration related information and instructions: https://js.devexpress.com/Documentation/Licensing/.\n\nIf you are using a 30-day trial version of DevExtreme, you must uninstall all copies of DevExtreme once your 30-day trial period expires. For terms and conditions that govern use of DevExtreme UI components/libraries, please refer to the DevExtreme End User License Agreement: https://js.devexpress.com/EULAs/DevExtremeComplete.\n\nTo use DevExtreme in a commercial project, you must purchase a license. For pricing/licensing options, please visit: https://js.devexpress.com/Buy.\n\nIf you have licensing-related questions or need help with a purchase, please email clientservices@devexpress.com.\n\n",
                    W0020: "DevExtreme: License Key Has Expired.\n\nDetailed license/registration related information and instructions: https://js.devexpress.com/Documentation/Licensing/.\n\nA mismatch exists between the license key used and the DevExtreme version referenced in this project.\n\nTo proceed, you can:\n\u2022 use a version of DevExtreme linked to your license key: https://www.devexpress.com/ClientCenter/DownloadManager\n\u2022 renew your DevExpress Subscription: https://www.devexpress.com/buy/renew (once you renew your subscription, you will be entitled to product updates and support service as defined in the DevExtreme End User License Agreement)\n\nIf you have licensing-related questions or need help with a renewal, please email clientservices@devexpress.com.\n\n",
                    W0021: "DevExtreme: License Key Verification Has Failed.\n\nDetailed license/registration related information and instructions: https://js.devexpress.com/Documentation/Licensing/.\n\nTo verify your DevExtreme license, make certain to specify a correct key in the GlobalConfig. If you continue to encounter this error, please visit https://www.devexpress.com/ClientCenter/DownloadManager to obtain a valid license key.\n\nIf you have a valid license and this problem persists, please submit a support ticket via the DevExpress Support Center. We will be happy to follow-up: https://supportcenter.devexpress.com/ticket/create.\n\n",
                    W0022: "DevExtreme: Pre-release software. Not suitable for commercial use.\n\nDetailed license/registration related information and instructions: https://js.devexpress.com/Documentation/Licensing/.\n\nPre-release software may contain deficiencies and as such, should not be considered for use or integrated in any mission critical application.\n\n",
                    W0023: "DevExtreme: the following 'devextreme' package version does not match versions of other DevExpress products used in this application:\n\n{0}\n\nInteroperability between different versions of the products listed herein cannot be guaranteed.\n\n"
                })
            },
        14201:
            /*!**********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/m_events_strategy.js ***!
              \**********************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.EventsStrategy = void 0;
                var _callbacks = (e = __webpack_require__( /*! ../../core/utils/callbacks */ 84718), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 21274);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 11528);
                class EventsStrategy {
                    constructor(owner) {
                        let options = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
                        this._events = {};
                        this._owner = owner;
                        this._options = options
                    }
                    static create(owner, strategy) {
                        if (strategy) {
                            return (0, _type.isFunction)(strategy) ? strategy(owner) : strategy
                        }
                        return new EventsStrategy(owner)
                    }
                    hasEvent(eventName) {
                        const callbacks = this._events[eventName];
                        return callbacks ? callbacks.has() : false
                    }
                    fireEvent(eventName, eventArgs) {
                        const callbacks = this._events[eventName];
                        if (callbacks) {
                            callbacks.fireWith(this._owner, eventArgs)
                        }
                        return this._owner
                    }
                    on(eventName, eventHandler) {
                        if ((0, _type.isPlainObject)(eventName)) {
                            (0, _iterator.each)(eventName, ((e, h) => {
                                this.on(e, h)
                            }))
                        } else {
                            let callbacks = this._events[eventName];
                            if (!callbacks) {
                                callbacks = (0, _callbacks.default)({
                                    syncStrategy: this._options.syncStrategy
                                });
                                this._events[eventName] = callbacks
                            }
                            const addFn = callbacks.originalAdd || callbacks.add;
                            addFn.call(callbacks, eventHandler)
                        }
                    }
                    off(eventName, eventHandler) {
                        const callbacks = this._events[eventName];
                        if (callbacks) {
                            if ((0, _type.isFunction)(eventHandler)) {
                                callbacks.remove(eventHandler)
                            } else {
                                callbacks.empty()
                            }
                        }
                    }
                    dispose() {
                        (0, _iterator.each)(this._events, ((eventName, event) => {
                            event.empty()
                        }))
                    }
                }
                exports.EventsStrategy = EventsStrategy
            },
        7201:
            /*!***********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/m_guid.js ***!
              \***********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.Guid = void 0;
                var _class = (e = __webpack_require__( /*! ../../core/class */ 55620), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                exports.Guid = _class.default.inherit({
                    ctor: function(value) {
                        if (value) {
                            value = String(value)
                        }
                        this._value = this._normalize(value || this._generate())
                    },
                    _normalize: function(value) {
                        value = value.replace(/[^a-f0-9]/gi, "").toLowerCase();
                        while (value.length < 32) {
                            value += "0"
                        }
                        return [value.substr(0, 8), value.substr(8, 4), value.substr(12, 4), value.substr(16, 4), value.substr(20, 12)].join("-")
                    },
                    _generate: function() {
                        let value = "";
                        for (let i = 0; i < 32; i++) {
                            value += Math.round(15 * Math.random()).toString(16)
                        }
                        return value
                    },
                    toString: function() {
                        return this._value
                    },
                    valueOf: function() {
                        return this._value
                    },
                    toJSON: function() {
                        return this._value
                    }
                })
            },
        58670:
            /*!*******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/m_http_request.js ***!
              \*******************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.httpRequest = void 0;
                var _dependency_injector = (e = __webpack_require__( /*! ../../core/utils/dependency_injector */ 89656), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                var _window = __webpack_require__( /*! ../../core/utils/window */ 3104);
                const window = (0, _window.getWindow)();
                const nativeXMLHttpRequest = {
                    getXhr: () => new window.XMLHttpRequest
                };
                exports.httpRequest = (0, _dependency_injector.default)(nativeXMLHttpRequest)
            },
        21327:
            /*!***********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/m_inferno_renderer.js ***!
              \***********************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.infernoRenderer = void 0;
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../core/dom_adapter */ 64960));
                var _element_data = __webpack_require__( /*! ../../core/element_data */ 74663);
                var _dependency_injector = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/dependency_injector */ 89656));
                var _index = __webpack_require__( /*! ../core/r1/runtime/inferno/index */ 6257);
                var _inferno = __webpack_require__( /*! inferno */ 76231);
                var _infernoCreateElement = __webpack_require__( /*! inferno-create-element */ 12887);

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const remove = element => {
                    const {
                        parentNode: parentNode
                    } = element;
                    if (parentNode) {
                        const {
                            nextSibling: nextSibling
                        } = element;
                        (0, _element_data.cleanDataRecursive)(element);
                        parentNode.$V = element.$V;
                        (0, _inferno.render)(null, parentNode);
                        parentNode.insertBefore(element, nextSibling);
                        element.innerHTML = "";
                        delete parentNode.$V
                    }
                    delete element.$V
                };
                exports.infernoRenderer = (0, _dependency_injector.default)({
                    createElement: (component, props) => (0, _infernoCreateElement.createElement)(component, props),
                    remove: remove,
                    onAfterRender: () => {
                        _index.InfernoEffectHost.callEffects()
                    },
                    onPreRender: () => {
                        _index.InfernoEffectHost.lock()
                    },
                    render: (component, props, container, replace) => {
                        if (!replace) {
                            const {
                                parentNode: parentNode
                            } = container;
                            const nextNode = null === container || void 0 === container ? void 0 : container.nextSibling;
                            const rootNode = _dom_adapter.default.createElement("div");
                            rootNode.appendChild(container);
                            const mountNode = _dom_adapter.default.createDocumentFragment().appendChild(rootNode);
                            const vNodeAlreadyExists = !!container.$V;
                            vNodeAlreadyExists && remove(container);
                            (0, _index.hydrate)((0, _infernoCreateElement.createElement)(component, props), mountNode);
                            container.$V = mountNode.$V;
                            if (parentNode) {
                                parentNode.insertBefore(container, nextNode)
                            }
                        } else {
                            (0, _inferno.render)((0, _infernoCreateElement.createElement)(component, props), container)
                        }
                    },
                    renderIntoContainer: (jsx, container, replace) => {
                        if (!replace) {
                            (0, _index.hydrate)(jsx, container)
                        } else {
                            (0, _inferno.render)(jsx, container)
                        }
                    }
                })
            },
        87107:
            /*!**************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/m_memorized_callbacks.js ***!
              \**************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.MemorizedCallbacks = void 0;
                var _callbacks = (e = __webpack_require__( /*! ../../core/utils/callbacks */ 84718), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 21274);
                exports.MemorizedCallbacks = class {
                    constructor() {
                        this.memory = [];
                        this.callbacks = (0, _callbacks.default)()
                    }
                    add(fn) {
                        (0, _iterator.each)(this.memory, ((_, item) => fn.apply(fn, item)));
                        this.callbacks.add(fn)
                    }
                    remove(fn) {
                        this.callbacks.remove(fn)
                    }
                    fire() {
                        for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
                            args[_key] = arguments[_key]
                        }
                        this.memory.push(args);
                        this.callbacks.fire.apply(this.callbacks, args)
                    }
                }
            },
        45693:
            /*!***************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/m_postponed_operations.js ***!
              \***************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.PostponedOperations = void 0;
                var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 87739);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 11528);
                exports.PostponedOperations = class {
                    constructor() {
                        this._postponedOperations = {}
                    }
                    add(key, fn, postponedPromise) {
                        if (key in this._postponedOperations) {
                            postponedPromise && this._postponedOperations[key].promises.push(postponedPromise)
                        } else {
                            const completePromise = new _deferred.Deferred;
                            this._postponedOperations[key] = {
                                fn: fn,
                                completePromise: completePromise,
                                promises: postponedPromise ? [postponedPromise] : []
                            }
                        }
                        return this._postponedOperations[key].completePromise.promise()
                    }
                    callPostponedOperations() {
                        for (const key in this._postponedOperations) {
                            const operation = this._postponedOperations[key];
                            if ((0, _type.isDefined)(operation)) {
                                if (operation.promises && operation.promises.length) {
                                    (0, _deferred.when)(...operation.promises).done(operation.fn).then(operation.completePromise.resolve)
                                } else {
                                    operation.fn().done(operation.completePromise.resolve)
                                }
                            }
                        }
                        this._postponedOperations = {}
                    }
                }
            },
        95539:
            /*!***************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/m_renderer.js ***!
              \***************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.renderer = exports.default = void 0;
                var _renderer_base = (e = __webpack_require__( /*! ../../core/renderer_base */ 21681), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                const renderer = exports.renderer = _renderer_base.default.get();
                exports.default = renderer
            },
        1811:
            /*!********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/m_renderer_base.js ***!
              \********************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _dom_adapter = (e = __webpack_require__( /*! ../../core/dom_adapter */ 64960), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                var _element_data = __webpack_require__( /*! ../../core/element_data */ 74663);
                var _html_parser = __webpack_require__( /*! ../../core/utils/html_parser */ 23563);
                var _size = __webpack_require__( /*! ../../core/utils/size */ 57653);
                var _style = __webpack_require__( /*! ../../core/utils/style */ 58515);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 11528);
                var _window = __webpack_require__( /*! ../../core/utils/window */ 3104);
                const window = (0, _window.getWindow)();
                let renderer;
                const initRender = function(selector, context) {
                    if (!selector) {
                        this.length = 0;
                        return this
                    }
                    if ("string" === typeof selector) {
                        if ("body" === selector) {
                            this[0] = context ? context.body : _dom_adapter.default.getBody();
                            this.length = 1;
                            return this
                        }
                        context = context || _dom_adapter.default.getDocument();
                        if (selector.startsWith("<")) {
                            this[0] = _dom_adapter.default.createElement(selector.slice(1, -1), context);
                            this.length = 1;
                            return this
                        } [].push.apply(this, _dom_adapter.default.querySelectorAll(context, selector));
                        return this
                    }
                    if (_dom_adapter.default.isNode(selector) || (0, _type.isWindow)(selector)) {
                        this[0] = selector;
                        this.length = 1;
                        return this
                    }
                    if (Array.isArray(selector)) {
                        [].push.apply(this, selector);
                        return this
                    }
                    return renderer(selector.toArray ? selector.toArray() : [selector])
                };
                renderer = function(selector, context) {
                    return new initRender(selector, context)
                };
                renderer.fn = {
                    dxRenderer: true
                };
                initRender.prototype = renderer.fn;
                const repeatMethod = function(methodName, args) {
                    for (let i = 0; i < this.length; i++) {
                        const item = renderer(this[i]);
                        item[methodName].apply(item, args)
                    }
                    return this
                };
                const setAttributeValue = function(element, attrName, value) {
                    if (void 0 !== value && null !== value && false !== value) {
                        _dom_adapter.default.setAttribute(element, attrName, value)
                    } else {
                        _dom_adapter.default.removeAttribute(element, attrName)
                    }
                };
                initRender.prototype.show = function() {
                    return this.toggle(true)
                };
                initRender.prototype.hide = function() {
                    return this.toggle(false)
                };
                initRender.prototype.toggle = function(value) {
                    if (this[0]) {
                        this.toggleClass("dx-state-invisible", !value)
                    }
                    return this
                };
                initRender.prototype.attr = function(attrName, value) {
                    if (this.length > 1 && arguments.length > 1) {
                        return repeatMethod.call(this, "attr", arguments)
                    }
                    if (!this[0]) {
                        if ((0, _type.isObject)(attrName) || void 0 !== value) {
                            return this
                        }
                        return
                    }
                    if (!this[0].getAttribute) {
                        return this.prop(attrName, value)
                    }
                    if ("string" === typeof attrName && 1 === arguments.length) {
                        const result = this[0].getAttribute(attrName);
                        return null == result ? void 0 : result
                    }
                    if ((0, _type.isPlainObject)(attrName)) {
                        for (const key in attrName) {
                            this.attr(key, attrName[key])
                        }
                    } else {
                        setAttributeValue(this[0], attrName, value)
                    }
                    return this
                };
                initRender.prototype.removeAttr = function(attrName) {
                    this.each((function(_, element) {
                        _dom_adapter.default.removeAttribute(element, attrName)
                    }));
                    return this
                };
                initRender.prototype.prop = function(propName, value) {
                    if (!this[0]) {
                        return this
                    }
                    if ("string" === typeof propName && 1 === arguments.length) {
                        return this[0][propName]
                    }
                    if ((0, _type.isPlainObject)(propName)) {
                        for (const key in propName) {
                            this.prop(key, propName[key])
                        }
                    } else {
                        _dom_adapter.default.setProperty(this[0], propName, value)
                    }
                    return this
                };
                initRender.prototype.addClass = function(className) {
                    return this.toggleClass(className, true)
                };
                initRender.prototype.removeClass = function(className) {
                    return this.toggleClass(className, false)
                };
                initRender.prototype.hasClass = function(className) {
                    if (!this[0] || void 0 === this[0].className) {
                        return false
                    }
                    const classNames = className.split(" ");
                    for (let i = 0; i < classNames.length; i++) {
                        if (this[0].classList) {
                            if (this[0].classList.contains(classNames[i])) {
                                return true
                            }
                        } else {
                            const className = (0, _type.isString)(this[0].className) ? this[0].className : _dom_adapter.default.getAttribute(this[0], "class");
                            if ((className || "").split(" ").indexOf(classNames[i]) >= 0) {
                                return true
                            }
                        }
                    }
                    return false
                };
                initRender.prototype.toggleClass = function(className, value) {
                    if (this.length > 1) {
                        return repeatMethod.call(this, "toggleClass", arguments)
                    }
                    if (!this[0] || !className) {
                        return this
                    }
                    value = void 0 === value ? !this.hasClass(className) : value;
                    const classNames = className.split(" ");
                    for (let i = 0; i < classNames.length; i++) {
                        _dom_adapter.default.setClass(this[0], classNames[i], value)
                    }
                    return this
                };
                initRender.prototype.html = function(value) {
                    if (!arguments.length) {
                        return this[0].innerHTML
                    }
                    this.empty();
                    if ("string" === typeof value && !(0, _html_parser.isTablePart)(value) || "number" === typeof value) {
                        this[0].innerHTML = value;
                        return this
                    }
                    return this.append((0, _html_parser.parseHTML)(value))
                };
                const appendElements = function(element, nextSibling) {
                    if (!this[0] || !element) {
                        return
                    }
                    if ("string" === typeof element) {
                        element = (0, _html_parser.parseHTML)(element)
                    } else if (element.nodeType) {
                        element = [element]
                    } else if ((0, _type.isNumeric)(element)) {
                        element = [_dom_adapter.default.createTextNode(element)]
                    }
                    for (let i = 0; i < element.length; i++) {
                        const item = element[i];
                        let container = this[0];
                        const wrapTR = "TABLE" === container.tagName && "TR" === item.tagName;
                        if (wrapTR && container.tBodies && container.tBodies.length) {
                            container = container.tBodies[0]
                        }
                        _dom_adapter.default.insertElement(container, item.nodeType ? item : item[0], nextSibling)
                    }
                };
                const setCss = function(name, value) {
                    if (!this[0] || !this[0].style) {
                        return
                    }
                    if (null === value || "number" === typeof value && isNaN(value)) {
                        return
                    }
                    name = (0, _style.styleProp)(name);
                    for (let i = 0; i < this.length; i++) {
                        this[i].style[name] = (0, _style.normalizeStyleProp)(name, value)
                    }
                };
                initRender.prototype.css = function(name, value) {
                    if ((0, _type.isString)(name)) {
                        if (2 === arguments.length) {
                            setCss.call(this, name, value)
                        } else {
                            if (!this[0]) {
                                return
                            }
                            name = (0, _style.styleProp)(name);
                            const result = window.getComputedStyle(this[0])[name] || this[0].style[name];
                            return (0, _type.isNumeric)(result) ? result.toString() : result
                        }
                    } else if ((0, _type.isPlainObject)(name)) {
                        for (const key in name) {
                            setCss.call(this, key, name[key])
                        }
                    }
                    return this
                };
                initRender.prototype.prepend = function(element) {
                    if (arguments.length > 1) {
                        for (let i = 0; i < arguments.length; i++) {
                            this.prepend(arguments[i])
                        }
                        return this
                    }
                    appendElements.apply(this, [element, this[0].firstChild]);
                    return this
                };
                initRender.prototype.append = function(element) {
                    if (arguments.length > 1) {
                        for (let i = 0; i < arguments.length; i++) {
                            this.append(arguments[i])
                        }
                        return this
                    }
                    appendElements.apply(this, [element]);
                    return this
                };
                initRender.prototype.prependTo = function(element) {
                    if (this.length > 1) {
                        for (let i = this.length - 1; i >= 0; i--) {
                            renderer(this[i]).prependTo(element)
                        }
                        return this
                    }
                    element = renderer(element);
                    if (element[0]) {
                        _dom_adapter.default.insertElement(element[0], this[0], element[0].firstChild)
                    }
                    return this
                };
                initRender.prototype.appendTo = function(element) {
                    if (this.length > 1) {
                        return repeatMethod.call(this, "appendTo", arguments)
                    }
                    _dom_adapter.default.insertElement(renderer(element)[0], this[0]);
                    return this
                };
                initRender.prototype.insertBefore = function(element) {
                    if (element && element[0]) {
                        _dom_adapter.default.insertElement(element[0].parentNode, this[0], element[0])
                    }
                    return this
                };
                initRender.prototype.insertAfter = function(element) {
                    if (element && element[0]) {
                        _dom_adapter.default.insertElement(element[0].parentNode, this[0], element[0].nextSibling)
                    }
                    return this
                };
                initRender.prototype.before = function(element) {
                    if (this[0]) {
                        _dom_adapter.default.insertElement(this[0].parentNode, element[0], this[0])
                    }
                    return this
                };
                initRender.prototype.after = function(element) {
                    if (this[0]) {
                        _dom_adapter.default.insertElement(this[0].parentNode, element[0], this[0].nextSibling)
                    }
                    return this
                };
                initRender.prototype.wrap = function(wrapper) {
                    if (this[0]) {
                        const wrap = renderer(wrapper);
                        wrap.insertBefore(this);
                        wrap.append(this)
                    }
                    return this
                };
                initRender.prototype.wrapInner = function(wrapper) {
                    const contents = this.contents();
                    if (contents.length) {
                        contents.wrap(wrapper)
                    } else {
                        this.append(wrapper)
                    }
                    return this
                };
                initRender.prototype.replaceWith = function(element) {
                    if (!(element && element[0])) {
                        return
                    }
                    if (element.is(this)) {
                        return this
                    }
                    element.insertBefore(this);
                    this.remove();
                    return element
                };
                initRender.prototype.remove = function() {
                    if (this.length > 1) {
                        return repeatMethod.call(this, "remove", arguments)
                    }(0, _element_data.cleanDataRecursive)(this[0], true);
                    _dom_adapter.default.removeElement(this[0]);
                    return this
                };
                initRender.prototype.detach = function() {
                    if (this.length > 1) {
                        return repeatMethod.call(this, "detach", arguments)
                    }
                    _dom_adapter.default.removeElement(this[0]);
                    return this
                };
                initRender.prototype.empty = function() {
                    if (this.length > 1) {
                        return repeatMethod.call(this, "empty", arguments)
                    }(0, _element_data.cleanDataRecursive)(this[0]);
                    _dom_adapter.default.setText(this[0], "");
                    return this
                };
                initRender.prototype.clone = function() {
                    const result = [];
                    for (let i = 0; i < this.length; i++) {
                        result.push(this[i].cloneNode(true))
                    }
                    return renderer(result)
                };
                initRender.prototype.text = function(value) {
                    if (!arguments.length) {
                        let result = "";
                        for (let i = 0; i < this.length; i++) {
                            result += this[i] && this[i].textContent || ""
                        }
                        return result
                    }
                    const text = (0, _type.isFunction)(value) ? value() : value;
                    (0, _element_data.cleanDataRecursive)(this[0], false);
                    _dom_adapter.default.setText(this[0], (0, _type.isDefined)(text) ? text : "");
                    return this
                };
                initRender.prototype.val = function(value) {
                    if (1 === arguments.length) {
                        return this.prop("value", (0, _type.isDefined)(value) ? value : "")
                    }
                    return this.prop("value")
                };
                initRender.prototype.contents = function() {
                    if (!this[0]) {
                        return renderer()
                    }
                    const result = [];
                    result.push.apply(result, this[0].childNodes);
                    return renderer(result)
                };
                initRender.prototype.find = function(selector) {
                    const result = renderer();
                    if (!selector) {
                        return result
                    }
                    const nodes = [];
                    let i;
                    if ("string" === typeof selector) {
                        selector = selector.trim();
                        for (i = 0; i < this.length; i++) {
                            const element = this[i];
                            if (_dom_adapter.default.isElementNode(element)) {
                                const elementId = element.getAttribute("id");
                                let queryId = elementId || "dx-query-children";
                                if (!elementId) {
                                    setAttributeValue(element, "id", queryId)
                                }
                                queryId = `[id='${queryId}'] `;
                                const querySelector = queryId + selector.replace(/([^\\])(,)/g, `$1, ${queryId}`);
                                nodes.push.apply(nodes, _dom_adapter.default.querySelectorAll(element, querySelector));
                                setAttributeValue(element, "id", elementId)
                            } else if (_dom_adapter.default.isDocument(element) || _dom_adapter.default.isDocumentFragment(element)) {
                                nodes.push.apply(nodes, _dom_adapter.default.querySelectorAll(element, selector))
                            }
                        }
                    } else {
                        for (i = 0; i < this.length; i++) {
                            selector = _dom_adapter.default.isNode(selector) ? selector : selector[0];
                            if (this[i] !== selector && this[i].contains(selector)) {
                                nodes.push(selector)
                            }
                        }
                    }
                    return result.add(nodes)
                };
                const isVisible = function(_, element) {
                    var _element$getClientRec, _element;
                    element = element.host ?? element;
                    if (!element.nodeType) {
                        return true
                    }
                    return !!(element.offsetWidth || element.offsetHeight || null !== (_element$getClientRec = (_element = element).getClientRects) && void 0 !== _element$getClientRec && _element$getClientRec.call(_element).length)
                };
                initRender.prototype.filter = function(selector) {
                    if (!selector) {
                        return renderer()
                    }
                    if (":visible" === selector) {
                        return this.filter(isVisible)
                    }
                    if (":hidden" === selector) {
                        return this.filter((function(_, element) {
                            return !isVisible(0, element)
                        }))
                    }
                    const result = [];
                    for (let i = 0; i < this.length; i++) {
                        const item = this[i];
                        if (_dom_adapter.default.isElementNode(item) && "string" === (0, _type.type)(selector)) {
                            _dom_adapter.default.elementMatches(item, selector) && result.push(item)
                        } else if (_dom_adapter.default.isNode(selector) || (0, _type.isWindow)(selector)) {
                            selector === item && result.push(item)
                        } else if ((0, _type.isFunction)(selector)) {
                            selector.call(item, i, item) && result.push(item)
                        } else {
                            for (let j = 0; j < selector.length; j++) {
                                selector[j] === item && result.push(item)
                            }
                        }
                    }
                    return renderer(result)
                };
                initRender.prototype.not = function(selector) {
                    const result = [];
                    const nodes = this.filter(selector).toArray();
                    for (let i = 0; i < this.length; i++) {
                        if (-1 === nodes.indexOf(this[i])) {
                            result.push(this[i])
                        }
                    }
                    return renderer(result)
                };
                initRender.prototype.is = function(selector) {
                    return !!this.filter(selector).length
                };
                initRender.prototype.children = function(selector) {
                    let result = [];
                    for (let i = 0; i < this.length; i++) {
                        const nodes = this[i] ? this[i].childNodes : [];
                        for (let j = 0; j < nodes.length; j++) {
                            if (_dom_adapter.default.isElementNode(nodes[j])) {
                                result.push(nodes[j])
                            }
                        }
                    }
                    result = renderer(result);
                    return selector ? result.filter(selector) : result
                };
                initRender.prototype.siblings = function() {
                    const element = this[0];
                    if (!element || !element.parentNode) {
                        return renderer()
                    }
                    const result = [];
                    const parentChildNodes = element.parentNode.childNodes || [];
                    for (let i = 0; i < parentChildNodes.length; i++) {
                        const node = parentChildNodes[i];
                        if (_dom_adapter.default.isElementNode(node) && node !== element) {
                            result.push(node)
                        }
                    }
                    return renderer(result)
                };
                initRender.prototype.each = function(callback) {
                    for (let i = 0; i < this.length; i++) {
                        if (false === callback.call(this[i], i, this[i])) {
                            break
                        }
                    }
                };
                initRender.prototype.index = function(element) {
                    if (!element) {
                        return this.parent().children().index(this)
                    }
                    element = renderer(element);
                    return this.toArray().indexOf(element[0])
                };
                initRender.prototype.get = function(index) {
                    return this[index < 0 ? this.length + index : index]
                };
                initRender.prototype.eq = function(index) {
                    index = index < 0 ? this.length + index : index;
                    return renderer(this[index])
                };
                initRender.prototype.first = function() {
                    return this.eq(0)
                };
                initRender.prototype.last = function() {
                    return this.eq(-1)
                };
                initRender.prototype.select = function() {
                    for (let i = 0; i < this.length; i += 1) {
                        this[i].select && this[i].select()
                    }
                    return this
                };
                initRender.prototype.parent = function(selector) {
                    if (!this[0]) {
                        return renderer()
                    }
                    const result = renderer(this[0].parentNode);
                    return !selector || result.is(selector) ? result : renderer()
                };
                initRender.prototype.parents = function(selector) {
                    const result = [];
                    let parent = this.parent();
                    while (parent && parent[0] && !_dom_adapter.default.isDocument(parent[0])) {
                        if (_dom_adapter.default.isElementNode(parent[0])) {
                            if (!selector || parent.is(selector)) {
                                result.push(parent.get(0))
                            }
                        }
                        parent = parent.parent()
                    }
                    return renderer(result)
                };
                initRender.prototype.closest = function(selector) {
                    if (this.is(selector)) {
                        return this
                    }
                    let parent = this.parent();
                    while (parent && parent.length) {
                        if (parent.is(selector)) {
                            return parent
                        }
                        parent = parent.parent()
                    }
                    return renderer()
                };
                initRender.prototype.next = function(selector) {
                    if (!this[0]) {
                        return renderer()
                    }
                    let next = renderer(this[0].nextSibling);
                    if (!arguments.length) {
                        return next
                    }
                    while (next && next.length) {
                        if (next.is(selector)) {
                            return next
                        }
                        next = next.next()
                    }
                    return renderer()
                };
                initRender.prototype.prev = function() {
                    if (!this[0]) {
                        return renderer()
                    }
                    return renderer(this[0].previousSibling)
                };
                initRender.prototype.add = function(selector) {
                    const targets = renderer(selector);
                    const result = this.toArray();
                    for (let i = 0; i < targets.length; i++) {
                        const target = targets[i];
                        if (-1 === result.indexOf(target)) {
                            result.push(target)
                        }
                    }
                    return renderer(result)
                };
                const emptyArray = [];
                initRender.prototype.splice = function() {
                    return renderer(emptyArray.splice.apply(this, arguments))
                };
                initRender.prototype.slice = function() {
                    return renderer(emptyArray.slice.apply(this, arguments))
                };
                initRender.prototype.toArray = function() {
                    return emptyArray.slice.call(this)
                };
                initRender.prototype.offset = function() {
                    if (!this[0]) {
                        return
                    }
                    return (0, _size.getOffset)(this[0])
                };
                initRender.prototype.offsetParent = function() {
                    if (!this[0]) {
                        return renderer()
                    }
                    let offsetParent = renderer(this[0].offsetParent);
                    while (offsetParent[0] && "static" === offsetParent.css("position")) {
                        offsetParent = renderer(offsetParent[0].offsetParent)
                    }
                    offsetParent = offsetParent[0] ? offsetParent : renderer(_dom_adapter.default.getDocumentElement());
                    return offsetParent
                };
                initRender.prototype.position = function() {
                    if (!this[0]) {
                        return
                    }
                    let offset;
                    const marginTop = parseFloat(this.css("marginTop"));
                    const marginLeft = parseFloat(this.css("marginLeft"));
                    if ("fixed" === this.css("position")) {
                        offset = this[0].getBoundingClientRect();
                        return {
                            top: offset.top - marginTop,
                            left: offset.left - marginLeft
                        }
                    }
                    offset = this.offset();
                    const offsetParent = this.offsetParent();
                    let parentOffset = {
                        top: 0,
                        left: 0
                    };
                    if ("HTML" !== offsetParent[0].nodeName) {
                        parentOffset = offsetParent.offset()
                    }
                    parentOffset = {
                        top: parentOffset.top + parseFloat(offsetParent.css("borderTopWidth")),
                        left: parentOffset.left + parseFloat(offsetParent.css("borderLeftWidth"))
                    };
                    return {
                        top: offset.top - parentOffset.top - marginTop,
                        left: offset.left - parentOffset.left - marginLeft
                    }
                };
                [{
                    name: "scrollLeft",
                    offsetProp: "pageXOffset",
                    scrollWindow: function(win, value) {
                        win.scrollTo(value, win.pageYOffset)
                    }
                }, {
                    name: "scrollTop",
                    offsetProp: "pageYOffset",
                    scrollWindow: function(win, value) {
                        win.scrollTo(win.pageXOffset, value)
                    }
                }].forEach((function(directionStrategy) {
                    const propName = directionStrategy.name;
                    initRender.prototype[propName] = function(value) {
                        if (!this[0]) {
                            return
                        }
                        const window = (0, _size.getWindowByElement)(this[0]);
                        if (void 0 === value) {
                            return window ? window[directionStrategy.offsetProp] : this[0][propName]
                        }
                        if (window) {
                            directionStrategy.scrollWindow(window, value)
                        } else {
                            this[0][propName] = value
                        }
                        return this
                    }
                }));
                initRender.prototype.data = function(key, value) {
                    if (!this[0]) {
                        return
                    }
                    if (arguments.length < 2) {
                        return _element_data.data.call(renderer, this[0], key)
                    }
                    _element_data.data.call(renderer, this[0], key, value);
                    return this
                };
                initRender.prototype.removeData = function(key) {
                    this[0] && (0, _element_data.removeData)(this[0], key);
                    return this
                };
                const rendererWrapper = function() {
                    return renderer.apply(this, arguments)
                };
                Object.defineProperty(rendererWrapper, "fn", {
                    enumerable: true,
                    configurable: true,
                    get: function() {
                        return renderer.fn
                    },
                    set: function(value) {
                        renderer.fn = value
                    }
                });
                exports.default = {
                    set: function(strategy) {
                        renderer = strategy
                    },
                    get: function() {
                        return rendererWrapper
                    }
                }
            },
        57785:
            /*!**********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/m_resize_observer.js ***!
              \**********************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.resizeObserverSingleton = void 0;
                var _common = __webpack_require__( /*! ../../core/utils/common */ 17781);
                var _m_window = (e = __webpack_require__( /*! ./utils/m_window */ 14470), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                const window = _m_window.default.getWindow();
                const ResizeObserverMock = {
                    observe: _common.noop,
                    unobserve: _common.noop,
                    disconnect: _common.noop
                };
                exports.resizeObserverSingleton = new class {
                    constructor() {
                        if (!_m_window.default.hasWindow() || !window.ResizeObserver) {
                            return ResizeObserverMock
                        }
                        this._callbacksMap = new Map;
                        this._observer = new window.ResizeObserver((entries => {
                            entries.forEach((entry => {
                                var _this$_callbacksMap$g;
                                null === (_this$_callbacksMap$g = this._callbacksMap.get(entry.target)) || void 0 === _this$_callbacksMap$g || _this$_callbacksMap$g(entry)
                            }))
                        }))
                    }
                    observe(element, callback) {
                        this._callbacksMap.set(element, callback);
                        this._observer.observe(element)
                    }
                    unobserve(element) {
                        this._callbacksMap.delete(element);
                        this._observer.unobserve(element)
                    }
                    disconnect() {
                        this._callbacksMap.clear();
                        this._observer.disconnect()
                    }
                }
            },
        61644:
            /*!**************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/m_set_template_engine.js ***!
              \**************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                Object.defineProperty(exports, "setTemplateEngine", {
                    enumerable: true,
                    get: function() {
                        return _template_engine_registry.setTemplateEngine
                    }
                });
                var _template_engine_registry = __webpack_require__( /*! ../../core/templates/template_engine_registry */ 35155)
            },
        66298:
            /*!***********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/m_template_manager.js ***!
              \***********************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = exports.TemplateManager = void 0;
                var _renderer = (e = __webpack_require__( /*! ../../core/renderer */ 64553), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                var _empty_template = __webpack_require__( /*! ../../core/templates/empty_template */ 48650);
                var _function_template = __webpack_require__( /*! ../../core/templates/function_template */ 38699);
                var _common = __webpack_require__( /*! ../../core/utils/common */ 17781);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576);
                var _template_manager = __webpack_require__( /*! ../../core/utils/template_manager */ 49194);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 11528);
                const DX_POLYMORPH_WIDGET_TEMPLATE = new _function_template.FunctionTemplate((_ref => {
                    let {
                        model: model,
                        parent: parent
                    } = _ref;
                    const widgetName = model.widget;
                    if (!widgetName) {
                        return (0, _renderer.default)()
                    }
                    const widgetElement = (0, _renderer.default)("<div>");
                    const widgetOptions = model.options || {};
                    if (parent) {
                        parent._createComponent(widgetElement, widgetName, widgetOptions)
                    } else {
                        widgetElement[widgetName](widgetOptions)
                    }
                    return widgetElement
                }));
                class TemplateManager {
                    constructor(createElement, anonymousTemplateName) {
                        this._tempTemplates = [];
                        this._defaultTemplates = {};
                        this._anonymousTemplateName = anonymousTemplateName || "template";
                        this._createElement = createElement || _template_manager.defaultCreateElement;
                        this._createTemplateIfNeeded = this._createTemplateIfNeeded.bind(this)
                    }
                    static createDefaultOptions() {
                        return {
                            integrationOptions: {
                                watchMethod: function(fn, callback) {
                                    let options = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};
                                    if (!options.skipImmediate) {
                                        callback(fn())
                                    }
                                    return _common.noop
                                },
                                templates: {
                                    "dx-polymorph-widget": DX_POLYMORPH_WIDGET_TEMPLATE
                                },
                                useDeferUpdateForTemplates: true
                            }
                        }
                    }
                    get anonymousTemplateName() {
                        return this._anonymousTemplateName
                    }
                    addDefaultTemplates(templates) {
                        this._defaultTemplates = (0, _extend.extend)({}, this._defaultTemplates, templates)
                    }
                    dispose() {
                        this._tempTemplates.forEach((tempTemplate => {
                            tempTemplate.template.dispose && tempTemplate.template.dispose()
                        }));
                        this._tempTemplates = []
                    }
                    extractTemplates($el) {
                        const templates = this._extractTemplates($el);
                        const anonymousTemplateMeta = this._extractAnonymousTemplate($el);
                        return {
                            templates: templates,
                            anonymousTemplateMeta: anonymousTemplateMeta
                        }
                    }
                    _extractTemplates($el) {
                        const templates = (0, _template_manager.findTemplates)($el, "dxTemplate");
                        const suitableTemplates = (0, _template_manager.suitableTemplatesByName)(templates);
                        templates.forEach((_ref2 => {
                            let {
                                element: element,
                                options: {
                                    name: name
                                }
                            } = _ref2;
                            if (element === suitableTemplates[name]) {
                                (0, _renderer.default)(element).addClass("dx-template-wrapper").detach()
                            } else {
                                (0, _renderer.default)(element).remove()
                            }
                        }));
                        return Object.keys(suitableTemplates).map((name => ({
                            name: name,
                            template: this._createTemplate(suitableTemplates[name])
                        })))
                    }
                    _extractAnonymousTemplate($el) {
                        const $anonymousTemplate = $el.contents().detach();
                        const $notJunkTemplateContent = $anonymousTemplate.filter(((_, element) => {
                            const isTextNode = 3 === element.nodeType;
                            const isEmptyText = (0, _renderer.default)(element).text().trim().length < 1;
                            return !(isTextNode && isEmptyText)
                        }));
                        return $notJunkTemplateContent.length > 0 ? {
                            template: this._createTemplate($anonymousTemplate),
                            name: this._anonymousTemplateName
                        } : {}
                    }
                    _createTemplateIfNeeded(templateSource) {
                        const cachedTemplate = this._tempTemplates.filter((tempTemplate => tempTemplate.source === (0, _template_manager.templateKey)(templateSource)))[0];
                        if (cachedTemplate) {
                            return cachedTemplate.template
                        }
                        const template = this._createTemplate(templateSource);
                        this._tempTemplates.push({
                            template: template,
                            source: (0, _template_manager.templateKey)(templateSource)
                        });
                        return template
                    }
                    _createTemplate(templateSource) {
                        return this._createElement((0, _template_manager.validateTemplateSource)(templateSource))
                    }
                    getTemplate(templateSource, templates, _ref3, context) {
                        let {
                            isAsyncTemplate: isAsyncTemplate,
                            skipTemplates: skipTemplates
                        } = _ref3;
                        if (!(0, _type.isFunction)(templateSource)) {
                            return (0, _template_manager.acquireTemplate)(templateSource, this._createTemplateIfNeeded, templates, isAsyncTemplate, skipTemplates, this._defaultTemplates)
                        }
                        return new _function_template.FunctionTemplate((options => {
                            const templateSourceResult = templateSource.apply(context, (0, _template_manager.getNormalizedTemplateArgs)(options));
                            if (!(0, _type.isDefined)(templateSourceResult)) {
                                return new _empty_template.EmptyTemplate
                            }
                            let dispose = false;
                            const template = (0, _template_manager.acquireTemplate)(templateSourceResult, (templateSource => {
                                if (templateSource.nodeType || (0, _type.isRenderer)(templateSource) && !(0, _renderer.default)(templateSource).is("script")) {
                                    return new _function_template.FunctionTemplate((() => templateSource))
                                }
                                dispose = true;
                                return this._createTemplate(templateSource)
                            }), templates, isAsyncTemplate, skipTemplates, this._defaultTemplates);
                            const result = template.render(options);
                            dispose && template.dispose && template.dispose();
                            return result
                        }))
                    }
                }
                exports.TemplateManager = TemplateManager;
                exports.default = {
                    TemplateManager: TemplateManager
                }
            },
        43399:
            /*!********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/options/m_index.js ***!
              \********************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.Options = void 0;
                var _option_manager = __webpack_require__( /*! ../../../core/options/option_manager */ 1896);
                var _utils = __webpack_require__( /*! ../../../core/options/utils */ 53904);
                var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781);
                var _data = __webpack_require__( /*! ../../../core/utils/data */ 31e3);
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576);
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528);

                function _extends() {
                    return _extends = Object.assign ? Object.assign.bind() : function(n) {
                        for (var e = 1; e < arguments.length; e++) {
                            var t = arguments[e];
                            for (var r in t) {
                                ({}).hasOwnProperty.call(t, r) && (n[r] = t[r])
                            }
                        }
                        return n
                    }, _extends.apply(null, arguments)
                }
                exports.Options = class {
                    constructor(options, defaultOptions, optionsByReference, deprecatedOptions) {
                        this._deprecatedCallback;
                        this._startChangeCallback;
                        this._endChangeCallback;
                        this._validateOptionsCallback;
                        this._default = defaultOptions;
                        this._deprecated = deprecatedOptions;
                        this._deprecatedNames = [];
                        this._initDeprecatedNames();
                        this._optionManager = new _option_manager.OptionManager(options, optionsByReference);
                        this._optionManager.onRelevantNamesPrepared(((options, name, value, silent) => this._setRelevantNames(options, name, value, silent)));
                        this._cachedOptions = {};
                        this._rules = []
                    }
                    set _initial(value) {
                        this._initialOptions = value
                    }
                    get _initial() {
                        if (!this._initialOptions) {
                            const rulesOptions = this._getByRules(this.silent("defaultOptionsRules"));
                            this._initialOptions = this._default;
                            this._optionManager._setByReference(this._initialOptions, rulesOptions)
                        }
                        return this._initialOptions
                    }
                    _initDeprecatedNames() {
                        for (const optionName in this._deprecated) {
                            this._deprecatedNames.push(optionName)
                        }
                    }
                    _getByRules(rules) {
                        rules = Array.isArray(rules) ? this._rules.concat(rules) : this._rules;
                        return (0, _utils.convertRulesToOptions)(rules)
                    }
                    _notifyDeprecated(option) {
                        const info = this._deprecated[option];
                        if (info) {
                            this._deprecatedCallback(option, info)
                        }
                    }
                    _setRelevantNames(options, name, value, silent) {
                        if (name) {
                            const normalizedName = this._normalizeName(name, silent);
                            if (normalizedName && normalizedName !== name) {
                                this._setField(options, normalizedName, value);
                                this._clearField(options, name)
                            }
                        }
                    }
                    _setField(options, fullName, value) {
                        let fieldName = "";
                        let fieldObject = null;
                        do {
                            fieldName = fieldName ? `.${fieldName}` : "";
                            fieldName = (0, _utils.getFieldName)(fullName) + fieldName;
                            fullName = (0, _utils.getParentName)(fullName);
                            fieldObject = fullName ? this._optionManager.get(options, fullName, false) : options
                        } while (!fieldObject);
                        fieldObject[fieldName] = value
                    }
                    _clearField(options, name) {
                        delete options[name];
                        const previousFieldName = (0, _utils.getParentName)(name);
                        const fieldObject = previousFieldName ? this._optionManager.get(options, previousFieldName, false) : options;
                        if (fieldObject) {
                            delete fieldObject[(0, _utils.getFieldName)(name)]
                        }
                    }
                    _normalizeName(name, silent) {
                        if (this._deprecatedNames.length && name) {
                            for (let i = 0; i < this._deprecatedNames.length; i++) {
                                if (this._deprecatedNames[i] === name) {
                                    const deprecate = this._deprecated[name];
                                    if (deprecate) {
                                        !silent && this._notifyDeprecated(name);
                                        return deprecate.alias || name
                                    }
                                }
                            }
                        }
                        return name
                    }
                    addRules(rules) {
                        this._rules = rules.concat(this._rules)
                    }
                    applyRules(rules) {
                        const options = this._getByRules(rules);
                        this.silent(options)
                    }
                    dispose() {
                        this._deprecatedCallback = _common.noop;
                        this._startChangeCallback = _common.noop;
                        this._endChangeCallback = _common.noop;
                        this._optionManager.dispose()
                    }
                    onChanging(callBack) {
                        this._optionManager.onChanging(callBack)
                    }
                    onChanged(callBack) {
                        this._optionManager.onChanged(callBack)
                    }
                    validateOptions(callBack) {
                        this._optionManager.onValidateOptions(callBack)
                    }
                    onDeprecated(callBack) {
                        this._deprecatedCallback = callBack
                    }
                    onStartChange(callBack) {
                        this._startChangeCallback = callBack
                    }
                    onEndChange(callBack) {
                        this._endChangeCallback = callBack
                    }
                    isInitial(name) {
                        const value = this.silent(name);
                        const initialValue = this.initial(name);
                        const areFunctions = (0, _type.isFunction)(value) && (0, _type.isFunction)(initialValue);
                        return areFunctions ? value.toString() === initialValue.toString() : (0, _common.equalByValue)(value, initialValue)
                    }
                    initial(name) {
                        return (0, _utils.getNestedOptionValue)(this._initial, name)
                    }
                    option(options, value) {
                        const isGetter = arguments.length < 2 && "object" !== (0, _type.type)(options);
                        if (isGetter) {
                            return this._optionManager.get(void 0, this._normalizeName(options))
                        }
                        this._startChangeCallback();
                        try {
                            this._optionManager.set(options, value)
                        } finally {
                            this._endChangeCallback()
                        }
                    }
                    silent(options, value) {
                        const isGetter = arguments.length < 2 && "object" !== (0, _type.type)(options);
                        if (isGetter) {
                            return this._optionManager.get(void 0, options, void 0, true)
                        }
                        this._optionManager.set(options, value, void 0, true)
                    }
                    reset(name) {
                        if (name) {
                            const fullPath = (0, _data.getPathParts)(name);
                            const value = fullPath.reduce(((value, field) => value ? value[field] : this.initial(field)), null);
                            const defaultValue = (0, _type.isObject)(value) ? _extends({}, value) : value;
                            this._optionManager.set(name, defaultValue, false)
                        }
                    }
                    getAliasesByName(name) {
                        return Object.keys(this._deprecated).filter((aliasName => name === this._deprecated[aliasName].alias))
                    }
                    isDeprecated(name) {
                        return Object.prototype.hasOwnProperty.call(this._deprecated, name)
                    }
                    cache(name, options) {
                        const isGetter = arguments.length < 2;
                        if (isGetter) {
                            return this._cachedOptions[name]
                        }
                        this._cachedOptions[name] = (0, _extend.extend)(this._cachedOptions[name], options)
                    }
                }
            },
        59830:
            /*!*****************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/options/m_option_manager.js ***!
              \*****************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.OptionManager = void 0;
                var _utils = __webpack_require__( /*! ../../../core/options/utils */ 53904);
                var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781);
                var _comparator = __webpack_require__( /*! ../../../core/utils/comparator */ 60648);
                var _data = __webpack_require__( /*! ../../../core/utils/data */ 31e3);
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576);
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528);
                const cachedGetters = {};
                const cachedSetters = {};
                exports.OptionManager = class {
                    constructor(options, optionsByReference) {
                        this._options = options;
                        this._optionsByReference = optionsByReference;
                        this._changingCallback;
                        this._changedCallback;
                        this._namePreparedCallbacks;
                        this._validateOptionsCallback
                    }
                    _setByReference(options, rulesOptions) {
                        (0, _extend.extend)(true, options, rulesOptions);
                        for (const fieldName in this._optionsByReference) {
                            if (Object.prototype.hasOwnProperty.call(rulesOptions, fieldName)) {
                                options[fieldName] = rulesOptions[fieldName]
                            }
                        }
                    }
                    _setPreparedValue(name, value, merge, silent) {
                        const previousValue = this.get(this._options, name, false);
                        if (!(0, _comparator.equals)(previousValue, value)) {
                            const path = (0, _data.getPathParts)(name);
                            !silent && this._changingCallback(name, previousValue, value);
                            cachedSetters[name] = cachedSetters[name] || (0, _data.compileSetter)(name);
                            cachedSetters[name](this._options, value, {
                                functionsAsIs: true,
                                merge: (0, _type.isDefined)(merge) ? merge : !this._optionsByReference[name],
                                unwrapObservables: path.length > 1 && !!this._optionsByReference[path[0]]
                            });
                            !silent && this._changedCallback(name, value, previousValue)
                        }
                    }
                    _prepareRelevantNames(options, name, value, silent) {
                        if ((0, _type.isPlainObject)(value)) {
                            for (const valueName in value) {
                                this._prepareRelevantNames(options, `${name}.${valueName}`, value[valueName])
                            }
                        }
                        this._namePreparedCallbacks(options, name, value, silent)
                    }
                    get() {
                        let options = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this._options;
                        let name = arguments.length > 1 ? arguments[1] : void 0;
                        let unwrapObservables = arguments.length > 2 ? arguments[2] : void 0;
                        cachedGetters[name] = cachedGetters[name] || (0, _data.compileGetter)(name);
                        return cachedGetters[name](options, {
                            functionsAsIs: true,
                            unwrapObservables: unwrapObservables
                        })
                    }
                    set(options, value, merge, silent) {
                        options = (0, _utils.normalizeOptions)(options, value);
                        for (const name in options) {
                            this._prepareRelevantNames(options, name, options[name], silent)
                        }
                        if (this._validateOptionsCallback) {
                            options = this._validateOptionsCallback(options)
                        }
                        for (const name in options) {
                            this._setPreparedValue(name, options[name], merge, silent)
                        }
                    }
                    onRelevantNamesPrepared(callBack) {
                        this._namePreparedCallbacks = callBack
                    }
                    onChanging(callBack) {
                        this._changingCallback = callBack
                    }
                    onChanged(callBack) {
                        this._changedCallback = callBack
                    }
                    onValidateOptions(callback) {
                        this._validateOptionsCallback = callback
                    }
                    dispose() {
                        this._changingCallback = _common.noop;
                        this._changedCallback = _common.noop
                    }
                }
            },
        33810:
            /*!********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/options/m_utils.js ***!
              \********************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.normalizeOptions = exports.getParentName = exports.getNestedOptionValue = exports.getFieldName = exports.deviceMatch = exports.createDefaultOptionRules = exports.convertRulesToOptions = void 0;
                var _devices = (e = __webpack_require__( /*! ../../../core/devices */ 65951), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781);
                var _data = __webpack_require__( /*! ../../../core/utils/data */ 31e3);
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576);
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528);
                const cachedGetters = {};
                exports.convertRulesToOptions = rules => {
                    const currentDevice = _devices.default.current();
                    return rules.reduce(((options, _ref) => {
                        let {
                            device: device,
                            options: ruleOptions
                        } = _ref;
                        const deviceFilter = device || {};
                        const match = (0, _type.isFunction)(deviceFilter) ? deviceFilter(currentDevice) : deviceMatch(currentDevice, deviceFilter);
                        if (match) {
                            (0, _extend.extend)(true, options, ruleOptions)
                        }
                        return options
                    }), {})
                };
                exports.normalizeOptions = (options, value) => "string" !== typeof options ? options : {
                    [options]: value
                };
                const deviceMatch = (device, filter) => (0, _type.isEmptyObject)(filter) || (0, _common.findBestMatches)(device, [filter]).length > 0;
                exports.deviceMatch = deviceMatch;
                exports.getFieldName = fullName => fullName.substr(fullName.lastIndexOf(".") + 1);
                exports.getParentName = fullName => fullName.substr(0, fullName.lastIndexOf("."));
                exports.getNestedOptionValue = function(optionsObject, name) {
                    cachedGetters[name] = cachedGetters[name] || (0, _data.compileGetter)(name);
                    return cachedGetters[name](optionsObject, {
                        functionsAsIs: true
                    })
                };
                exports.createDefaultOptionRules = function() {
                    let options = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [];
                    return options
                }
            },
        34993:
            /*!*************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/r1/component_wrapper.js ***!
              \*************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.ComponentWrapper = void 0;
                __webpack_require__( /*! ../../../common/core/events/click */ 64044);
                __webpack_require__( /*! ../../../common/core/events/core/emitter.feedback */ 69331);
                __webpack_require__( /*! ../../../common/core/events/hover */ 638);
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../core/dom_adapter */ 64960));
                var _dom_component = _interopRequireDefault(__webpack_require__( /*! ../../../core/dom_component */ 97832));
                var _element = __webpack_require__( /*! ../../../core/element */ 61404);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553));
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576);
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528);
                var _inferno = __webpack_require__( /*! inferno */ 76231);
                var _keyboard_processor = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/keyboard_processor */ 52818));
                var _inferno_renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/inferno_renderer */ 16965));
                var _template_wrapper = __webpack_require__( /*! ./template_wrapper */ 34554);
                var _index = __webpack_require__( /*! ./utils/index */ 10632);

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }

                function _extends() {
                    return _extends = Object.assign ? Object.assign.bind() : function(n) {
                        for (var e = 1; e < arguments.length; e++) {
                            var t = arguments[e];
                            for (var r in t) {
                                ({}).hasOwnProperty.call(t, r) && (n[r] = t[r])
                            }
                        }
                        return n
                    }, _extends.apply(null, arguments)
                }
                const setDefaultOptionValue = (options, defaultValueGetter) => name => {
                    if (Object.prototype.hasOwnProperty.call(options, name) && void 0 === options[name]) {
                        options[name] = defaultValueGetter(name)
                    }
                };
                class ComponentWrapper extends _dom_component.default {
                    get _propsInfo() {
                        return {
                            allowNull: [],
                            twoWay: [],
                            elements: [],
                            templates: [],
                            props: []
                        }
                    }
                    constructor(element, options) {
                        super(element, options);
                        this._shouldRaiseContentReady = false;
                        this.validateKeyDownHandler()
                    }
                    validateKeyDownHandler() {
                        const supportedKeyNames = this.getSupportedKeyNames();
                        const hasComponentDefaultKeyHandlers = supportedKeyNames.length > 0;
                        const hasComponentKeyDownMethod = "function" === typeof this._viewComponent.prototype.keyDown;
                        if (hasComponentDefaultKeyHandlers && !hasComponentKeyDownMethod) {
                            throw Error("Component's declaration must have 'keyDown' method.")
                        }
                    }
                    get viewRef() {
                        var _this$_viewRef;
                        return null === (_this$_viewRef = this._viewRef) || void 0 === _this$_viewRef ? void 0 : _this$_viewRef.current
                    }
                    _checkContentReadyOption(fullName) {
                        const contentReadyOptions = this._getContentReadyOptions().reduce(((options, name) => {
                            options[name] = true;
                            return options
                        }), {});
                        this._checkContentReadyOption = optionName => !!contentReadyOptions[optionName];
                        return this._checkContentReadyOption(fullName)
                    }
                    _getContentReadyOptions() {
                        return ["rtlEnabled"]
                    }
                    _fireContentReady() {
                        this._actionsMap.onContentReady({})
                    }
                    _getDefaultOptions() {
                        const viewDefaultProps = this._getViewComponentDefaultProps();
                        return (0, _extend.extend)(true, super._getDefaultOptions(), viewDefaultProps, this._propsInfo.twoWay.reduce(((options, _ref) => {
                            let [name, defaultName, eventName] = _ref;
                            return _extends({}, options, {
                                [name]: viewDefaultProps[defaultName],
                                [eventName]: value => this.option(name, value)
                            })
                        }), {}), this._propsInfo.templates.reduce(((options, name) => _extends({}, options, {
                            [name]: null
                        })), {}))
                    }
                    _getUnwrappedOption() {
                        const unwrappedProps = {};
                        Object.keys(this.option()).forEach((key => {
                            unwrappedProps[key] = this.option(key)
                        }));
                        return unwrappedProps
                    }
                    _initializeComponent() {
                        var _this$_templateManage;
                        super._initializeComponent();
                        null === (_this$_templateManage = this._templateManager) || void 0 === _this$_templateManage || _this$_templateManage.addDefaultTemplates(this.getDefaultTemplates());
                        const optionProxy = this._getUnwrappedOption();
                        this._props = this._optionsWithDefaultTemplates(optionProxy);
                        this._propsInfo.templates.forEach((template => {
                            this._componentTemplates[template] = this._createTemplateComponent(this._props[template])
                        }));
                        Object.keys(this._getActionConfigsFull()).forEach((name => this._addAction(name)));
                        this._viewRef = (0, _inferno.createRef)();
                        this.defaultKeyHandlers = this._createDefaultKeyHandlers()
                    }
                    _initMarkup() {
                        const props = this.getProps();
                        this._renderWrapper(props)
                    }
                    _renderWrapper(props) {
                        const containerNode = this.$element()[0];
                        if (!this._isNodeReplaced) {
                            _inferno_renderer.default.onPreRender()
                        }
                        _inferno_renderer.default.render(this._viewComponent, props, containerNode, this._isNodeReplaced);
                        if (!this._isNodeReplaced) {
                            this._isNodeReplaced = true;
                            _inferno_renderer.default.onAfterRender();
                            this._shouldRaiseContentReady = true
                        }
                        if (this._shouldRaiseContentReady) {
                            this._fireContentReady();
                            this._shouldRaiseContentReady = false
                        }
                    }
                    _silent(name, value) {
                        this._options.silent(name, value)
                    }
                    _render() {}
                    _removeWidget() {
                        _inferno_renderer.default.remove(this.$element()[0])
                    }
                    _dispose() {
                        this._removeWidget();
                        super._dispose()
                    }
                    get elementAttr() {
                        const element = this.$element()[0];
                        if (!this._elementAttr) {
                            const {
                                attributes: attributes
                            } = element;
                            const attrs = Array.from(attributes).filter((attr => {
                                var _attributes$attr$name;
                                return !this._propsInfo.templates.includes(attr.name) && (null === (_attributes$attr$name = attributes[attr.name]) || void 0 === _attributes$attr$name ? void 0 : _attributes$attr$name.specified)
                            })).reduce(((result, _ref2) => {
                                let {
                                    name: name,
                                    value: value
                                } = _ref2;
                                const updatedAttributes = result;
                                const isDomAttr = name in element;
                                updatedAttributes[name] = "" === value && isDomAttr ? element[name] : value;
                                return updatedAttributes
                            }), {});
                            this._elementAttr = attrs;
                            this._storedClasses = element.getAttribute("class") || ""
                        }
                        const elemStyle = element.style;
                        const style = {};
                        for (let i = 0; i < elemStyle.length; i += 1) {
                            style[elemStyle[i]] = elemStyle.getPropertyValue(elemStyle[i])
                        }
                        this._elementAttr.style = style;
                        this._elementAttr.class = this._storedClasses;
                        return this._elementAttr
                    }
                    _getAdditionalActionConfigs() {
                        return {
                            onContentReady: {
                                excludeValidators: ["disabled", "readOnly"]
                            }
                        }
                    }
                    _getAdditionalProps() {
                        return []
                    }
                    _patchOptionValues(options) {
                        const {
                            allowNull: allowNull,
                            twoWay: twoWay,
                            elements: elements,
                            props: props
                        } = this._propsInfo;
                        const viewDefaultProps = this._getViewComponentDefaultProps();
                        const defaultWidgetPropsKeys = Object.keys(viewDefaultProps);
                        const defaultOptions = this._getDefaultOptions();
                        const {
                            ref: ref,
                            children: children,
                            onKeyboardHandled: onKeyboardHandled
                        } = options;
                        const onKeyDown = onKeyboardHandled ? (_, event_options) => {
                            onKeyboardHandled(event_options)
                        } : void 0;
                        const widgetProps = {
                            ref: ref,
                            children: children,
                            onKeyDown: onKeyDown
                        };
                        [...props, ...this._getAdditionalProps()].forEach((propName => {
                            if (Object.prototype.hasOwnProperty.call(options, propName)) {
                                widgetProps[propName] = options[propName]
                            }
                        }));
                        allowNull.forEach(setDefaultOptionValue(widgetProps, (() => null)));
                        defaultWidgetPropsKeys.forEach(setDefaultOptionValue(widgetProps, (name => defaultOptions[name])));
                        twoWay.forEach((_ref3 => {
                            let [name, defaultName] = _ref3;
                            setDefaultOptionValue(widgetProps, (() => defaultOptions[defaultName]))(name)
                        }));
                        elements.forEach((name => {
                            if (name in widgetProps) {
                                const value = widgetProps[name];
                                if ((0, _type.isRenderer)(value)) {
                                    widgetProps[name] = this._patchElementParam(value)
                                }
                            }
                        }));
                        return widgetProps
                    }
                    getSupportedKeyNames() {
                        return []
                    }
                    prepareStyleProp(props) {
                        if ("string" === typeof props.style) {
                            return _extends({}, props, {
                                style: {},
                                cssText: props.style
                            })
                        }
                        return props
                    }
                    getProps() {
                        const {
                            elementAttr: elementAttr
                        } = this.option();
                        const options = this._patchOptionValues(_extends({}, this._props, {
                            ref: this._viewRef,
                            children: this._extractDefaultSlot(),
                            aria: this._aria
                        }));
                        this._propsInfo.templates.forEach((template => {
                            options[template] = this._componentTemplates[template]
                        }));
                        return this.prepareStyleProp(_extends({}, options, this.elementAttr, elementAttr, {
                            className: [...(this.elementAttr.class ?? "").split(" "), ...((null === elementAttr || void 0 === elementAttr ? void 0 : elementAttr.class) ?? "").split(" ")].filter(((c, i, a) => c && a.indexOf(c) === i)).join(" ").trim(),
                            class: ""
                        }, this._actionsMap))
                    }
                    _getActionConfigs() {
                        return {}
                    }
                    _getActionConfigsFull() {
                        return _extends({}, this._getActionConfigs(), this._getAdditionalActionConfigs())
                    }
                    getDefaultTemplates() {
                        const defaultTemplates = Object.values(this._templatesInfo);
                        const result = {};
                        defaultTemplates.forEach((template => {
                            result[template] = "dx-renovation-template-mock"
                        }));
                        return result
                    }
                    get _templatesInfo() {
                        return {}
                    }
                    _optionsWithDefaultTemplates(options) {
                        const templateOptions = Object.entries(this._templatesInfo).reduce(((result, _ref4) => {
                            let [templateName, templateValue] = _ref4;
                            return _extends({}, result, {
                                [templateName]: options[templateName] ?? templateValue
                            })
                        }), {});
                        return _extends({}, options, templateOptions)
                    }
                    _init() {
                        super._init();
                        this.customKeyHandlers = {};
                        this._actionsMap = {};
                        this._aria = {};
                        this._componentTemplates = {}
                    }
                    _createDefaultKeyHandlers() {
                        const result = {};
                        const keys = this.getSupportedKeyNames();
                        keys.forEach((key => {
                            result[key] = e => this.viewRef.keyDown(_keyboard_processor.default.createKeyDownOptions(e))
                        }));
                        return result
                    }
                    _addAction(event, actionToAdd) {
                        let action = actionToAdd;
                        if (!action) {
                            const actionByOption = this._createActionByOption(event, this._getActionConfigsFull()[event]);
                            action = actArgs => {
                                Object.keys(actArgs).forEach((name => {
                                    if ((0, _type.isDefined)(actArgs[name]) && _dom_adapter.default.isNode(actArgs[name])) {
                                        actArgs[name] = (0, _element.getPublicElement)((0, _renderer.default)(actArgs[name]))
                                    }
                                }));
                                return actionByOption(actArgs)
                            }
                        }
                        this._actionsMap[event] = action
                    }
                    _optionChanged(option) {
                        const {
                            name: name,
                            fullName: fullName,
                            value: value,
                            previousValue: previousValue
                        } = option;
                        (0, _index.updatePropsImmutable)(this._props, this.option(), name, fullName);
                        if (this._propsInfo.templates.includes(name) && value !== previousValue) {
                            this._componentTemplates[name] = this._createTemplateComponent(value)
                        }
                        if (name && this._getActionConfigsFull()[name]) {
                            this._addAction(name)
                        }
                        this._shouldRaiseContentReady = this._shouldRaiseContentReady || this._checkContentReadyOption(fullName);
                        super._optionChanged(option);
                        this._invalidate()
                    }
                    _validateOptions(options) {
                        return super._validateOptions(options)
                    }
                    _extractDefaultSlot() {
                        if (this.option("_hasAnonymousTemplateContent")) {
                            return _inferno_renderer.default.createElement(_template_wrapper.TemplateWrapper, {
                                template: this._getTemplate(this._templateManager.anonymousTemplateName),
                                transclude: true,
                                renovated: true
                            })
                        }
                        return null
                    }
                    _createTemplateComponent(templateOption) {
                        if (!templateOption) {
                            return
                        }
                        const template = this._getTemplate(templateOption);
                        if ((0, _type.isString)(template) && "dx-renovation-template-mock" === template) {
                            return
                        }
                        return model => _inferno_renderer.default.createElement(_template_wrapper.TemplateWrapper, (0, _template_wrapper.buildTemplateArgs)(model, template))
                    }
                    _wrapKeyDownHandler(initialHandler) {
                        return options => {
                            const {
                                originalEvent: originalEvent,
                                keyName: keyName,
                                which: which
                            } = options;
                            const keys = this.customKeyHandlers;
                            const func = keys[keyName] || keys[which];
                            if (void 0 !== func) {
                                const handler = func.bind(this);
                                const result = handler(originalEvent, options);
                                if (!result) {
                                    originalEvent.cancel = true;
                                    return originalEvent
                                }
                            }
                            return null === initialHandler || void 0 === initialHandler ? void 0 : initialHandler(originalEvent, options)
                        }
                    }
                    _toPublicElement(element) {
                        return (0, _element.getPublicElement)((0, _renderer.default)(element))
                    }
                    _patchElementParam(value) {
                        try {
                            const result = (0, _renderer.default)(value);
                            const element = null === result || void 0 === result ? void 0 : result.get(0);
                            return null !== element && void 0 !== element && element.nodeType ? element : value
                        } catch (error) {
                            return value
                        }
                    }
                    focus() {
                        const $root = this.$element();
                        const hasFocus = $root.is(":focus") || $root.find(":focus").length > 0;
                        if (hasFocus) {
                            return
                        }
                        if (this.option("focusStateEnabled")) {
                            $root.focus()
                        } else {
                            var _focusableElements$;
                            const focusableElements = $root.find("[tabindex]");
                            null === (_focusableElements$ = focusableElements[0]) || void 0 === _focusableElements$ || _focusableElements$.focus()
                        }
                    }
                    repaint() {
                        this._isNodeReplaced = false;
                        this._shouldRaiseContentReady = true;
                        this._removeWidget();
                        this._refresh()
                    }
                    _supportedKeys() {
                        return _extends({}, this.defaultKeyHandlers, this.customKeyHandlers)
                    }
                    registerKeyHandler(key, handler) {
                        this.customKeyHandlers[key] = handler
                    }
                    setAria(name, value) {
                        this._aria[name] = value;
                        this._initMarkup()
                    }
                    _getViewComponentDefaultProps() {
                        return this._viewComponent.defaultProps || {}
                    }
                }
                exports.ComponentWrapper = ComponentWrapper;
                ComponentWrapper.IS_RENOVATED_WIDGET = false;
                ComponentWrapper.IS_RENOVATED_WIDGET = true
            },
        5428:
            /*!**************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/r1/runtime/inferno/base_component.js ***!
              \**************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.InfernoWrapperComponent = exports.InfernoComponent = exports.BaseInfernoComponent = void 0;
                var _inferno = __webpack_require__( /*! inferno */ 76231);
                var _effect_host = __webpack_require__( /*! ./effect_host */ 23405);
                const areObjectsEqual = (firstObject, secondObject) => {
                    const bothAreObjects = firstObject instanceof Object && secondObject instanceof Object;
                    if (!bothAreObjects) {
                        return firstObject === secondObject
                    }
                    const firstObjectKeys = Object.keys(firstObject);
                    const secondObjectKeys = Object.keys(secondObject);
                    if (firstObjectKeys.length !== secondObjectKeys.length) {
                        return false
                    }
                    const hasDifferentElement = firstObjectKeys.some((key => firstObject[key] !== secondObject[key]));
                    return !hasDifferentElement
                };
                class BaseInfernoComponent extends _inferno.Component {
                    constructor() {
                        super(...arguments);
                        this._pendingContext = this.context
                    }
                    componentWillReceiveProps(_, context) {
                        this._pendingContext = context ?? {}
                    }
                    shouldComponentUpdate(nextProps, nextState) {
                        return !areObjectsEqual(this.props, nextProps) || !areObjectsEqual(this.state, nextState) || !areObjectsEqual(this.context, this._pendingContext)
                    }
                }
                exports.BaseInfernoComponent = BaseInfernoComponent;
                class InfernoComponent extends BaseInfernoComponent {
                    constructor() {
                        super(...arguments);
                        this._effects = []
                    }
                    createEffects() {
                        return []
                    }
                    updateEffects() {}
                    componentWillMount() {
                        _effect_host.InfernoEffectHost.lock()
                    }
                    componentWillUpdate(_nextProps, _nextState, _context) {
                        _effect_host.InfernoEffectHost.lock()
                    }
                    componentDidMount() {
                        _effect_host.InfernoEffectHost.callbacks.push((() => {
                            this._effects = this.createEffects()
                        }));
                        _effect_host.InfernoEffectHost.callEffects()
                    }
                    componentDidUpdate() {
                        _effect_host.InfernoEffectHost.callbacks.push((() => this.updateEffects()));
                        _effect_host.InfernoEffectHost.callEffects()
                    }
                    destroyEffects() {
                        this._effects.forEach((e => e.dispose()))
                    }
                    componentWillUnmount() {
                        this.destroyEffects()
                    }
                }
                exports.InfernoComponent = InfernoComponent;
                exports.InfernoWrapperComponent = class extends InfernoComponent {
                    constructor() {
                        super(...arguments);
                        this.vDomElement = null
                    }
                    vDomUpdateClasses() {
                        var _el$className;
                        const el = this.vDomElement;
                        const currentClasses = null !== (_el$className = el.className) && void 0 !== _el$className && _el$className.length ? el.className.split(" ") : [];
                        const addedClasses = currentClasses.filter((className => !el.dxClasses.previous.includes(className)));
                        const removedClasses = el.dxClasses.previous.filter((className => !currentClasses.includes(className)));
                        addedClasses.forEach((value => {
                            const indexInRemoved = el.dxClasses.removed.indexOf(value);
                            if (indexInRemoved > -1) {
                                el.dxClasses.removed.splice(indexInRemoved, 1)
                            } else if (!el.dxClasses.added.includes(value)) {
                                el.dxClasses.added.push(value)
                            }
                        }));
                        removedClasses.forEach((value => {
                            const indexInAdded = el.dxClasses.added.indexOf(value);
                            if (indexInAdded > -1) {
                                el.dxClasses.added.splice(indexInAdded, 1)
                            } else if (!el.dxClasses.removed.includes(value)) {
                                el.dxClasses.removed.push(value)
                            }
                        }))
                    }
                    componentDidMount() {
                        var _el$className2;
                        const el = (0, _inferno.findDOMFromVNode)(this.$LI, true);
                        this.vDomElement = el;
                        super.componentDidMount();
                        el.dxClasses = el.dxClasses || {
                            removed: [],
                            added: [],
                            previous: []
                        };
                        el.dxClasses.previous = null !== el && void 0 !== el && null !== (_el$className2 = el.className) && void 0 !== _el$className2 && _el$className2.length ? el.className.split(" ") : []
                    }
                    componentDidUpdate() {
                        super.componentDidUpdate();
                        const el = this.vDomElement;
                        if (null !== el) {
                            var _el$className3;
                            el.dxClasses.added.forEach((className => el.classList.add(className)));
                            el.dxClasses.removed.forEach((className => el.classList.remove(className)));
                            el.dxClasses.previous = null !== (_el$className3 = el.className) && void 0 !== _el$className3 && _el$className3.length ? el.className.split(" ") : []
                        }
                    }
                    shouldComponentUpdate(nextProps, nextState) {
                        const shouldUpdate = super.shouldComponentUpdate(nextProps, nextState);
                        if (shouldUpdate) {
                            this.vDomUpdateClasses()
                        }
                        return shouldUpdate
                    }
                }
            },
        34781:
            /*!**************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/r1/runtime/inferno/create_context.js ***!
              \**************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.createContext = void 0;
                var _inferno = __webpack_require__( /*! inferno */ 76231);

                function _extends() {
                    return _extends = Object.assign ? Object.assign.bind() : function(n) {
                        for (var e = 1; e < arguments.length; e++) {
                            var t = arguments[e];
                            for (var r in t) {
                                ({}).hasOwnProperty.call(t, r) && (n[r] = t[r])
                            }
                        }
                        return n
                    }, _extends.apply(null, arguments)
                }
                let contextId = 0;
                exports.createContext = function(defaultValue) {
                    const id = contextId++;
                    return {
                        id: id,
                        defaultValue: defaultValue,
                        Provider: class extends _inferno.Component {
                            getChildContext() {
                                return _extends({}, this.context, {
                                    [id]: this.props.value || defaultValue
                                })
                            }
                            render() {
                                return this.props.children
                            }
                        }
                    }
                }
            },
        2836:
            /*!******************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/r1/runtime/inferno/effect.js ***!
              \******************************************************************************************/
            function(__unused_webpack_module, exports) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.InfernoEffect = void 0;
                exports.InfernoEffect = class {
                    constructor(effect, dependency) {
                        this.dependency = dependency;
                        this.effect = effect;
                        this.destroy = effect()
                    }
                    update(dependency) {
                        const currentDependency = this.dependency;
                        if (dependency) {
                            this.dependency = dependency
                        }
                        if (!dependency || dependency.some(((d, i) => currentDependency[i] !== d))) {
                            this.dispose();
                            this.destroy = this.effect()
                        }
                    }
                    dispose() {
                        if (this.destroy) {
                            this.destroy()
                        }
                    }
                }
            },
        23405:
            /*!***********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/r1/runtime/inferno/effect_host.js ***!
              \***********************************************************************************************/
            function(__unused_webpack_module, exports) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.InfernoEffectHost = void 0;
                exports.InfernoEffectHost = {
                    lockCount: 0,
                    lock() {
                        this.lockCount++
                    },
                    callbacks: [],
                    callEffects() {
                        this.lockCount--;
                        if (this.lockCount < 0) {
                            throw new Error("Unexpected Effect Call")
                        }
                        if (0 === this.lockCount) {
                            const effects = this.callbacks;
                            this.callbacks = [];
                            effects.forEach((callback => callback()))
                        }
                    }
                }
            },
        6257:
            /*!*****************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/r1/runtime/inferno/index.js ***!
              \*****************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                var _base_component = __webpack_require__( /*! ./base_component */ 5428);
                Object.keys(_base_component).forEach((function(key) {
                    if ("default" === key || "__esModule" === key) {
                        return
                    }
                    if (key in exports && exports[key] === _base_component[key]) {
                        return
                    }
                    Object.defineProperty(exports, key, {
                        enumerable: true,
                        get: function() {
                            return _base_component[key]
                        }
                    })
                }));
                var _create_context = __webpack_require__( /*! ./create_context */ 34781);
                Object.keys(_create_context).forEach((function(key) {
                    if ("default" === key || "__esModule" === key) {
                        return
                    }
                    if (key in exports && exports[key] === _create_context[key]) {
                        return
                    }
                    Object.defineProperty(exports, key, {
                        enumerable: true,
                        get: function() {
                            return _create_context[key]
                        }
                    })
                }));
                var _effect = __webpack_require__( /*! ./effect */ 2836);
                Object.keys(_effect).forEach((function(key) {
                    if ("default" === key || "__esModule" === key) {
                        return
                    }
                    if (key in exports && exports[key] === _effect[key]) {
                        return
                    }
                    Object.defineProperty(exports, key, {
                        enumerable: true,
                        get: function() {
                            return _effect[key]
                        }
                    })
                }));
                var _effect_host = __webpack_require__( /*! ./effect_host */ 23405);
                Object.keys(_effect_host).forEach((function(key) {
                    if ("default" === key || "__esModule" === key) {
                        return
                    }
                    if (key in exports && exports[key] === _effect_host[key]) {
                        return
                    }
                    Object.defineProperty(exports, key, {
                        enumerable: true,
                        get: function() {
                            return _effect_host[key]
                        }
                    })
                }));
                var _hydrate = __webpack_require__( /*! ./mocked/hydrate */ 11934);
                Object.keys(_hydrate).forEach((function(key) {
                    if ("default" === key || "__esModule" === key) {
                        return
                    }
                    if (key in exports && exports[key] === _hydrate[key]) {
                        return
                    }
                    Object.defineProperty(exports, key, {
                        enumerable: true,
                        get: function() {
                            return _hydrate[key]
                        }
                    })
                }));
                var _normalize_styles = __webpack_require__( /*! ./normalize_styles */ 75467);
                Object.keys(_normalize_styles).forEach((function(key) {
                    if ("default" === key || "__esModule" === key) {
                        return
                    }
                    if (key in exports && exports[key] === _normalize_styles[key]) {
                        return
                    }
                    Object.defineProperty(exports, key, {
                        enumerable: true,
                        get: function() {
                            return _normalize_styles[key]
                        }
                    })
                }));
                var _portal = __webpack_require__( /*! ./portal */ 37695);
                Object.keys(_portal).forEach((function(key) {
                    if ("default" === key || "__esModule" === key) {
                        return
                    }
                    if (key in exports && exports[key] === _portal[key]) {
                        return
                    }
                    Object.defineProperty(exports, key, {
                        enumerable: true,
                        get: function() {
                            return _portal[key]
                        }
                    })
                }));
                var _re_render_effect = __webpack_require__( /*! ./re_render_effect */ 31603);
                Object.keys(_re_render_effect).forEach((function(key) {
                    if ("default" === key || "__esModule" === key) {
                        return
                    }
                    if (key in exports && exports[key] === _re_render_effect[key]) {
                        return
                    }
                    Object.defineProperty(exports, key, {
                        enumerable: true,
                        get: function() {
                            return _re_render_effect[key]
                        }
                    })
                }));
                var _render_template = __webpack_require__( /*! ./render_template */ 90626);
                Object.keys(_render_template).forEach((function(key) {
                    if ("default" === key || "__esModule" === key) {
                        return
                    }
                    if (key in exports && exports[key] === _render_template[key]) {
                        return
                    }
                    Object.defineProperty(exports, key, {
                        enumerable: true,
                        get: function() {
                            return _render_template[key]
                        }
                    })
                }))
            },
        11934:
            /*!**************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/r1/runtime/inferno/mocked/hydrate.js ***!
              \**************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.hydrate = function(input, parentDOM, callback) {
                    let dom = parentDOM.firstChild;
                    if ((0, _shared.isNull)(dom)) {
                        (0, _inferno.render)(input, parentDOM, callback)
                    } else {
                        const lifecycle = [];
                        const animations = new _inferno.AnimationQueues;
                        if (!(0, _shared.isInvalid)(input)) {
                            dom = hydrateVNode(input, parentDOM, dom, {}, false, lifecycle, animations)
                        }
                        while (dom && (dom = dom.nextSibling)) {
                            parentDOM.removeChild(dom)
                        }
                        if (lifecycle.length > 0) {
                            let listener;
                            while (void 0 !== (listener = lifecycle.shift())) {
                                listener()
                            }
                        }
                    }
                    parentDOM.$V = input;
                    if ((0, _shared.isFunction)(callback)) {
                        callback()
                    }
                };
                var _inferno = __webpack_require__( /*! inferno */ 76231);
                var _shared = __webpack_require__( /*! ./shared */ 54640);
                var _vnodeFlags = __webpack_require__( /*! ./vnode-flags */ 55869);

                function isSamePropsInnerHTML(dom, props) {
                    return Boolean(props && props.dangerouslySetInnerHTML && props.dangerouslySetInnerHTML.__html && function(dom, innerHTML) {
                        const tempdom = document.createElement("i");
                        tempdom.innerHTML = innerHTML;
                        return tempdom.innerHTML === dom.innerHTML
                    }(dom, props.dangerouslySetInnerHTML.__html))
                }

                function hydrateChildren(parentVNode, parentNode, currentNode, context, isSVG, lifecycle, animations) {
                    const childFlags = parentVNode.childFlags;
                    const children = parentVNode.children;
                    const props = parentVNode.props;
                    const flags = parentVNode.flags;
                    if (childFlags !== _vnodeFlags.ChildFlags.HasInvalidChildren) {
                        if (childFlags === _vnodeFlags.ChildFlags.HasVNodeChildren) {
                            if ((0, _shared.isNull)(currentNode)) {
                                (0, _inferno._M)(children, parentNode, context, isSVG, null, lifecycle, animations)
                            } else {
                                currentNode = hydrateVNode(children, parentNode, currentNode, context, isSVG, lifecycle, animations);
                                currentNode = currentNode ? currentNode.nextSibling : null
                            }
                        } else if (childFlags === _vnodeFlags.ChildFlags.HasTextChildren) {
                            if ((0, _shared.isNull)(currentNode)) {
                                parentNode.appendChild(document.createTextNode(children))
                            } else if (1 !== parentNode.childNodes.length || 3 !== currentNode.nodeType) {
                                parentNode.textContent = children
                            } else if (currentNode.nodeValue !== children) {
                                currentNode.nodeValue = children
                            }
                            currentNode = null
                        } else if (childFlags & _vnodeFlags.ChildFlags.MultipleChildren) {
                            let prevVNodeIsTextNode = false;
                            for (let i = 0, len = children.length; i < len; ++i) {
                                const child = children[i];
                                if ((0, _shared.isNull)(currentNode) || prevVNodeIsTextNode && (child.flags & _vnodeFlags.VNodeFlags.Text) > 0) {
                                    (0, _inferno._M)(child, parentNode, context, isSVG, currentNode, lifecycle, animations)
                                } else {
                                    currentNode = hydrateVNode(child, parentNode, currentNode, context, isSVG, lifecycle, animations);
                                    currentNode = currentNode ? currentNode.nextSibling : null
                                }
                                prevVNodeIsTextNode = (child.flags & _vnodeFlags.VNodeFlags.Text) > 0
                            }
                        }
                        if (0 === (flags & _vnodeFlags.VNodeFlags.Fragment)) {
                            let nextSibling = null;
                            while (currentNode) {
                                nextSibling = currentNode.nextSibling;
                                parentNode.removeChild(currentNode);
                                currentNode = nextSibling
                            }
                        }
                    } else if (!(0, _shared.isNull)(parentNode.firstChild) && !isSamePropsInnerHTML(parentNode, props)) {
                        parentNode.textContent = "";
                        if (flags & _vnodeFlags.VNodeFlags.FormElement) {
                            parentNode.defaultValue = ""
                        }
                    }
                }

                function hydrateText(vNode, parentDOM, dom) {
                    if (3 !== dom.nodeType) {
                        parentDOM.replaceChild(vNode.dom = document.createTextNode(vNode.children), dom)
                    } else {
                        const text = vNode.children;
                        if (dom.nodeValue !== text) {
                            dom.nodeValue = text
                        }
                        vNode.dom = dom
                    }
                    return vNode.dom
                }

                function hydrateFragment(vNode, parentDOM, dom, context, isSVG, lifecycle, animations) {
                    const children = vNode.children;
                    if (vNode.childFlags === _vnodeFlags.ChildFlags.HasVNodeChildren) {
                        hydrateText(children, parentDOM, dom);
                        return children.dom
                    }
                    hydrateChildren(vNode, parentDOM, dom, context, isSVG, lifecycle, animations);
                    return function(vNode) {
                        let flags;
                        let children;
                        while (vNode) {
                            flags = vNode.flags;
                            if (flags & _vnodeFlags.VNodeFlags.DOMRef) {
                                return vNode.dom
                            }
                            children = vNode.children;
                            if (flags & _vnodeFlags.VNodeFlags.Fragment) {
                                vNode = vNode.childFlags === _vnodeFlags.ChildFlags.HasVNodeChildren ? children : children[children.length - 1]
                            } else if (flags & _vnodeFlags.VNodeFlags.ComponentClass) {
                                vNode = children.$LI
                            } else {
                                vNode = children
                            }
                        }
                        return null
                    }(children[children.length - 1])
                }

                function hydrateVNode(vNode, parentDOM, currentDom, context, isSVG, lifecycle, animations) {
                    const flags = vNode.flags |= _vnodeFlags.VNodeFlags.InUse;
                    if (flags & _vnodeFlags.VNodeFlags.Component) {
                        return function(vNode, parentDOM, dom, context, isSVG, isClass, lifecycle, animations) {
                            const type = vNode.type;
                            const ref = vNode.ref;
                            const props = vNode.props || _inferno.EMPTY_OBJ;
                            let currentNode;
                            if (isClass) {
                                const instance = (0, _inferno._CI)(vNode, type, props, context, isSVG, lifecycle);
                                const input = instance.$LI;
                                currentNode = hydrateVNode(input, parentDOM, dom, instance.$CX, isSVG, lifecycle, animations);
                                (0, _inferno._MCCC)(ref, instance, lifecycle, animations)
                            } else {
                                const input = (0, _inferno._HI)((0, _inferno._RFC)(vNode, context));
                                currentNode = hydrateVNode(input, parentDOM, dom, context, isSVG, lifecycle, animations);
                                vNode.children = input;
                                (0, _inferno._MFCC)(vNode, lifecycle, animations)
                            }
                            return currentNode
                        }(vNode, parentDOM, currentDom, context, isSVG, (flags & _vnodeFlags.VNodeFlags.ComponentClass) > 0, lifecycle, animations)
                    }
                    if (flags & _vnodeFlags.VNodeFlags.Element) {
                        return function(vNode, parentDOM, dom, context, isSVG, lifecycle, animations) {
                            const props = vNode.props;
                            const className = vNode.className;
                            const flags = vNode.flags;
                            const ref = vNode.ref;
                            isSVG = isSVG || (flags & _vnodeFlags.VNodeFlags.SvgElement) > 0;
                            if (1 !== dom.nodeType) {
                                (0, _inferno._ME)(vNode, null, context, isSVG, null, lifecycle, animations);
                                parentDOM.replaceChild(vNode.dom, dom)
                            } else {
                                vNode.dom = dom;
                                hydrateChildren(vNode, dom, dom.firstChild, context, isSVG, lifecycle, animations);
                                if (!(0, _shared.isNull)(props)) {
                                    (0, _inferno._MP)(vNode, flags, props, dom, isSVG, animations)
                                }
                                if ((0, _shared.isNullOrUndef)(className)) {
                                    if ("" !== dom.className) {
                                        dom.removeAttribute("class")
                                    }
                                } else if (isSVG) {
                                    dom.setAttribute("class", className)
                                } else {
                                    dom.className = className
                                }(0, _inferno._MR)(ref, dom, lifecycle)
                            }
                            return vNode.dom
                        }(vNode, parentDOM, currentDom, context, isSVG, lifecycle, animations)
                    }
                    if (flags & _vnodeFlags.VNodeFlags.Text) {
                        return hydrateText(vNode, parentDOM, currentDom)
                    }
                    if (flags & _vnodeFlags.VNodeFlags.Void) {
                        return vNode.dom = currentDom
                    }
                    if (flags & _vnodeFlags.VNodeFlags.Fragment) {
                        return hydrateFragment(vNode, parentDOM, currentDom, context, isSVG, lifecycle, animations)
                    }(0, _shared.throwError)();
                    return null
                }
            },
        54640:
            /*!*************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/r1/runtime/inferno/mocked/shared.js ***!
              \*************************************************************************************************/
            function(__unused_webpack_module, exports) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.ERROR_MSG = void 0;
                exports.isFunction = function(o) {
                    return "function" === typeof o
                };
                exports.isInvalid = function(o) {
                    return null === o || false === o || true === o || void 0 === o
                };
                exports.isNull = function(o) {
                    return null === o
                };
                exports.isNullOrUndef = function(o) {
                    return void 0 === o || null === o
                };
                exports.throwError = function(message) {
                    if (!message) {
                        message = ERROR_MSG
                    }
                    throw new Error(`Inferno Error: ${message}`)
                };
                const ERROR_MSG = exports.ERROR_MSG = "a runtime error occured! Use Inferno in development environment to find the error."
            },
        55869:
            /*!******************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/r1/runtime/inferno/mocked/vnode-flags.js ***!
              \******************************************************************************************************/
            function(__unused_webpack_module, exports) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.VNodeFlags = exports.ChildFlags = void 0;
                var VNodeFlags;
                ! function(VNodeFlags) {
                    VNodeFlags[VNodeFlags.HtmlElement = 1] = "HtmlElement";
                    VNodeFlags[VNodeFlags.ComponentUnknown = 2] = "ComponentUnknown";
                    VNodeFlags[VNodeFlags.ComponentClass = 4] = "ComponentClass";
                    VNodeFlags[VNodeFlags.ComponentFunction = 8] = "ComponentFunction";
                    VNodeFlags[VNodeFlags.Text = 16] = "Text";
                    VNodeFlags[VNodeFlags.SvgElement = 32] = "SvgElement";
                    VNodeFlags[VNodeFlags.InputElement = 64] = "InputElement";
                    VNodeFlags[VNodeFlags.TextareaElement = 128] = "TextareaElement";
                    VNodeFlags[VNodeFlags.SelectElement = 256] = "SelectElement";
                    VNodeFlags[VNodeFlags.Void = 512] = "Void";
                    VNodeFlags[VNodeFlags.Portal = 1024] = "Portal";
                    VNodeFlags[VNodeFlags.ReCreate = 2048] = "ReCreate";
                    VNodeFlags[VNodeFlags.ContentEditable = 4096] = "ContentEditable";
                    VNodeFlags[VNodeFlags.Fragment = 8192] = "Fragment";
                    VNodeFlags[VNodeFlags.InUse = 16384] = "InUse";
                    VNodeFlags[VNodeFlags.ForwardRef = 32768] = "ForwardRef";
                    VNodeFlags[VNodeFlags.Normalized = 65536] = "Normalized";
                    VNodeFlags[VNodeFlags.ForwardRefComponent = 32776] = "ForwardRefComponent";
                    VNodeFlags[VNodeFlags.FormElement = 448] = "FormElement";
                    VNodeFlags[VNodeFlags.Element = 481] = "Element";
                    VNodeFlags[VNodeFlags.Component = 14] = "Component";
                    VNodeFlags[VNodeFlags.DOMRef = 2033] = "DOMRef";
                    VNodeFlags[VNodeFlags.InUseOrNormalized = 81920] = "InUseOrNormalized";
                    VNodeFlags[VNodeFlags.ClearInUse = -16385] = "ClearInUse";
                    VNodeFlags[VNodeFlags.ComponentKnown = 12] = "ComponentKnown"
                }(VNodeFlags || (exports.VNodeFlags = VNodeFlags = {}));
                var ChildFlags;
                ! function(ChildFlags) {
                    ChildFlags[ChildFlags.UnknownChildren = 0] = "UnknownChildren";
                    ChildFlags[ChildFlags.HasInvalidChildren = 1] = "HasInvalidChildren";
                    ChildFlags[ChildFlags.HasVNodeChildren = 2] = "HasVNodeChildren";
                    ChildFlags[ChildFlags.HasNonKeyedChildren = 4] = "HasNonKeyedChildren";
                    ChildFlags[ChildFlags.HasKeyedChildren = 8] = "HasKeyedChildren";
                    ChildFlags[ChildFlags.HasTextChildren = 16] = "HasTextChildren";
                    ChildFlags[ChildFlags.MultipleChildren = 12] = "MultipleChildren"
                }(ChildFlags || (exports.ChildFlags = ChildFlags = {}))
            },
        75467:
            /*!****************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/r1/runtime/inferno/normalize_styles.js ***!
              \****************************************************************************************************/
            function(__unused_webpack_module, exports) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.normalizeStyles = function(styles) {
                    if (!(styles instanceof Object)) {
                        return
                    }
                    return Object.entries(styles).reduce(((acc, _ref) => {
                        let [key, value] = _ref;
                        acc[kebabCase(key)] = isNumeric(value) ? getNumberStyleValue(key, value) : value;
                        return acc
                    }), {})
                };
                const NUMBER_STYLES = new Set(["animationIterationCount", "borderImageOutset", "borderImageSlice", "border-imageWidth", "boxFlex", "boxFlexGroup", "boxOrdinalGroup", "columnCount", "fillOpacity", "flex", "flexGrow", "flexNegative", "flexOrder", "flexPositive", "flexShrink", "floodOpacity", "fontWeight", "gridColumn", "gridRow", "lineClamp", "lineHeight", "opacity", "order", "orphans", "stopOpacity", "strokeDasharray", "strokeDashoffset", "strokeMiterlimit", "strokeOpacity", "strokeWidth", "tabSize", "widows", "zIndex", "zoom"]);
                const isNumeric = value => {
                    if ("number" === typeof value) {
                        return true
                    }
                    return !Number.isNaN(Number(value))
                };
                const getNumberStyleValue = (style, value) => NUMBER_STYLES.has(style) ? value : `${value}px`;
                const uppercasePattern = /[A-Z]/g;
                const kebabCase = str => str.replace(uppercasePattern, "-$&").toLowerCase()
            },
        37695:
            /*!******************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/r1/runtime/inferno/portal.js ***!
              \******************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.Portal = void 0;
                var _inferno = __webpack_require__( /*! inferno */ 76231);
                exports.Portal = _ref => {
                    let {
                        container: container,
                        children: children
                    } = _ref;
                    if (container) {
                        return (0, _inferno.createPortal)(children, container)
                    }
                    return null
                }
            },
        31603:
            /*!****************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/r1/runtime/inferno/re_render_effect.js ***!
              \****************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.createReRenderEffect = void 0;
                var _inferno = __webpack_require__( /*! inferno */ 76231);
                var _effect = __webpack_require__( /*! ./effect */ 2836);
                exports.createReRenderEffect = () => new _effect.InfernoEffect((() => {
                    (0, _inferno.rerender)()
                }), [])
            },
        90626:
            /*!***************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/r1/runtime/inferno/render_template.js ***!
              \***************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.hasTemplate = void 0;
                exports.renderTemplate = function(template, props, _component) {
                    setTimeout((() => {
                        (0, _inferno.render)((0, _infernoCreateElement.createElement)(template, props), getContainer(props))
                    }), 0)
                };
                var _inferno = __webpack_require__( /*! inferno */ 76231);
                var _infernoCreateElement = __webpack_require__( /*! inferno-create-element */ 12887);
                const getContainer = props => {
                    var _props$container, _props$item;
                    return (null === (_props$container = props.container) || void 0 === _props$container ? void 0 : _props$container.get(0)) || (null === (_props$item = props.item) || void 0 === _props$item ? void 0 : _props$item.get(0))
                };
                exports.hasTemplate = (name, properties, _component) => {
                    const value = properties[name];
                    return !!value && "string" !== typeof value
                }
            },
        34554:
            /*!************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/r1/template_wrapper.js ***!
              \************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.buildTemplateArgs = exports.TemplateWrapper = void 0;
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../core/dom_adapter */ 64960));
                var _element = __webpack_require__( /*! ../../../core/element */ 61404);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553));
                var _dom = __webpack_require__( /*! ../../../core/utils/dom */ 86858);
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528);
                var _index = __webpack_require__( /*! ../../core/r1/runtime/inferno/index */ 6257);
                var _inferno = __webpack_require__( /*! inferno */ 76231);
                var _shallow_equals = __webpack_require__( /*! ./utils/shallow_equals */ 1270);
                const _excluded = ["isEqual"];

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }

                function _extends() {
                    return _extends = Object.assign ? Object.assign.bind() : function(n) {
                        for (var e = 1; e < arguments.length; e++) {
                            var t = arguments[e];
                            for (var r in t) {
                                ({}).hasOwnProperty.call(t, r) && (n[r] = t[r])
                            }
                        }
                        return n
                    }, _extends.apply(null, arguments)
                }
                exports.buildTemplateArgs = (model, template) => {
                    const args = {
                        template: template,
                        model: _extends({}, model)
                    };
                    const _ref = model.data ?? {},
                        {
                            isEqual: isEqual
                        } = _ref,
                        data = function(r, e) {
                            if (null == r) {
                                return {}
                            }
                            var t = {};
                            for (var n in r) {
                                if ({}.hasOwnProperty.call(r, n)) {
                                    if (e.includes(n)) {
                                        continue
                                    }
                                    t[n] = r[n]
                                }
                            }
                            return t
                        }(_ref, _excluded);
                    if (isEqual) {
                        args.model.data = data;
                        args.isEqual = isEqual
                    }
                    return args
                };
                class TemplateWrapper extends _index.InfernoComponent {
                    constructor(props) {
                        super(props);
                        this.renderTemplate = this.renderTemplate.bind(this)
                    }
                    renderTemplate() {
                        const node = (0, _inferno.findDOMFromVNode)(this.$LI, true);
                        if (!(null !== node && void 0 !== node && node.parentNode)) {
                            return () => {}
                        }
                        const container = node.parentNode;
                        const $container = (0, _renderer.default)(container);
                        const $oldContainerContent = $container.contents().toArray();
                        const content = ((props, container) => {
                            const {
                                data: data,
                                index: index
                            } = props.model ?? {
                                data: {}
                            };
                            if (data) {
                                Object.keys(data).forEach((name => {
                                    if (data[name] && _dom_adapter.default.isNode(data[name])) {
                                        data[name] = (0, _element.getPublicElement)((0, _renderer.default)(data[name]))
                                    }
                                }))
                            }
                            const rendered = props.template.render(_extends({
                                container: container,
                                transclude: props.transclude
                            }, {
                                renovated: props.renovated
                            }, !props.transclude ? {
                                model: data
                            } : {}, !props.transclude && Number.isFinite(index) ? {
                                index: index
                            } : {}));
                            if (void 0 === rendered) {
                                return []
                            }
                            return (element = rendered, !!element.toArray) ? rendered.toArray() : [(0, _renderer.default)(rendered).get(0)];
                            var element
                        })(this.props, (0, _element.getPublicElement)($container));
                        (0, _dom.replaceWith)((0, _renderer.default)(node), (0, _renderer.default)(content));
                        return () => {
                            const $actualContainerContent = (0, _renderer.default)(container).contents().toArray();
                            oldChildren = $oldContainerContent, newChildren = $actualContainerContent, void newChildren.forEach((newElement => {
                                const hasOldChild = !!oldChildren.find((oldElement => newElement === oldElement));
                                if (!hasOldChild && newElement.parentNode) {
                                    (0, _renderer.default)(newElement).remove()
                                }
                            }));
                            var oldChildren, newChildren;
                            container.appendChild(node)
                        }
                    }
                    shouldComponentUpdate(nextProps) {
                        const {
                            template: template,
                            model: model
                        } = this.props;
                        const {
                            template: nextTemplate,
                            model: nextModel,
                            isEqual: isEqual
                        } = nextProps;
                        const equalityComparer = isEqual ?? _shallow_equals.shallowEquals;
                        if (template !== nextTemplate) {
                            return true
                        }
                        if (!(0, _type.isDefined)(model) || !(0, _type.isDefined)(nextModel)) {
                            return model !== nextModel
                        }
                        const {
                            data: data,
                            index: index
                        } = model;
                        const {
                            data: nextData,
                            index: nextIndex
                        } = nextModel;
                        if (index !== nextIndex) {
                            return true
                        }
                        if (!(0, _type.isDefined)(data) || !(0, _type.isDefined)(nextData)) {
                            return model !== nextModel
                        }
                        return !equalityComparer(data, nextData)
                    }
                    createEffects() {
                        return [new _index.InfernoEffect(this.renderTemplate, [this.props.template, this.props.model])]
                    }
                    updateEffects() {
                        this._effects[0].update([this.props.template, this.props.model])
                    }
                    componentWillUnmount() {}
                    render() {
                        return null
                    }
                }
                exports.TemplateWrapper = TemplateWrapper
            },
        6909:
            /*!**************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/r1/utils/get_template.js ***!
              \**************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.getTemplate = void 0;
                var _inferno = __webpack_require__( /*! inferno */ 76231);

                function _extends() {
                    return _extends = Object.assign ? Object.assign.bind() : function(n) {
                        for (var e = 1; e < arguments.length; e++) {
                            var t = arguments[e];
                            for (var r in t) {
                                ({}).hasOwnProperty.call(t, r) && (n[r] = t[r])
                            }
                        }
                        return n
                    }, _extends.apply(null, arguments)
                }
                exports.getTemplate = TemplateProp => TemplateProp && (TemplateProp.defaultProps ? props => (0, _inferno.normalizeProps)((0, _inferno.createComponentVNode)(2, TemplateProp, _extends({}, props))) : TemplateProp)
            },
        10632:
            /*!*******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/r1/utils/index.js ***!
              \*******************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                Object.defineProperty(exports, "getTemplate", {
                    enumerable: true,
                    get: function() {
                        return _get_template.getTemplate
                    }
                });
                Object.defineProperty(exports, "shallowEquals", {
                    enumerable: true,
                    get: function() {
                        return _shallow_equals.shallowEquals
                    }
                });
                Object.defineProperty(exports, "updatePropsImmutable", {
                    enumerable: true,
                    get: function() {
                        return _update_props_immutable.updatePropsImmutable
                    }
                });
                var _get_template = __webpack_require__( /*! ./get_template */ 6909);
                var _shallow_equals = __webpack_require__( /*! ./shallow_equals */ 1270);
                var _update_props_immutable = __webpack_require__( /*! ./update_props_immutable */ 73725)
            },
        1270:
            /*!****************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/r1/utils/shallow_equals.js ***!
              \****************************************************************************************/
            function(__unused_webpack_module, exports) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.shallowEquals = void 0;
                exports.shallowEquals = (firstObject, secondObject) => {
                    if (Object.keys(firstObject).length !== Object.keys(secondObject).length) {
                        return false
                    }
                    return Object.entries(firstObject).every((_ref => {
                        let [key, firstValue] = _ref;
                        const secondValue = secondObject[key];
                        if (firstValue instanceof Date && secondValue instanceof Date) {
                            return firstValue.getTime() === secondValue.getTime()
                        }
                        return firstValue === secondValue
                    }))
                }
            },
        73725:
            /*!************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/r1/utils/update_props_immutable.js ***!
              \************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.updatePropsImmutable = void 0;
                var _data = __webpack_require__( /*! ../../../../core/utils/data */ 31e3);
                var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528);

                function _extends() {
                    return _extends = Object.assign ? Object.assign.bind() : function(n) {
                        for (var e = 1; e < arguments.length; e++) {
                            var t = arguments[e];
                            for (var r in t) {
                                ({}).hasOwnProperty.call(t, r) && (n[r] = t[r])
                            }
                        }
                        return n
                    }, _extends.apply(null, arguments)
                }
                const cloneObjectValue = value => Array.isArray(value) ? [...value] : _extends({}, value);
                const cloneObjectProp = (value, prevValue, fullNameParts) => {
                    const result = fullNameParts.length > 0 && prevValue && value !== prevValue ? cloneObjectValue(prevValue) : cloneObjectValue(value);
                    const name = fullNameParts[0];
                    if (fullNameParts.length > 1) {
                        result[name] = cloneObjectProp(value[name], null === prevValue || void 0 === prevValue ? void 0 : prevValue[name], fullNameParts.slice(1))
                    } else if (name) {
                        if ((0, _type.isPlainObject)(value[name])) {
                            result[name] = cloneObjectValue(value[name])
                        } else {
                            result[name] = value[name]
                        }
                    }
                    return result
                };
                exports.updatePropsImmutable = (props, option, name, fullName) => {
                    const currentPropsValue = option[name];
                    const prevPropsValue = props[name];
                    const result = props;
                    if ((0, _type.isPlainObject)(currentPropsValue) || name !== fullName && Array.isArray(currentPropsValue)) {
                        result[name] = cloneObjectProp(currentPropsValue, prevPropsValue, (0, _data.getPathParts)(fullName).slice(1))
                    } else {
                        result[name] = currentPropsValue
                    }
                }
            },
        93971:
            /*!***************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/templates/m_child_default_template.js ***!
              \***************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.ChildDefaultTemplate = void 0;
                var _template_base = __webpack_require__( /*! ../../../core/templates/template_base */ 42186);
                class ChildDefaultTemplate extends _template_base.TemplateBase {
                    constructor(name) {
                        super();
                        this.name = name
                    }
                }
                exports.ChildDefaultTemplate = ChildDefaultTemplate
            },
        11768:
            /*!*******************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/templates/m_empty_template.js ***!
              \*******************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.EmptyTemplate = void 0;
                var _renderer = (e = __webpack_require__( /*! ../../../core/renderer */ 64553), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                var _template_base = __webpack_require__( /*! ../../../core/templates/template_base */ 42186);
                class EmptyTemplate extends _template_base.TemplateBase {
                    _renderCore() {
                        return (0, _renderer.default)()
                    }
                }
                exports.EmptyTemplate = EmptyTemplate
            },
        88969:
            /*!**********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/templates/m_function_template.js ***!
              \**********************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.FunctionTemplate = void 0;
                var _template_base = __webpack_require__( /*! ../../../core/templates/template_base */ 42186);
                var _dom = __webpack_require__( /*! ../../../core/utils/dom */ 86858);
                class FunctionTemplate extends _template_base.TemplateBase {
                    constructor(render) {
                        super();
                        this._render = render
                    }
                    _renderCore(options) {
                        return (0, _dom.normalizeTemplateElement)(this._render(options))
                    }
                }
                exports.FunctionTemplate = FunctionTemplate
            },
        52538:
            /*!*************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/templates/m_template.js ***!
              \*************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.Template = void 0;
                var _renderer = (e = __webpack_require__( /*! ../../../core/renderer */ 64553), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                var _template_base = __webpack_require__( /*! ../../../core/templates/template_base */ 42186);
                var _template_engine_registry = __webpack_require__( /*! ../../../core/templates/template_engine_registry */ 35155);
                var _dom = __webpack_require__( /*! ../../../core/utils/dom */ 86858);
                (0, _template_engine_registry.registerTemplateEngine)("default", {
                    compile: element => (0, _dom.normalizeTemplateElement)(element),
                    render: (template, model, index) => template.clone()
                });
                (0, _template_engine_registry.setTemplateEngine)("default");
                class Template extends _template_base.TemplateBase {
                    constructor(element) {
                        super();
                        this._element = element
                    }
                    _renderCore(options) {
                        const {
                            transclude: transclude
                        } = options;
                        if (!transclude && !this._compiledTemplate) {
                            this._compiledTemplate = (0, _template_engine_registry.getCurrentTemplateEngine)().compile(this._element)
                        }
                        return (0, _renderer.default)("<div>").append(transclude ? this._element : (0, _template_engine_registry.getCurrentTemplateEngine)().render(this._compiledTemplate, options.model, options.index)).contents()
                    }
                    source() {
                        return (0, _renderer.default)(this._element).clone()
                    }
                }
                exports.Template = Template
            },
        31292:
            /*!******************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/templates/m_template_base.js ***!
              \******************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.renderedCallbacks = exports.TemplateBase = void 0;
                var _visibility_change = __webpack_require__( /*! ../../../common/core/events/visibility_change */ 18029);
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../core/dom_adapter */ 64960));
                var _errors = _interopRequireDefault(__webpack_require__( /*! ../../../core/errors */ 87129));
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553));
                var _callbacks = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/callbacks */ 84718));
                var _dom = __webpack_require__( /*! ../../../core/utils/dom */ 86858);

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const renderedCallbacks = exports.renderedCallbacks = (0, _callbacks.default)({
                    syncStrategy: true
                });
                exports.TemplateBase = class {
                    render(options) {
                        options = options || {};
                        const {
                            onRendered: onRendered
                        } = options;
                        delete options.onRendered;
                        let $result;
                        if (options.renovated && options.transclude && this._element) {
                            $result = (0, _renderer.default)("<div>").append(this._element).contents()
                        } else {
                            $result = this._renderCore(options)
                        }
                        this._ensureResultInContainer($result, options.container);
                        renderedCallbacks.fire($result, options.container);
                        onRendered && onRendered();
                        return $result
                    }
                    _ensureResultInContainer($result, container) {
                        if (!container) {
                            return
                        }
                        const $container = (0, _renderer.default)(container);
                        const resultInContainer = (0, _dom.contains)($container.get(0), $result.get(0));
                        $container.append($result);
                        if (resultInContainer) {
                            return
                        }
                        const resultInBody = (0, _dom.contains)(_dom_adapter.default.getBody(), $container.get(0));
                        if (!resultInBody) {
                            return
                        }(0, _visibility_change.triggerShownEvent)($result)
                    }
                    _renderCore() {
                        throw _errors.default.Error("E0001")
                    }
                }
            },
        70785:
            /*!*****************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/templates/m_template_engine_registry.js ***!
              \*****************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.getCurrentTemplateEngine = function() {
                    return currentTemplateEngine
                };
                exports.registerTemplateEngine = function(name, templateEngine) {
                    templateEngines[name] = templateEngine
                };
                exports.setTemplateEngine = function(templateEngine) {
                    if ((0, _type.isString)(templateEngine)) {
                        currentTemplateEngine = templateEngines[templateEngine];
                        if (!currentTemplateEngine) {
                            throw _errors.default.Error("E0020", templateEngine)
                        }
                    } else {
                        currentTemplateEngine = templateEngine
                    }
                };
                var _errors = (e = __webpack_require__( /*! ../../../core/errors */ 87129), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528);
                const templateEngines = {};
                let currentTemplateEngine
            },
        55594:
            /*!***************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/date.js ***!
              \***************************************************************************/
            function(__unused_webpack_module, exports) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.dateUtilsTs = void 0;
                exports.dateUtilsTs = {
                    addOffsets: (date, offsets) => {
                        const newDateMs = offsets.reduce(((result, offset) => result + offset), date.getTime());
                        return new Date(newDateMs)
                    },
                    isValidDate: date => Boolean(date && !isNaN(new Date(date).valueOf()))
                }
            },
        14136:
            /*!*****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/m_ajax.js ***!
              \*****************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.Ajax = void 0;
                var _http_request = _interopRequireDefault(__webpack_require__( /*! ../../../core/http_request */ 35688));
                var _ajax_utils = __webpack_require__( /*! ../../../core/utils/ajax_utils */ 28248);
                var _deferred = __webpack_require__( /*! ../../../core/utils/deferred */ 87739);
                var _dependency_injector = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/dependency_injector */ 89656));
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528);
                var _window = __webpack_require__( /*! ../../../core/utils/window */ 3104);

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const window = (0, _window.getWindow)();
                exports.Ajax = (0, _dependency_injector.default)({
                    sendRequest: function(options) {
                        const xhr = _http_request.default.getXhr();
                        const d = new _deferred.Deferred;
                        const result = d.promise();
                        const async = (0, _type.isDefined)(options.async) ? options.async : true;
                        const {
                            dataType: dataType
                        } = options;
                        const timeout = options.timeout || 0;
                        let timeoutId;
                        options.crossDomain = (0, _ajax_utils.isCrossDomain)(options.url);
                        const needScriptEvaluation = "jsonp" === dataType || "script" === dataType;
                        if (void 0 === options.cache) {
                            options.cache = !needScriptEvaluation
                        }
                        const callbackName = (0, _ajax_utils.getJsonpCallbackName)(options);
                        const headers = (0, _ajax_utils.getRequestHeaders)(options);
                        const requestOptions = (0, _ajax_utils.getRequestOptions)(options, headers);
                        const {
                            url: url
                        } = requestOptions;
                        const {
                            parameters: parameters
                        } = requestOptions;
                        if (callbackName) {
                            window[callbackName] = function(data) {
                                d.resolve(data, "success", xhr)
                            }
                        }
                        if (options.crossDomain && needScriptEvaluation) {
                            const reject = function() {
                                d.reject(xhr, "error")
                            };
                            const resolve = function() {
                                if ("jsonp" === dataType) {
                                    return
                                }
                                d.resolve(null, "success", xhr)
                            };
                            (0, _ajax_utils.evalCrossDomainScript)(url).then(resolve, reject);
                            return result
                        }
                        if (options.crossDomain && !("withCredentials" in xhr)) {
                            d.reject(xhr, "error");
                            return result
                        }
                        xhr.open((0, _ajax_utils.getMethod)(options), url, async, options.username, options.password);
                        if (async) {
                            xhr.timeout = timeout;
                            timeoutId = function(timeout, xhr) {
                                return timeout && setTimeout((function() {
                                    xhr.customStatus = "timeout";
                                    xhr.abort()
                                }), timeout)
                            }(timeout, xhr)
                        }
                        xhr.onreadystatechange = function(e) {
                            if (4 === xhr.readyState) {
                                clearTimeout(timeoutId);
                                if (status = xhr.status, status >= 200 && status < 300) {
                                    if (function(status) {
                                            return 204 !== status
                                        }(xhr.status)) {
                                        ! function(deferred, xhr, dataType) {
                                            const data = function(xhr) {
                                                return xhr.responseType && "text" !== xhr.responseType || "string" !== typeof xhr.responseText ? xhr.response : xhr.responseText
                                            }(xhr);
                                            switch (dataType) {
                                                case "jsonp":
                                                    (0, _ajax_utils.evalScript)(data);
                                                    break;
                                                case "script":
                                                    (0, _ajax_utils.evalScript)(data);
                                                    deferred.resolve(data, "success", xhr);
                                                    break;
                                                case "json":
                                                    try {
                                                        deferred.resolve(JSON.parse(data), "success", xhr)
                                                    } catch (e) {
                                                        deferred.reject(xhr, "parsererror", e)
                                                    }
                                                    break;
                                                default:
                                                    deferred.resolve(data, "success", xhr)
                                            }
                                        }(d, xhr, dataType)
                                    } else {
                                        d.resolve(null, "nocontent", xhr)
                                    }
                                } else {
                                    d.reject(xhr, xhr.customStatus || "error")
                                }
                            }
                            var status
                        };
                        if (options.upload) {
                            xhr.upload.onprogress = options.upload.onprogress;
                            xhr.upload.onloadstart = options.upload.onloadstart;
                            xhr.upload.onabort = options.upload.onabort
                        }
                        if (options.xhrFields) {
                            for (const field in options.xhrFields) {
                                xhr[field] = options.xhrFields[field]
                            }
                        }
                        if ("arraybuffer" === options.responseType) {
                            xhr.responseType = options.responseType
                        }
                        for (const name in headers) {
                            if (Object.prototype.hasOwnProperty.call(headers, name) && (0, _type.isDefined)(headers[name])) {
                                xhr.setRequestHeader(name, headers[name])
                            }
                        }
                        if (options.beforeSend) {
                            options.beforeSend(xhr)
                        }
                        xhr.send(parameters);
                        result.abort = function() {
                            xhr.abort()
                        };
                        return result
                    }
                })
            },
        42202:
            /*!***********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/m_ajax_utils.js ***!
              \***********************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.getJsonpCallbackName = exports.getAcceptHeader = exports.evalScript = exports.evalCrossDomainScript = void 0;
                exports.getMethod = getMethod;
                exports.isCrossDomain = exports.getRequestOptions = exports.getRequestHeaders = void 0;
                var _dom_adapter = (e = __webpack_require__( /*! ../../../core/dom_adapter */ 64960), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576);
                var _window = __webpack_require__( /*! ../../../core/utils/window */ 3104);
                const window = (0, _window.getWindow)();
                const createScript = function(options) {
                    const script = _dom_adapter.default.createElement("script");
                    for (const name in options) {
                        script[name] = options[name]
                    }
                    return script
                };
                const appendToHead = function(element) {
                    return _dom_adapter.default.getHead().appendChild(element)
                };
                const removeScript = function(scriptNode) {
                    scriptNode.parentNode.removeChild(scriptNode)
                };
                exports.evalScript = function(code) {
                    const script = createScript({
                        text: code
                    });
                    appendToHead(script);
                    removeScript(script)
                };
                exports.evalCrossDomainScript = function(url) {
                    const script = createScript({
                        src: url
                    });
                    return new Promise(((resolve, reject) => {
                        const events = {
                            load: resolve,
                            error: reject
                        };
                        const loadHandler = function(e) {
                            events[e.type]();
                            removeScript(script)
                        };
                        for (const event in events) {
                            _dom_adapter.default.listen(script, event, loadHandler)
                        }
                        appendToHead(script)
                    }))
                };

                function getMethod(options) {
                    return (options.method || "GET").toUpperCase()
                }
                const getAcceptHeader = function(options) {
                    const dataType = options.dataType || "*";
                    const scriptAccept = "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript";
                    const accepts = {
                        "*": "*/*",
                        text: "text/plain",
                        html: "text/html",
                        xml: "application/xml, text/xml",
                        json: "application/json, text/javascript",
                        jsonp: scriptAccept,
                        script: scriptAccept
                    };
                    (0, _extend.extendFromObject)(accepts, options.accepts, true);
                    return accepts[dataType] ? accepts[dataType] + ("*" !== dataType ? ", */*; q=0.01" : "") : accepts["*"]
                };
                exports.getAcceptHeader = getAcceptHeader;
                exports.getRequestHeaders = function(options) {
                    const headers = options.headers || {};
                    headers["Content-Type"] = headers["Content-Type"] || function(options) {
                        let defaultContentType;
                        if (options.data && !options.upload && "GET" !== getMethod(options)) {
                            defaultContentType = "application/x-www-form-urlencoded;charset=utf-8"
                        }
                        return options.contentType || defaultContentType
                    }(options);
                    headers.Accept = headers.Accept || getAcceptHeader(options);
                    if (!options.crossDomain && !headers["X-Requested-With"]) {
                        headers["X-Requested-With"] = "XMLHttpRequest"
                    }
                    return headers
                };
                exports.getJsonpCallbackName = function(options) {
                    if ("jsonp" === options.dataType) {
                        const random = Math.random().toString().replace(/\D/g, "");
                        const callbackName = options.jsonpCallback || `dxCallback${Date.now()}_${random}`;
                        const callbackParameter = options.jsonp || "callback";
                        options.data = options.data || {};
                        options.data[callbackParameter] = callbackName;
                        return callbackName
                    }
                };
                exports.getRequestOptions = function(options, headers) {
                    let params = options.data;
                    const paramsAlreadyString = "string" === typeof params;
                    let url = options.url || window.location.href;
                    if (!paramsAlreadyString && !options.cache) {
                        params = params || {};
                        params._ = Date.now()
                    }
                    if (params && !options.upload) {
                        if (!paramsAlreadyString) {
                            params = function(params) {
                                const result = [];
                                for (const name in params) {
                                    let value = params[name];
                                    if (void 0 === value) {
                                        continue
                                    }
                                    if (null === value) {
                                        value = ""
                                    }
                                    if ("function" === typeof value) {
                                        value = value()
                                    }
                                    result.push(`${encodeURIComponent(name)}=${encodeURIComponent(value)}`)
                                }
                                return result.join("&")
                            }(params)
                        }
                        if ("GET" === getMethod(options)) {
                            if ("" !== params) {
                                url += (url.indexOf("?") > -1 ? "&" : "?") + params
                            }
                            params = null
                        } else if (headers["Content-Type"] && headers["Content-Type"].indexOf("application/x-www-form-urlencoded") > -1) {
                            params = params.replace(/%20/g, "+")
                        }
                    }
                    return {
                        url: url,
                        parameters: params
                    }
                };
                exports.isCrossDomain = function(url) {
                    if (!(0, _window.hasWindow)()) {
                        return true
                    }
                    let crossDomain = false;
                    const originAnchor = _dom_adapter.default.createElement("a");
                    const urlAnchor = _dom_adapter.default.createElement("a");
                    originAnchor.href = window.location.href;
                    try {
                        urlAnchor.href = url;
                        urlAnchor.href = urlAnchor.href;
                        crossDomain = `${originAnchor.protocol}//${originAnchor.host}` !== `${urlAnchor.protocol}//${urlAnchor.host}`
                    } catch (e) {
                        crossDomain = true
                    }
                    return crossDomain
                }
            },
        28601:
            /*!******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/m_array.js ***!
              \******************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.wrapToArray = exports.removeDuplicates = exports.normalizeIndexes = exports.groupBy = exports.getUniqueValues = exports.getIntersection = void 0;
                var _config = (e = __webpack_require__( /*! ../../../core/config */ 66636), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                var _object = __webpack_require__( /*! ../../../core/utils/object */ 22263);
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528);

                function createOccurrenceMap(array) {
                    return array.reduce(((map, value) => {
                        const count = (map.get(value) ?? 0) + 1;
                        map.set(value, count);
                        return map
                    }), new Map)
                }
                exports.wrapToArray = function(item) {
                    return Array.isArray(item) ? item : [item]
                };
                exports.getUniqueValues = function(values) {
                    return [...new Set(values)]
                };
                exports.getIntersection = function(firstArray, secondArray) {
                    const toRemoveMap = createOccurrenceMap(secondArray);
                    return firstArray.filter((value => {
                        const occurrencesCount = toRemoveMap.get(value);
                        occurrencesCount && toRemoveMap.set(value, occurrencesCount - 1);
                        return occurrencesCount
                    }))
                };
                exports.removeDuplicates = function() {
                    let from = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [];
                    let toRemove = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : [];
                    const toRemoveMap = createOccurrenceMap(toRemove);
                    return from.filter((value => {
                        const occurrencesCount = toRemoveMap.get(value);
                        occurrencesCount && toRemoveMap.set(value, occurrencesCount - 1);
                        return !occurrencesCount
                    }))
                };
                exports.normalizeIndexes = function(items, indexPropName, currentItem, needIndexCallback) {
                    const indexedItems = {};
                    const {
                        useLegacyVisibleIndex: useLegacyVisibleIndex
                    } = (0, _config.default)();
                    let currentIndex = 0;
                    const shouldUpdateIndex = item => !(0, _type.isDefined)(item[indexPropName]) && (!needIndexCallback || needIndexCallback(item));
                    items.forEach((item => {
                        const index = item[indexPropName];
                        if (index >= 0) {
                            indexedItems[index] = indexedItems[index] || [];
                            if (item === currentItem) {
                                indexedItems[index].unshift(item)
                            } else {
                                indexedItems[index].push(item)
                            }
                        } else {
                            item[indexPropName] = void 0
                        }
                    }));
                    if (!useLegacyVisibleIndex) {
                        items.forEach((item => {
                            if (shouldUpdateIndex(item)) {
                                while (indexedItems[currentIndex]) {
                                    currentIndex++
                                }
                                indexedItems[currentIndex] = [item];
                                currentIndex++
                            }
                        }))
                    }
                    currentIndex = 0;
                    (0, _object.orderEach)(indexedItems, (function(index, items) {
                        items.forEach((item => {
                            if (index >= 0) {
                                item[indexPropName] = currentIndex++
                            }
                        }))
                    }));
                    if (useLegacyVisibleIndex) {
                        items.forEach((item => {
                            if (shouldUpdateIndex(item)) {
                                item[indexPropName] = currentIndex++
                            }
                        }))
                    }
                };
                exports.groupBy = (array, getGroupName) => array.reduce(((groupedResult, item) => {
                    const groupName = getGroupName(item);
                    groupedResult[groupName] = groupedResult[groupName] ?? [];
                    groupedResult[groupName].push(item);
                    return groupedResult
                }), {})
            },
        33436:
            /*!********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/m_browser.js ***!
              \********************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.browser = void 0;
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576);
                var _window = __webpack_require__( /*! ../../../core/utils/window */ 3104);
                const navigator = (0, _window.getNavigator)();
                const webkitRegExp = /(webkit)[ /]([\w.]+)/;
                const mozillaRegExp = /(mozilla)(?:.*? rv:([\w.]+))/;
                const browserFromUA = ua => {
                    ua = ua.toLowerCase();
                    const result = {};
                    const matches = webkitRegExp.exec(ua) || ua.indexOf("compatible") < 0 && mozillaRegExp.exec(ua) || [];
                    let browserName = matches[1];
                    let browserVersion = matches[2];
                    if ("webkit" === browserName) {
                        result.webkit = true;
                        if (ua.indexOf("chrome") >= 0 || ua.indexOf("crios") >= 0) {
                            browserName = "chrome";
                            browserVersion = /(?:chrome|crios)\/(\d+\.\d+)/.exec(ua);
                            browserVersion = browserVersion && browserVersion[1]
                        } else if (ua.indexOf("fxios") >= 0) {
                            browserName = "mozilla";
                            browserVersion = /fxios\/(\d+\.\d+)/.exec(ua);
                            browserVersion = browserVersion && browserVersion[1]
                        } else if (ua.indexOf("safari") >= 0 && /version|phantomjs/.test(ua)) {
                            browserName = "safari";
                            browserVersion = /(?:version|phantomjs)\/([0-9.]+)/.exec(ua);
                            browserVersion = browserVersion && browserVersion[1]
                        } else {
                            browserName = "unknown";
                            browserVersion = /applewebkit\/([0-9.]+)/.exec(ua);
                            browserVersion = browserVersion && browserVersion[1]
                        }
                    }
                    if (browserName) {
                        result[browserName] = true;
                        result.version = browserVersion
                    }
                    return result
                };
                exports.browser = (0, _extend.extend)({
                    _fromUA: browserFromUA
                }, browserFromUA(navigator.userAgent))
            },
        58060:
            /*!**********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/m_call_once.js ***!
              \**********************************************************************************/
            function(__unused_webpack_module, exports) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.callOnce = void 0;
                exports.callOnce = function(handler) {
                    let result;
                    let wrappedHandler = function() {
                        result = handler.apply(this, arguments);
                        wrappedHandler = function() {
                            return result
                        };
                        return result
                    };
                    return function() {
                        return wrappedHandler.apply(this, arguments)
                    }
                }
            },
        63172:
            /*!**********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/m_callbacks.js ***!
              \**********************************************************************************/
            function(__unused_webpack_module, exports) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = exports.Callbacks = void 0;
                const Callback = function(options) {
                    this._options = options || {};
                    this._list = [];
                    this._queue = [];
                    this._firing = false;
                    this._fired = false;
                    this._firingIndexes = []
                };
                Callback.prototype._fireCore = function(context, args) {
                    const firingIndexes = this._firingIndexes;
                    const list = this._list;
                    const {
                        stopOnFalse: stopOnFalse
                    } = this._options;
                    const step = firingIndexes.length;
                    for (firingIndexes[step] = 0; firingIndexes[step] < list.length; firingIndexes[step]++) {
                        const result = list[firingIndexes[step]].apply(context, args);
                        if (false === result && stopOnFalse) {
                            break
                        }
                    }
                    firingIndexes.pop()
                };
                Callback.prototype.add = function(fn) {
                    if ("function" === typeof fn && (!this._options.unique || !this.has(fn))) {
                        this._list.push(fn)
                    }
                    return this
                };
                Callback.prototype.remove = function(fn) {
                    const list = this._list;
                    const firingIndexes = this._firingIndexes;
                    const index = list.indexOf(fn);
                    if (index > -1) {
                        list.splice(index, 1);
                        if (this._firing && firingIndexes.length) {
                            for (let step = 0; step < firingIndexes.length; step++) {
                                if (index <= firingIndexes[step]) {
                                    firingIndexes[step]--
                                }
                            }
                        }
                    }
                    return this
                };
                Callback.prototype.has = function(fn) {
                    const list = this._list;
                    return fn ? list.indexOf(fn) > -1 : !!list.length
                };
                Callback.prototype.empty = function(fn) {
                    this._list = [];
                    return this
                };
                Callback.prototype.fireWith = function(context, args) {
                    const queue = this._queue;
                    args = args || [];
                    args = args.slice ? args.slice() : args;
                    if (this._options.syncStrategy) {
                        this._firing = true;
                        this._fireCore(context, args)
                    } else {
                        queue.push([context, args]);
                        if (this._firing) {
                            return
                        }
                        this._firing = true;
                        while (queue.length) {
                            const memory = queue.shift();
                            this._fireCore(memory[0], memory[1])
                        }
                    }
                    this._firing = false;
                    this._fired = true;
                    return this
                };
                Callback.prototype.fire = function() {
                    this.fireWith(this, arguments)
                };
                Callback.prototype.fired = function() {
                    return this._fired
                };
                const Callbacks = function(options) {
                    return new Callback(options)
                };
                exports.Callbacks = Callbacks;
                exports.default = Callbacks
            },
        39315:
            /*!*******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/m_common.js ***!
              \*******************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.uiLayerInitialized = exports.splitPair = exports.pairToObject = exports.normalizeKey = exports.noop = exports.grep = exports.getKeyHash = exports.findBestMatches = exports.executeAsync = exports.escapeRegExp = exports.equalByValue = exports.ensureDefined = exports.denormalizeKey = exports.deferUpdater = exports.deferUpdate = exports.deferRenderer = exports.deferRender = exports.default = exports.asyncNoop = exports.applyServerDecimalSeparator = void 0;
                var _config = _interopRequireDefault(__webpack_require__( /*! ../../../core/config */ 66636));
                var _guid = _interopRequireDefault(__webpack_require__( /*! ../../../core/guid */ 19427));
                var _data = __webpack_require__( /*! ../../../core/utils/data */ 31e3);
                var _deferred = __webpack_require__( /*! ../../../core/utils/deferred */ 87739);
                var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274);
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528);

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }

                function _extends() {
                    return _extends = Object.assign ? Object.assign.bind() : function(n) {
                        for (var e = 1; e < arguments.length; e++) {
                            var t = arguments[e];
                            for (var r in t) {
                                ({}).hasOwnProperty.call(t, r) && (n[r] = t[r])
                            }
                        }
                        return n
                    }, _extends.apply(null, arguments)
                }
                exports.uiLayerInitialized = new _deferred.Deferred;
                const ensureDefined = function(value, defaultValue) {
                    return (0, _type.isDefined)(value) ? value : defaultValue
                };
                exports.ensureDefined = ensureDefined;
                const executeAsync = function(action, context) {
                    const deferred = new _deferred.Deferred;
                    const normalizedContext = context || this;
                    const task = {
                        promise: deferred.promise(),
                        abort() {
                            clearTimeout(timerId);
                            deferred.rejectWith(normalizedContext)
                        }
                    };
                    const timerId = (arguments[2] || setTimeout)((function() {
                        const result = action.call(normalizedContext);
                        if (result && result.done && (0, _type.isFunction)(result.done)) {
                            result.done((function() {
                                deferred.resolveWith(normalizedContext)
                            }))
                        } else {
                            deferred.resolveWith(normalizedContext)
                        }
                    }), "number" === typeof context ? context : 0);
                    return task
                };
                exports.executeAsync = executeAsync;
                const delayedFuncs = [];
                const delayedNames = [];
                const delayedDeferreds = [];
                let executingName;
                const deferExecute = function(name, func, deferred) {
                    if (executingName && executingName !== name) {
                        delayedFuncs.push(func);
                        delayedNames.push(name);
                        deferred = deferred || new _deferred.Deferred;
                        delayedDeferreds.push(deferred);
                        return deferred
                    }
                    const oldExecutingName = executingName;
                    const currentDelayedCount = delayedDeferreds.length;
                    executingName = name;
                    let result = func();
                    if (!result) {
                        if (delayedDeferreds.length > currentDelayedCount) {
                            result = _deferred.when.apply(this, delayedDeferreds.slice(currentDelayedCount))
                        } else if (deferred) {
                            deferred.resolve()
                        }
                    }
                    executingName = oldExecutingName;
                    if (deferred && result && result.done) {
                        result.done(deferred.resolve).fail(deferred.reject)
                    }
                    if (!executingName && delayedFuncs.length) {
                        ("render" === delayedNames.shift() ? deferRender : deferUpdate)(delayedFuncs.shift(), delayedDeferreds.shift())
                    }
                    return result || (0, _deferred.when)()
                };
                const deferRender = function(func, deferred) {
                    return deferExecute("render", func, deferred)
                };
                exports.deferRender = deferRender;
                const deferUpdate = function(func, deferred) {
                    return deferExecute("update", func, deferred)
                };
                exports.deferUpdate = deferUpdate;
                const deferRenderer = function(func) {
                    return function() {
                        const that = this;
                        return deferExecute("render", (function() {
                            return func.call(that)
                        }))
                    }
                };
                exports.deferRenderer = deferRenderer;
                const deferUpdater = function(func) {
                    return function() {
                        const that = this;
                        return deferExecute("update", (function() {
                            return func.call(that)
                        }))
                    }
                };
                exports.deferUpdater = deferUpdater;
                const findBestMatches = (targetFilter, items, mapFn) => {
                    const bestMatches = [];
                    let maxMatchCount = 0;
                    (0, _iterator.each)(items, ((index, itemSrc) => {
                        let matchCount = 0;
                        const item = mapFn ? mapFn(itemSrc) : itemSrc;
                        (0, _iterator.each)(targetFilter, ((paramName, targetValue) => {
                            const value = item[paramName];
                            if (void 0 === value) {
                                return
                            }
                            if (match(value, targetValue)) {
                                matchCount++;
                                return
                            }
                            matchCount = -1;
                            return false
                        }));
                        if (matchCount < maxMatchCount) {
                            return
                        }
                        if (matchCount > maxMatchCount) {
                            bestMatches.length = 0;
                            maxMatchCount = matchCount
                        }
                        bestMatches.push(itemSrc)
                    }));
                    return bestMatches
                };
                exports.findBestMatches = findBestMatches;
                const match = function(value, targetValue) {
                    if (Array.isArray(value) && Array.isArray(targetValue)) {
                        let mismatch = false;
                        (0, _iterator.each)(value, ((index, valueItem) => {
                            if (valueItem !== targetValue[index]) {
                                mismatch = true;
                                return false
                            }
                        }));
                        if (mismatch) {
                            return false
                        }
                        return true
                    }
                    if (value === targetValue) {
                        return true
                    }
                    return false
                };
                const splitPair = function(raw) {
                    switch ((0, _type.type)(raw)) {
                        case "string":
                            return raw.split(/\s+/, 2);
                        case "object":
                            return [raw.x ?? raw.h, raw.y ?? raw.v];
                        case "number":
                            return [raw];
                        case "array":
                            return raw;
                        default:
                            return null
                    }
                };
                exports.splitPair = splitPair;
                const normalizeKey = function(id) {
                    let key = (0, _type.isString)(id) ? id : id.toString();
                    const arr = key.match(/[^a-zA-Z0-9_]/g);
                    arr && (0, _iterator.each)(arr, ((_, sign) => {
                        key = key.replace(sign, `__${sign.charCodeAt()}__`)
                    }));
                    return key
                };
                exports.normalizeKey = normalizeKey;
                const denormalizeKey = function(key) {
                    const arr = key.match(/__\d+__/g);
                    arr && arr.forEach((char => {
                        const charCode = parseInt(char.replace("__", ""));
                        key = key.replace(char, String.fromCharCode(charCode))
                    }));
                    return key
                };
                exports.denormalizeKey = denormalizeKey;
                const pairToObject = function(raw, preventRound) {
                    const pair = splitPair(raw);
                    let h = preventRound ? parseFloat(pair && pair[0]) : parseInt(pair && pair[0], 10);
                    let v = preventRound ? parseFloat(pair && pair[1]) : parseInt(pair && pair[1], 10);
                    if (!isFinite(h)) {
                        h = 0
                    }
                    if (!isFinite(v)) {
                        v = h
                    }
                    return {
                        h: h,
                        v: v
                    }
                };
                exports.pairToObject = pairToObject;
                const getKeyHash = function(key) {
                    if (key instanceof _guid.default) {
                        return key.toString()
                    }
                    if ((0, _type.isObject)(key) || Array.isArray(key)) {
                        try {
                            const keyHash = JSON.stringify(key);
                            return "{}" === keyHash ? key : keyHash
                        } catch (e) {
                            return key
                        }
                    }
                    return key
                };
                exports.getKeyHash = getKeyHash;
                const escapeRegExp = function(string) {
                    return string.replace(/[[\]{}\-()*+?.\\^$|\s]/g, "\\$&")
                };
                exports.escapeRegExp = escapeRegExp;
                const applyServerDecimalSeparator = function(value) {
                    const separator = (0, _config.default)().serverDecimalSeparator;
                    if ((0, _type.isDefined)(value)) {
                        value = value.toString().replace(".", separator)
                    }
                    return value
                };
                exports.applyServerDecimalSeparator = applyServerDecimalSeparator;
                const noop = function() {};
                exports.noop = noop;
                const asyncNoop = function() {
                    return (new _deferred.Deferred).resolve().promise()
                };
                exports.asyncNoop = asyncNoop;
                const grep = function(elements, checkFunction, invert) {
                    const result = [];
                    let check;
                    const expectedCheck = !invert;
                    for (let i = 0; i < elements.length; i++) {
                        check = !!checkFunction(elements[i], i);
                        if (check === expectedCheck) {
                            result.push(elements[i])
                        }
                    }
                    return result
                };
                exports.grep = grep;
                const DEFAULT_EQUAL_BY_VALUE_OPTS = {
                    maxDepth: 3,
                    strict: true
                };
                const compareByValue = (value1, value2, depth, options) => {
                    const {
                        strict: strict,
                        maxDepth: maxDepth
                    } = options;
                    const comparable1 = (0, _data.toComparable)(value1, true);
                    const comparable2 = (0, _data.toComparable)(value2, true);
                    const comparisonResult = strict ? comparable1 === comparable2 : comparable1 == comparable2;
                    switch (true) {
                        case comparisonResult:
                        case depth >= maxDepth:
                            return true;
                        case (0, _type.isObject)(comparable1) && (0, _type.isObject)(comparable2):
                            return ((object1, object2, depth, options) => {
                                const keys1 = Object.keys(object1);
                                const keys2 = Object.keys(object2);
                                if (keys1.length !== keys2.length) {
                                    return false
                                }
                                const keys2Set = new Set(keys2);
                                return !keys1.some((key => !keys2Set.has(key) || !compareByValue(object1[key], object2[key], depth + 1, options)))
                            })(comparable1, comparable2, depth, options);
                        case Array.isArray(comparable1) && Array.isArray(comparable2):
                            return ((array1, array2, depth, options) => {
                                if (array1.length !== array2.length) {
                                    return false
                                }
                                return !array1.some(((item, idx) => !compareByValue(item, array2[idx], depth + 1, _extends({}, options, {
                                    strict: true
                                }))))
                            })(comparable1, comparable2, depth, options);
                        default:
                            return false
                    }
                };
                const equalByValue = function(value1, value2) {
                    let options = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : DEFAULT_EQUAL_BY_VALUE_OPTS;
                    const compareOptions = _extends({}, DEFAULT_EQUAL_BY_VALUE_OPTS, options);
                    return compareByValue(value1, value2, 0, compareOptions)
                };
                exports.equalByValue = equalByValue;
                exports.default = {
                    ensureDefined: ensureDefined,
                    executeAsync: executeAsync,
                    deferRender: deferRender,
                    deferUpdate: deferUpdate,
                    deferRenderer: deferRenderer,
                    deferUpdater: deferUpdater,
                    findBestMatches: findBestMatches,
                    splitPair: splitPair,
                    normalizeKey: normalizeKey,
                    denormalizeKey: denormalizeKey,
                    pairToObject: pairToObject,
                    getKeyHash: getKeyHash,
                    escapeRegExp: escapeRegExp,
                    applyServerDecimalSeparator: applyServerDecimalSeparator,
                    noop: noop,
                    asyncNoop: asyncNoop,
                    grep: grep,
                    equalByValue: equalByValue
                }
            },
        90834:
            /*!***********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/m_comparator.js ***!
              \***********************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.equals = void 0;
                var _dom_adapter = (e = __webpack_require__( /*! ../../../core/dom_adapter */ 64960), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                var _data = __webpack_require__( /*! ../../../core/utils/data */ 31e3);
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528);
                exports.equals = function(oldValue, newValue) {
                    oldValue = (0, _data.toComparable)(oldValue, true);
                    newValue = (0, _data.toComparable)(newValue, true);
                    if (oldValue && newValue && (0, _type.isRenderer)(oldValue) && (0, _type.isRenderer)(newValue)) {
                        return newValue.is(oldValue)
                    }
                    const oldValueIsNaN = oldValue !== oldValue;
                    const newValueIsNaN = newValue !== newValue;
                    if (oldValueIsNaN && newValueIsNaN) {
                        return true
                    }
                    if (0 === oldValue && 0 === newValue) {
                        return function(oldValue, newValue) {
                            return 1 / oldValue === 1 / newValue
                        }(oldValue, newValue)
                    }
                    if (null === oldValue || "object" !== typeof oldValue || _dom_adapter.default.isElementNode(oldValue)) {
                        return oldValue === newValue
                    }
                    return false
                }
            },
        35005:
            /*!********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/m_console.js ***!
              \********************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.logger = exports.default = exports.debug = void 0;
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528);
                const noop = function() {};
                const getConsoleMethod = function(method) {
                    if ("undefined" === typeof console || !(0, _type.isFunction)(console[method])) {
                        return noop
                    }
                    return console[method].bind(console)
                };
                const logger = exports.logger = {
                    log: getConsoleMethod("log"),
                    info: getConsoleMethod("info"),
                    warn: getConsoleMethod("warn"),
                    error: getConsoleMethod("error")
                };
                const debug = exports.debug = function() {
                    function assert(condition, message) {
                        if (!condition) {
                            throw new Error(message)
                        }
                    }
                    return {
                        assert: assert,
                        assertParam: function(parameter, message) {
                            assert(null !== parameter && void 0 !== parameter, message)
                        }
                    }
                }();
                exports.default = {
                    logger: logger,
                    debug: debug
                }
            },
        93142:
            /*!*****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/m_data.js ***!
              \*****************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.toComparable = exports.getPathParts = exports.compileSetter = exports.compileGetter = void 0;
                var _class = _interopRequireDefault(__webpack_require__( /*! ../../../core/class */ 55620));
                var _errors = _interopRequireDefault(__webpack_require__( /*! ../../../core/errors */ 87129));
                var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274);
                var _object = __webpack_require__( /*! ../../../core/utils/object */ 22263);
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528);
                var _variable_wrapper = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/variable_wrapper */ 40216));

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const unwrapVariable = _variable_wrapper.default.unwrap;
                const {
                    isWrapped: isWrapped
                } = _variable_wrapper.default;
                const {
                    assign: assign
                } = _variable_wrapper.default;
                const getPathParts = function(name) {
                    return (expr = name, expr.replace(/\[/g, ".").replace(/\]/g, "")).split(".");
                    var expr
                };
                exports.getPathParts = getPathParts;
                const assignPropValue = function(obj, propName, value, options) {
                    if ("this" === propName) {
                        throw new _errors.default.Error("E4016")
                    }
                    const propValue = obj[propName];
                    if (options.unwrapObservables && isWrapped(propValue)) {
                        assign(propValue, value)
                    } else {
                        obj[propName] = value
                    }
                };
                const prepareOptions = function(options) {
                    options = options || {};
                    options.unwrapObservables = void 0 !== options.unwrapObservables ? options.unwrapObservables : true;
                    return options
                };

                function unwrap(value, options) {
                    return options.unwrapObservables ? unwrapVariable(value) : value
                }
                const compileGetter = function(expr) {
                    if (arguments.length > 1) {
                        expr = [].slice.call(arguments)
                    }
                    if (!expr || "this" === expr) {
                        return function(obj) {
                            return obj
                        }
                    }
                    if ("string" === typeof expr) {
                        const path = getPathParts(expr);
                        return function(obj, options) {
                            options = prepareOptions(options);
                            const functionAsIs = options.functionsAsIs;
                            const hasDefaultValue = "defaultValue" in options;
                            let current = unwrap(obj, options);
                            for (let i = 0; i < path.length; i++) {
                                if (!current) {
                                    if (null == current && hasDefaultValue) {
                                        return options.defaultValue
                                    }
                                    break
                                }
                                const pathPart = path[i];
                                if (hasDefaultValue && (0, _type.isObject)(current) && !(pathPart in current)) {
                                    return options.defaultValue
                                }
                                let next = unwrap(current[pathPart], options);
                                if (!functionAsIs && (0, _type.isFunction)(next)) {
                                    next = next.call(current)
                                }
                                current = next
                            }
                            return current
                        }
                    }
                    if (Array.isArray(expr)) {
                        return function(getters) {
                            const compiledGetters = {};
                            for (let i = 0, l = getters.length; i < l; i++) {
                                const getter = getters[i];
                                compiledGetters[getter] = compileGetter(getter)
                            }
                            return function(obj, options) {
                                let result;
                                (0, _iterator.each)(compiledGetters, (function(name) {
                                    const value = this(obj, options);
                                    if (void 0 === value) {
                                        return
                                    }
                                    let current = result || (result = {});
                                    const path = name.split(".");
                                    const last = path.length - 1;
                                    for (let i = 0; i < last; i++) {
                                        const pathItem = path[i];
                                        if (!(pathItem in current)) {
                                            current[pathItem] = {}
                                        }
                                        current = current[pathItem]
                                    }
                                    current[path[last]] = value
                                }));
                                return result
                            }
                        }(expr)
                    }
                    if ((0, _type.isFunction)(expr)) {
                        return expr
                    }
                };
                exports.compileGetter = compileGetter;

                function toLowerCase(value, options) {
                    return null !== options && void 0 !== options && options.locale ? value.toLocaleLowerCase(options.locale) : value.toLowerCase()
                }

                function toUpperCase(value, options) {
                    return null !== options && void 0 !== options && options.locale ? value.toLocaleUpperCase(options.locale) : value.toUpperCase()
                }
                const ensurePropValueDefined = function(obj, propName, value, options) {
                    if ((0, _type.isDefined)(value)) {
                        return value
                    }
                    const newValue = {};
                    assignPropValue(obj, propName, newValue, options);
                    return newValue
                };
                exports.compileSetter = function(expr) {
                    expr = getPathParts(expr || "this");
                    const lastLevelIndex = expr.length - 1;
                    return function(obj, value, options) {
                        options = prepareOptions(options);
                        let currentValue = unwrap(obj, options);
                        expr.forEach((function(propertyName, levelIndex) {
                            let propertyValue = function(obj, propName, options) {
                                options = options || {};
                                if ("this" === propName) {
                                    return unwrap(obj, options)
                                }
                                return unwrap(obj[propName], options)
                            }(currentValue, propertyName, options);
                            const isPropertyFunc = !options.functionsAsIs && (0, _type.isFunction)(propertyValue) && !isWrapped(propertyValue);
                            if (levelIndex === lastLevelIndex) {
                                if (options.merge && (0, _type.isPlainObject)(value) && (!(0, _type.isDefined)(propertyValue) || (0, _type.isPlainObject)(propertyValue))) {
                                    propertyValue = ensurePropValueDefined(currentValue, propertyName, propertyValue, options);
                                    (0, _object.deepExtendArraySafe)(propertyValue, value, false, true)
                                } else if (isPropertyFunc) {
                                    currentValue[propertyName](value)
                                } else {
                                    assignPropValue(currentValue, propertyName, value, options)
                                }
                            } else {
                                propertyValue = ensurePropValueDefined(currentValue, propertyName, propertyValue, options);
                                if (isPropertyFunc) {
                                    propertyValue = propertyValue.call(currentValue)
                                }
                                currentValue = propertyValue
                            }
                        }))
                    }
                };
                exports.toComparable = function(value, caseSensitive) {
                    var _options$collatorOpti;
                    let options = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};
                    if (value instanceof Date) {
                        return value.getTime()
                    }
                    const collatorSensitivity = null === options || void 0 === options || null === (_options$collatorOpti = options.collatorOptions) || void 0 === _options$collatorOpti ? void 0 : _options$collatorOpti.sensitivity;
                    if (value && value instanceof _class.default && value.valueOf) {
                        value = value.valueOf()
                    } else if ("string" === typeof value && ("base" === collatorSensitivity || "case" === collatorSensitivity)) {
                        const REMOVE_DIACRITICAL_MARKS_REGEXP = /[\u0300-\u036f]/g;
                        if ("base" === collatorSensitivity) {
                            value = toLowerCase(value, options)
                        }
                        value = value.normalize("NFD").replace(REMOVE_DIACRITICAL_MARKS_REGEXP, "")
                    }
                    const isCaseSensitive = caseSensitive || "case" === collatorSensitivity || "variant" === collatorSensitivity;
                    if ("string" === typeof value && !isCaseSensitive) {
                        var _options$locale;
                        const locale = null === options || void 0 === options || null === (_options$locale = options.locale) || void 0 === _options$locale ? void 0 : _options$locale.toLowerCase();
                        const useUpperCase = locale && !!["hy", "el"].find((code => locale === code || locale.startsWith(`${code}-`)));
                        return (useUpperCase ? toUpperCase : toLowerCase)(value, options)
                    }
                    return value
                }
            },
        66570:
            /*!*****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/m_date.js ***!
              \*****************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.dateUtils = void 0;
                var _date_serialization = (e = __webpack_require__( /*! ../../../core/utils/date_serialization */ 71051), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                var _inflector = __webpack_require__( /*! ../../../core/utils/inflector */ 53124);
                var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274);
                var _math = __webpack_require__( /*! ../../../core/utils/math */ 50254);
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528);
                var _toMilliseconds = __webpack_require__( /*! ../../utils/toMilliseconds */ 24491);
                const dateUnitIntervals = ["millisecond", "second", "minute", "hour", "day", "week", "month", "quarter", "year"];
                const convertMillisecondsToDateUnits = function(value) {
                    let i;
                    let dateUnitCount;
                    let dateUnitInterval;
                    const dateUnitIntervals = ["millisecond", "second", "minute", "hour", "day", "month", "year"];
                    const result = {};
                    for (i = dateUnitIntervals.length - 1; i >= 0; i--) {
                        dateUnitInterval = dateUnitIntervals[i];
                        dateUnitCount = Math.floor(value / (0, _toMilliseconds.toMilliseconds)(dateUnitInterval));
                        if (dateUnitCount > 0) {
                            result[`${dateUnitInterval}s`] = dateUnitCount;
                            value -= convertDateUnitToMilliseconds(dateUnitInterval, dateUnitCount)
                        }
                    }
                    return result
                };

                function convertDateUnitToMilliseconds(dateUnit, count) {
                    return (0, _toMilliseconds.toMilliseconds)(dateUnit) * count
                }

                function getDateUnitInterval(tickInterval) {
                    let maxInterval = -1;
                    let i;
                    if ((0, _type.isString)(tickInterval)) {
                        return tickInterval
                    }
                    if ((0, _type.isObject)(tickInterval)) {
                        (0, _iterator.each)(tickInterval, (function(key, value) {
                            for (i = 0; i < dateUnitIntervals.length; i++) {
                                if (value && (key === `${dateUnitIntervals[i]}s` || key === dateUnitIntervals[i]) && maxInterval < i) {
                                    maxInterval = i
                                }
                            }
                        }));
                        return dateUnitIntervals[maxInterval]
                    }
                    return ""
                }
                const tickIntervalToFormatMap = {
                    millisecond: "millisecond",
                    second: "longtime",
                    minute: "shorttime",
                    hour: "shorttime",
                    day: "day",
                    week: "day",
                    month: "month",
                    quarter: "quarter",
                    year: "year"
                };
                const getQuarter = function(month) {
                    return Math.floor(month / 3)
                };
                const getFirstQuarterMonth = function(month) {
                    return 3 * getQuarter(month)
                };

                function correctDateWithUnitBeginning(date, dateInterval, withCorrection, firstDayOfWeek) {
                    date = new Date(date.getTime());
                    const oldDate = new Date(date.getTime());
                    let firstQuarterMonth;
                    let month;
                    const dateUnitInterval = getDateUnitInterval(dateInterval);
                    switch (dateUnitInterval) {
                        case "second":
                            date = new Date(1e3 * Math.floor(oldDate.getTime() / 1e3));
                            break;
                        case "minute":
                            date = new Date(6e4 * Math.floor(oldDate.getTime() / 6e4));
                            break;
                        case "hour":
                            date = new Date(36e5 * Math.floor(oldDate.getTime() / 36e5));
                            break;
                        case "year":
                            date.setMonth(0);
                        case "month":
                            date.setDate(1);
                        case "day":
                            date.setHours(0, 0, 0, 0);
                            break;
                        case "week":
                            date = getFirstWeekDate(date, firstDayOfWeek || 0);
                            date.setHours(0, 0, 0, 0);
                            break;
                        case "quarter":
                            firstQuarterMonth = getFirstQuarterMonth(date.getMonth());
                            month = date.getMonth();
                            date.setDate(1);
                            date.setHours(0, 0, 0, 0);
                            if (month !== firstQuarterMonth) {
                                date.setMonth(firstQuarterMonth)
                            }
                    }
                    if (withCorrection && "hour" !== dateUnitInterval && "minute" !== dateUnitInterval && "second" !== dateUnitInterval) {
                        fixTimezoneGap(oldDate, date)
                    }
                    return date
                }

                function trimTime(date) {
                    return correctDateWithUnitBeginning(date, "day")
                }

                function addDateInterval(value, interval, dir) {
                    const result = new Date(value.getTime());
                    const intervalObject = (0, _type.isString)(interval) ? getDateIntervalByString(interval.toLowerCase()) : (0, _type.isNumeric)(interval) ? convertMillisecondsToDateUnits(interval) : interval;
                    if (intervalObject.years) {
                        result.setFullYear(result.getFullYear() + intervalObject.years * dir)
                    }
                    if (intervalObject.quarters) {
                        result.setMonth(result.getMonth() + 3 * intervalObject.quarters * dir)
                    }
                    if (intervalObject.months) {
                        result.setMonth(result.getMonth() + intervalObject.months * dir)
                    }
                    if (intervalObject.weeks) {
                        result.setDate(result.getDate() + 7 * intervalObject.weeks * dir)
                    }
                    if (intervalObject.days) {
                        result.setDate(result.getDate() + intervalObject.days * dir)
                    }
                    if (intervalObject.hours) {
                        result.setTime(result.getTime() + 36e5 * intervalObject.hours * dir)
                    }
                    if (intervalObject.minutes) {
                        result.setTime(result.getTime() + 6e4 * intervalObject.minutes * dir)
                    }
                    if (intervalObject.seconds) {
                        result.setTime(result.getTime() + 1e3 * intervalObject.seconds * dir)
                    }
                    if (intervalObject.milliseconds) {
                        result.setTime(result.getTime() + intervalObject.milliseconds * dir)
                    }
                    return result
                }
                const addInterval = function(value, interval, isNegative) {
                    const dir = isNegative ? -1 : 1;
                    return (0, _type.isDate)(value) ? addDateInterval(value, interval, dir) : (0, _math.adjust)(value + interval * dir, interval)
                };

                function getLastMonthDay(date) {
                    const resultDate = createDateWithFullYear(date.getFullYear(), date.getMonth() + 1, 0);
                    return resultDate.getDate()
                }

                function getDateIntervalByString(intervalString) {
                    const result = {};
                    switch (intervalString) {
                        case "year":
                            result.years = 1;
                            break;
                        case "month":
                            result.months = 1;
                            break;
                        case "quarter":
                            result.months = 3;
                            break;
                        case "week":
                            result.weeks = 1;
                            break;
                        case "day":
                            result.days = 1;
                            break;
                        case "hour":
                            result.hours = 1;
                            break;
                        case "minute":
                            result.minutes = 1;
                            break;
                        case "second":
                            result.seconds = 1;
                            break;
                        case "millisecond":
                            result.milliseconds = 1
                    }
                    return result
                }

                function sameDate(date1, date2) {
                    return sameMonthAndYear(date1, date2) && date1.getDate() === date2.getDate()
                }

                function sameMonthAndYear(date1, date2) {
                    return sameYear(date1, date2) && date1.getMonth() === date2.getMonth()
                }

                function sameYear(date1, date2) {
                    return date1 && date2 && date1.getFullYear() === date2.getFullYear()
                }

                function getFirstDecadeInCentury(date) {
                    return date && date.getFullYear() - date.getFullYear() % 100
                }

                function getFirstYearInDecade(date) {
                    return date && date.getFullYear() - date.getFullYear() % 10
                }

                function getFirstWeekDate(date, firstDayOfWeek) {
                    const delta = (date.getDay() - firstDayOfWeek + 7) % 7;
                    const result = new Date(date);
                    result.setDate(date.getDate() - delta);
                    return result
                }

                function getUTCTime(date) {
                    return Date.UTC(date.getFullYear(), date.getMonth(), date.getDate())
                }

                function getFirstDateInYear(year) {
                    return new Date(year, 0, 1)
                }

                function getLastDateInYear(year) {
                    return new Date(year, 11, 31)
                }

                function getDayWeekNumber(date, firstDayOfWeek) {
                    let day = date.getDay() - firstDayOfWeek + 1;
                    if (day <= 0) {
                        day += 7
                    }
                    return day
                }

                function normalizeDate(date, min, max) {
                    let normalizedDate = date;
                    if (!(0, _type.isDefined)(date)) {
                        return date
                    }
                    if ((0, _type.isDefined)(min) && date < min) {
                        normalizedDate = min
                    }
                    if ((0, _type.isDefined)(max) && date > max) {
                        normalizedDate = max
                    }
                    return normalizedDate
                }

                function fixTimezoneGap(oldDate, newDate) {
                    if (!(0, _type.isDefined)(oldDate)) {
                        return
                    }
                    const diff = newDate.getHours() - oldDate.getHours();
                    if (0 === diff) {
                        return
                    }
                    const sign = 1 === diff || -23 === diff ? -1 : 1;
                    const trial = new Date(newDate.getTime() + 36e5 * sign);
                    if (sign > 0 || trial.getDate() === newDate.getDate()) {
                        newDate.setTime(trial.getTime())
                    }
                }

                function getTimezonesDifference(min, max) {
                    return 60 * (max.getTimezoneOffset() - min.getTimezoneOffset()) * 1e3
                }
                const createDateWithFullYear = function(year) {
                    for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
                        args[_key - 1] = arguments[_key]
                    }
                    const result = new Date(year, ...args);
                    result.setFullYear(year);
                    return result
                };
                const dateUtils = exports.dateUtils = {
                    dateUnitIntervals: dateUnitIntervals,
                    convertMillisecondsToDateUnits: convertMillisecondsToDateUnits,
                    dateToMilliseconds: function(tickInterval) {
                        let milliseconds = 0;
                        if ((0, _type.isObject)(tickInterval)) {
                            (0, _iterator.each)(tickInterval, (function(key, value) {
                                milliseconds += convertDateUnitToMilliseconds(key.substr(0, key.length - 1), value)
                            }))
                        }
                        if ((0, _type.isString)(tickInterval)) {
                            milliseconds = convertDateUnitToMilliseconds(tickInterval, 1)
                        }
                        return milliseconds
                    },
                    getNextDateUnit: function(unit, withWeeks) {
                        const interval = getDateUnitInterval(unit);
                        switch (interval) {
                            case "millisecond":
                                return "second";
                            case "second":
                                return "minute";
                            case "minute":
                                return "hour";
                            case "hour":
                                return "day";
                            case "day":
                                return withWeeks ? "week" : "month";
                            case "week":
                                return "month";
                            case "month":
                                return "quarter";
                            case "quarter":
                            case "year":
                                return "year";
                            default:
                                return 0
                        }
                    },
                    convertDateUnitToMilliseconds: convertDateUnitToMilliseconds,
                    getDateUnitInterval: getDateUnitInterval,
                    getDateFormatByTickInterval: function(tickInterval) {
                        return tickIntervalToFormatMap[getDateUnitInterval(tickInterval)] || ""
                    },
                    getDatesDifferences: function(date1, date2) {
                        let counter = 0;
                        const differences = {
                            year: date1.getFullYear() !== date2.getFullYear(),
                            month: date1.getMonth() !== date2.getMonth(),
                            day: date1.getDate() !== date2.getDate(),
                            hour: date1.getHours() !== date2.getHours(),
                            minute: date1.getMinutes() !== date2.getMinutes(),
                            second: date1.getSeconds() !== date2.getSeconds(),
                            millisecond: date1.getMilliseconds() !== date2.getMilliseconds()
                        };
                        (0, _iterator.each)(differences, (function(key, value) {
                            if (value) {
                                counter++
                            }
                        }));
                        if (0 === counter && 0 !== getTimezonesDifference(date1, date2)) {
                            differences.hour = true;
                            counter++
                        }
                        differences.count = counter;
                        return differences
                    },
                    correctDateWithUnitBeginning: correctDateWithUnitBeginning,
                    trimTime: trimTime,
                    setToDayEnd: function(date) {
                        const result = trimTime(date);
                        result.setDate(result.getDate() + 1);
                        return new Date(result.getTime() - 1)
                    },
                    roundDateByStartDayHour: function(date, startDayHour) {
                        const startTime = this.dateTimeFromDecimal(startDayHour);
                        const result = new Date(date);
                        if (date.getHours() === startTime.hours && date.getMinutes() < startTime.minutes || date.getHours() < startTime.hours) {
                            result.setHours(startTime.hours, startTime.minutes, 0, 0)
                        }
                        return result
                    },
                    dateTimeFromDecimal: function(number) {
                        const hours = Math.floor(number);
                        const minutes = number % 1 * 60;
                        return {
                            hours: hours,
                            minutes: minutes
                        }
                    },
                    addDateInterval: addDateInterval,
                    addInterval: addInterval,
                    getSequenceByInterval: function(min, max, interval) {
                        const intervals = [];
                        let cur;
                        intervals.push((0, _type.isDate)(min) ? new Date(min.getTime()) : min);
                        cur = min;
                        while (cur < max) {
                            cur = addInterval(cur, interval);
                            intervals.push(cur)
                        }
                        return intervals
                    },
                    getDateIntervalByString: getDateIntervalByString,
                    sameHoursAndMinutes: function(date1, date2) {
                        return date1 && date2 && date1.getHours() === date2.getHours() && date1.getMinutes() === date2.getMinutes()
                    },
                    sameDate: sameDate,
                    sameMonthAndYear: sameMonthAndYear,
                    sameMonth: sameMonthAndYear,
                    sameYear: sameYear,
                    sameDecade: function(date1, date2) {
                        if (!(0, _type.isDefined)(date1) || !(0, _type.isDefined)(date2)) {
                            return
                        }
                        const startDecadeDate1 = date1.getFullYear() - date1.getFullYear() % 10;
                        const startDecadeDate2 = date2.getFullYear() - date2.getFullYear() % 10;
                        return date1 && date2 && startDecadeDate1 === startDecadeDate2
                    },
                    sameCentury: function(date1, date2) {
                        if (!(0, _type.isDefined)(date1) || !(0, _type.isDefined)(date2)) {
                            return
                        }
                        const startCenturyDate1 = date1.getFullYear() - date1.getFullYear() % 100;
                        const startCenturyDate2 = date2.getFullYear() - date2.getFullYear() % 100;
                        return date1 && date2 && startCenturyDate1 === startCenturyDate2
                    },
                    sameView: function(view, date1, date2) {
                        return dateUtils[(0, _inflector.camelize)(`same ${view}`)](date1, date2)
                    },
                    sameDatesArrays: (arr1, arr2) => {
                        if (!Array.isArray(arr1) || !Array.isArray(arr2) || arr1.length !== arr2.length) {
                            return false
                        }
                        return arr1.every(((date1, index) => {
                            const date2 = arr2[index];
                            if ([date1, date2].some((date => null !== date && !(date instanceof Date)))) {
                                return false
                            }
                            if (date1 instanceof Date && date2 instanceof Date) {
                                return sameDate(date1, date2)
                            }
                            return date1 === date2
                        }))
                    },
                    getDifferenceInMonth: function(typeView) {
                        let difference = 1;
                        if ("year" === typeView) {
                            difference = 12
                        }
                        if ("decade" === typeView) {
                            difference = 120
                        }
                        if ("century" === typeView) {
                            difference = 1200
                        }
                        return difference
                    },
                    getDifferenceInMonthForCells: function(typeView) {
                        let difference = 1;
                        if ("decade" === typeView) {
                            difference = 12
                        }
                        if ("century" === typeView) {
                            difference = 120
                        }
                        return difference
                    },
                    getFirstYearInDecade: getFirstYearInDecade,
                    getFirstDecadeInCentury: getFirstDecadeInCentury,
                    getShortDateFormat: function() {
                        return "yyyy/MM/dd"
                    },
                    getViewFirstCellDate: function(viewType, date) {
                        if ("month" === viewType) {
                            return createDateWithFullYear(date.getFullYear(), date.getMonth(), 1)
                        }
                        if ("year" === viewType) {
                            return createDateWithFullYear(date.getFullYear(), 0, date.getDate())
                        }
                        if ("decade" === viewType) {
                            return createDateWithFullYear(getFirstYearInDecade(date), date.getMonth(), date.getDate())
                        }
                        if ("century" === viewType) {
                            return createDateWithFullYear(getFirstDecadeInCentury(date), date.getMonth(), date.getDate())
                        }
                    },
                    getViewLastCellDate: function(viewType, date) {
                        if ("month" === viewType) {
                            return createDateWithFullYear(date.getFullYear(), date.getMonth(), getLastMonthDay(date))
                        }
                        if ("year" === viewType) {
                            return createDateWithFullYear(date.getFullYear(), 11, date.getDate())
                        }
                        if ("decade" === viewType) {
                            return createDateWithFullYear(getFirstYearInDecade(date) + 9, date.getMonth(), date.getDate())
                        }
                        if ("century" === viewType) {
                            return createDateWithFullYear(getFirstDecadeInCentury(date) + 90, date.getMonth(), date.getDate())
                        }
                    },
                    getViewDown: function(typeView) {
                        switch (typeView) {
                            case "century":
                                return "decade";
                            case "decade":
                                return "year";
                            case "year":
                                return "month"
                        }
                    },
                    getViewUp: function(typeView) {
                        switch (typeView) {
                            case "month":
                                return "year";
                            case "year":
                                return "decade";
                            case "decade":
                                return "century"
                        }
                    },
                    getLastMonthDay: getLastMonthDay,
                    getLastMonthDate: function(date) {
                        let offset = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0;
                        if (!(0, _type.isDefined)(date)) {
                            return
                        }
                        const currentDate = new Date(date.getTime());
                        const month = currentDate.getMonth() + offset;
                        currentDate.setMonth(month);
                        return createDateWithFullYear(currentDate.getFullYear(), month + 1, 0)
                    },
                    getFirstMonthDate: function(date) {
                        let offset = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0;
                        if (!(0, _type.isDefined)(date)) {
                            return
                        }
                        const currentDate = new Date(date.getTime());
                        const month = currentDate.getMonth() + offset;
                        currentDate.setMonth(month);
                        return createDateWithFullYear(currentDate.getFullYear(), month, 1)
                    },
                    getFirstWeekDate: getFirstWeekDate,
                    getWeekNumber: function getWeekNumber(date, firstDayOfWeek, rule) {
                        const firstWeekDayInYear = getDayWeekNumber(getFirstDateInYear(date.getFullYear()), firstDayOfWeek);
                        const lastWeekDayInYear = getDayWeekNumber(getLastDateInYear(date.getFullYear()), firstDayOfWeek);
                        const daysInFirstWeek = 7 - firstWeekDayInYear + 1;
                        let weekNumber = Math.ceil((function(date) {
                            const ms = getUTCTime(date) - getUTCTime(getFirstDateInYear(date.getFullYear()));
                            return 1 + Math.floor(ms / (0, _toMilliseconds.toMilliseconds)("day"))
                        }(date) - daysInFirstWeek) / 7);
                        switch (rule) {
                            case "fullWeek":
                                if (7 === daysInFirstWeek) {
                                    weekNumber++
                                }
                                if (0 === weekNumber) {
                                    const lastDateInPreviousYear = getLastDateInYear(date.getFullYear() - 1);
                                    return getWeekNumber(lastDateInPreviousYear, firstDayOfWeek, rule)
                                }
                                return weekNumber;
                            case "firstDay": {
                                if (daysInFirstWeek > 0) {
                                    weekNumber++
                                }
                                const isSunday = 7 === firstWeekDayInYear || 7 === lastWeekDayInYear;
                                if (weekNumber > 52 && !isSunday || 54 === weekNumber) {
                                    weekNumber = 1
                                }
                                return weekNumber
                            }
                            case "firstFourDays": {
                                if (daysInFirstWeek > 3) {
                                    weekNumber++
                                }
                                const isThursday = 4 === firstWeekDayInYear || 4 === lastWeekDayInYear;
                                if (weekNumber > 52 && !isThursday) {
                                    weekNumber = 1
                                }
                                if (0 === weekNumber) {
                                    const lastDateInPreviousYear = getLastDateInYear(date.getFullYear() - 1);
                                    return getWeekNumber(lastDateInPreviousYear, firstDayOfWeek, rule)
                                }
                                return weekNumber
                            }
                        }
                    },
                    normalizeDateByWeek: function(date, currentDate) {
                        const differenceInDays = dateUtils.getDatesInterval(date, currentDate, "day");
                        let resultDate = new Date(date);
                        if (differenceInDays >= 6) {
                            resultDate = new Date(resultDate.setDate(resultDate.getDate() + 7))
                        }
                        return resultDate
                    },
                    getQuarter: getQuarter,
                    getFirstQuarterMonth: getFirstQuarterMonth,
                    dateInRange: function(date, min, max, format) {
                        if ("date" === format) {
                            min = min && dateUtils.correctDateWithUnitBeginning(min, "day");
                            max = max && dateUtils.correctDateWithUnitBeginning(max, "day");
                            date = date && dateUtils.correctDateWithUnitBeginning(date, "day")
                        }
                        return normalizeDate(date, min, max) === date
                    },
                    intervalsOverlap: function(options) {
                        const {
                            firstMin: firstMin,
                            firstMax: firstMax,
                            secondMin: secondMin,
                            secondMax: secondMax
                        } = options;
                        return firstMin <= secondMin && secondMin <= firstMax || firstMin > secondMin && firstMin < secondMax || firstMin < secondMax && firstMax > secondMax
                    },
                    roundToHour: function(date) {
                        const result = new Date(date.getTime());
                        result.setHours(result.getHours() + 1);
                        result.setMinutes(0);
                        return result
                    },
                    normalizeDate: normalizeDate,
                    getViewMinBoundaryDate: function(viewType, date) {
                        const resultDate = createDateWithFullYear(date.getFullYear(), date.getMonth(), 1);
                        if ("month" === viewType) {
                            return resultDate
                        }
                        resultDate.setMonth(0);
                        if ("year" === viewType) {
                            return resultDate
                        }
                        if ("decade" === viewType) {
                            resultDate.setFullYear(getFirstYearInDecade(date))
                        }
                        if ("century" === viewType) {
                            resultDate.setFullYear(getFirstDecadeInCentury(date))
                        }
                        return resultDate
                    },
                    getViewMaxBoundaryDate: function(viewType, date) {
                        const resultDate = new Date(date);
                        resultDate.setDate(getLastMonthDay(date));
                        if ("month" === viewType) {
                            return resultDate
                        }
                        resultDate.setMonth(11);
                        resultDate.setDate(getLastMonthDay(resultDate));
                        if ("year" === viewType) {
                            return resultDate
                        }
                        if ("decade" === viewType) {
                            resultDate.setFullYear(getFirstYearInDecade(date) + 9)
                        }
                        if ("century" === viewType) {
                            resultDate.setFullYear(getFirstDecadeInCentury(date) + 99)
                        }
                        return resultDate
                    },
                    fixTimezoneGap: fixTimezoneGap,
                    getTimezonesDifference: getTimezonesDifference,
                    makeDate: function(date) {
                        return new Date(date)
                    },
                    getDatesInterval: function(startDate, endDate, intervalUnit) {
                        const delta = endDate.getTime() - startDate.getTime();
                        const millisecondCount = (0, _toMilliseconds.toMilliseconds)(intervalUnit) || 1;
                        return Math.floor(delta / millisecondCount)
                    },
                    getDatesOfInterval: function(startDate, endDate, step) {
                        const result = [];
                        let currentDate = new Date(startDate.getTime());
                        while (currentDate < endDate) {
                            result.push(new Date(currentDate.getTime()));
                            currentDate = this.addInterval(currentDate, step)
                        }
                        return result
                    },
                    createDateWithFullYear: createDateWithFullYear,
                    getMachineTimezoneName: () => {
                        const hasIntl = "undefined" !== typeof Intl;
                        return hasIntl ? Intl.DateTimeFormat().resolvedOptions().timeZone : null
                    },
                    getRangesByDates: dates => {
                        const datesInMilliseconds = dates.map((value => correctDateWithUnitBeginning(value, "day").getTime()));
                        const sortedDates = datesInMilliseconds.sort(((a, b) => a - b));
                        const msInDay = (0, _toMilliseconds.toMilliseconds)("day");
                        const ranges = [];
                        let startDate = sortedDates[0];
                        for (let i = 1; i <= sortedDates.length; ++i) {
                            const nextDate = sortedDates[i];
                            const currentDate = sortedDates[i - 1];
                            const isNewRange = nextDate - currentDate > msInDay;
                            if (isNewRange || i === sortedDates.length) {
                                const range = startDate === sortedDates[i - 1] ? [startDate] : [startDate, sortedDates[i - 1]];
                                const serializedRange = range.map((value => _date_serialization.default.deserializeDate(value)));
                                ranges.push(serializedRange);
                                startDate = nextDate
                            }
                        }
                        return ranges
                    }
                }
            },
        62897:
            /*!*******************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/m_date_serialization.js ***!
              \*******************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.dateSerialization = void 0;
                var _default_date_names = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/localization/default_date_names */ 81179));
                var _date = __webpack_require__( /*! ../../../common/core/localization/ldml/date.formatter */ 86670);
                var _config = _interopRequireDefault(__webpack_require__( /*! ../../../core/config */ 66636));
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528);

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const ISO8601_PATTERN = /^(\d{4,})(-)?(\d{2})(-)?(\d{2})(?:T(\d{2})(:)?(\d{2})?(:)?(\d{2}(?:\.(\d{1,3})\d*)?)?)?(Z|([+-])(\d{2})(:)?(\d{2})?)?$/;
                const ISO8601_TIME_PATTERN = /^(\d{2}):(\d{2})(:(\d{2}))?$/;
                const ISO8601_PATTERN_PARTS = ["", "yyyy", "", "MM", "", "dd", "THH", "", "mm", "", "ss", ".SSS"];
                const DATE_SERIALIZATION_PATTERN = /^(\d{4})\/(\d{2})\/(\d{2})$/;
                const dateParser = function(text, skipISO8601Parsing) {
                    let result;
                    if ((0, _type.isString)(text) && !skipISO8601Parsing) {
                        result = function(text) {
                            let parts = text.match(ISO8601_PATTERN);
                            if (!parts) {
                                parts = text.match(ISO8601_TIME_PATTERN);
                                if (parts) {
                                    return new Date(0, 0, 0, getTimePart(parts[1]), getTimePart(parts[2]), getTimePart(parts[4]))
                                }
                                return
                            }
                            const year = getTimePart(parts[1]);
                            const month = --parts[3];
                            const day = parts[5];
                            let timeZoneHour = 0;
                            let timeZoneMinute = 0;
                            const correctYear = d => {
                                year < 100 && d.setFullYear(year);
                                return d
                            };
                            timeZoneHour = getTimePart(parts[14]);
                            timeZoneMinute = getTimePart(parts[16]);
                            if ("-" === parts[13]) {
                                timeZoneHour = -timeZoneHour;
                                timeZoneMinute = -timeZoneMinute
                            }
                            const hour = getTimePart(parts[6]) - timeZoneHour;
                            const minute = getTimePart(parts[8]) - timeZoneMinute;
                            const second = getTimePart(parts[10]);
                            const parseMilliseconds = function(part) {
                                part = part || "";
                                return getTimePart(part) * 10 ** (3 - part.length)
                            };
                            const millisecond = parseMilliseconds(parts[11]);
                            if (parts[12]) {
                                return correctYear(new Date(Date.UTC(year, month, day, hour, minute, second, millisecond)))
                            }
                            return correctYear(new Date(year, month, day, hour, minute, second, millisecond))
                        }(text)
                    }
                    return result || function(text) {
                        const isDefaultSerializationFormat = "yyyy/MM/dd" === getDateSerializationFormat(text);
                        const parsedValue = !(0, _type.isDate)(text) && Date.parse(text);
                        if (!parsedValue && isDefaultSerializationFormat) {
                            const parts = text.match(DATE_SERIALIZATION_PATTERN);
                            if (parts) {
                                const newDate = new Date(getTimePart(parts[1]), getTimePart(parts[2]), getTimePart(parts[3]));
                                newDate.setFullYear(getTimePart(parts[1]));
                                newDate.setMonth(getTimePart(parts[2]) - 1);
                                newDate.setDate(getTimePart(parts[3]));
                                return newDate
                            }
                        }
                        return (0, _type.isNumeric)(parsedValue) ? new Date(parsedValue) : text
                    }(text)
                };

                function getTimePart(part) {
                    return +part || 0
                }
                const getDateSerializationFormat = function(value) {
                    if ("number" === typeof value) {
                        return "number"
                    }
                    if ((0, _type.isString)(value)) {
                        let format;
                        if ((0, _config.default)().forceIsoDateParsing) {
                            format = function(text) {
                                let parts = text.match(ISO8601_PATTERN);
                                let result = "";
                                if (!parts) {
                                    parts = text.match(ISO8601_TIME_PATTERN);
                                    if (parts) {
                                        return parts[3] ? "HH:mm:ss" : "HH:mm"
                                    }
                                    return
                                }
                                for (let i = 1; i < ISO8601_PATTERN_PARTS.length; i++) {
                                    if (parts[i]) {
                                        result += ISO8601_PATTERN_PARTS[i] || parts[i]
                                    }
                                }
                                if ("Z" === parts[12]) {
                                    result += "'Z'"
                                }
                                if (parts[14]) {
                                    if (parts[15]) {
                                        result += "xxx"
                                    } else if (parts[16]) {
                                        result += "xx"
                                    } else {
                                        result += "x"
                                    }
                                }
                                return result
                            }(value)
                        }
                        if (format) {
                            return format
                        }
                        if (value.includes(":")) {
                            return "yyyy/MM/dd HH:mm:ss"
                        }
                        return "yyyy/MM/dd"
                    }
                    if (value) {
                        return null
                    }
                };
                exports.dateSerialization = {
                    dateParser: dateParser,
                    deserializeDate: function(value) {
                        if ("number" === typeof value) {
                            return new Date(value)
                        }
                        return dateParser(value, !(0, _config.default)().forceIsoDateParsing)
                    },
                    serializeDate: function(value, serializationFormat) {
                        if (!serializationFormat) {
                            return value
                        }
                        if (!(0, _type.isDate)(value)) {
                            return null
                        }
                        if ("number" === serializationFormat) {
                            return value && value.valueOf ? value.valueOf() : null
                        }
                        return (0, _date.getFormatter)(serializationFormat, _default_date_names.default)(value)
                    },
                    getDateSerializationFormat: getDateSerializationFormat
                }
            },
        77117:
            /*!*********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/m_deferred.js ***!
              \*********************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.Deferred = function() {
                    return new DeferredObj
                };
                exports.fromPromise = fromPromise;
                exports.setStrategy = function(value) {
                    DeferredObj = value.Deferred;
                    whenFunc = value.when
                };
                exports.when = function() {
                    return whenFunc.apply(this, arguments)
                };
                var _callbacks = (e = __webpack_require__( /*! ../../../core/utils/callbacks */ 84718), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576);
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528);
                const deferredConfig = [{
                    method: "resolve",
                    handler: "done",
                    state: "resolved"
                }, {
                    method: "reject",
                    handler: "fail",
                    state: "rejected"
                }, {
                    method: "notify",
                    handler: "progress"
                }];
                let DeferredObj = function() {
                    const that = this;
                    this._state = "pending";
                    this._promise = {};
                    deferredConfig.forEach(function(config) {
                        const methodName = config.method;
                        this[`${methodName}Callbacks`] = (0, _callbacks.default)();
                        this[methodName] = function() {
                            return this[`${methodName}With`](this._promise, arguments)
                        }.bind(this);
                        this._promise[config.handler] = function(handler) {
                            if (!handler) {
                                return this
                            }
                            const callbacks = that[`${methodName}Callbacks`];
                            if (callbacks.fired()) {
                                handler.apply(that[`${methodName}Context`], that[`${methodName}Args`])
                            } else {
                                callbacks.add((function(context, args) {
                                    handler.apply(context, args)
                                }))
                            }
                            return this
                        }
                    }.bind(this));
                    this._promise.always = function(handler) {
                        return this.done(handler).fail(handler)
                    };
                    this._promise.catch = function(handler) {
                        return this.then(null, handler)
                    };
                    this._promise.then = function(resolve, reject) {
                        const result = new DeferredObj;
                        ["done", "fail"].forEach(function(method) {
                            const callback = "done" === method ? resolve : reject;
                            this[method]((function() {
                                if (!callback) {
                                    result["done" === method ? "resolve" : "reject"].apply(this, arguments);
                                    return
                                }
                                const callbackResult = callback && callback.apply(this, arguments);
                                if ((0, _type.isDeferred)(callbackResult)) {
                                    callbackResult.done(result.resolve).fail(result.reject)
                                } else if ((0, _type.isPromise)(callbackResult)) {
                                    callbackResult.then(result.resolve, result.reject)
                                } else {
                                    result.resolve.apply(this, (0, _type.isDefined)(callbackResult) ? [callbackResult] : arguments)
                                }
                            }))
                        }.bind(this));
                        return result.promise()
                    };
                    this._promise.state = function() {
                        return that._state
                    };
                    this._promise.promise = function(args) {
                        return args ? (0, _extend.extend)(args, that._promise) : that._promise
                    };
                    this._promise.promise(this)
                };
                deferredConfig.forEach((function(config) {
                    const methodName = config.method;
                    const {
                        state: state
                    } = config;
                    DeferredObj.prototype[`${methodName}With`] = function(context, args) {
                        const callbacks = this[`${methodName}Callbacks`];
                        if ("pending" === this.state()) {
                            this[`${methodName}Args`] = args;
                            this[`${methodName}Context`] = context;
                            if (state) {
                                this._state = state
                            }
                            callbacks.fire(context, args);
                            if ("pending" !== state) {
                                this.resolveCallbacks.empty();
                                this.rejectCallbacks.empty()
                            }
                        }
                        return this
                    }
                }));

                function fromPromise(promise, context) {
                    if ((0, _type.isDeferred)(promise)) {
                        return promise
                    }
                    if ((0, _type.isPromise)(promise)) {
                        const d = new DeferredObj;
                        promise.then((function() {
                            d.resolveWith.apply(d, [context].concat([
                                [].slice.call(arguments)
                            ]))
                        }), (function() {
                            d.rejectWith.apply(d, [context].concat([
                                [].slice.call(arguments)
                            ]))
                        }));
                        return d
                    }
                    return (new DeferredObj).resolveWith(context, [promise])
                }
                let whenFunc = function() {
                    if (1 === arguments.length) {
                        return fromPromise(arguments[0])
                    }
                    const values = [].slice.call(arguments);
                    const contexts = [];
                    let resolvedCount = 0;
                    const deferred = new DeferredObj;
                    const updateState = function(i) {
                        return function(value) {
                            contexts[i] = this;
                            values[i] = arguments.length > 1 ? [].slice.call(arguments) : value;
                            resolvedCount++;
                            if (resolvedCount === values.length) {
                                deferred.resolveWith(contexts, values)
                            }
                        }
                    };
                    for (let i = 0; i < values.length; i++) {
                        if ((0, _type.isDeferred)(values[i])) {
                            values[i].promise().done(updateState(i)).fail(deferred.reject)
                        } else {
                            resolvedCount++
                        }
                    }
                    if (resolvedCount === values.length) {
                        deferred.resolveWith(contexts, values)
                    }
                    return deferred.promise()
                }
            },
        62142:
            /*!********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/m_dependency_injector.js ***!
              \********************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.injector = function(object) {
                    const BaseClass = _class.default.inherit(object);
                    let InjectedClass = BaseClass;
                    let instance = new InjectedClass(object);
                    const initialFields = {};
                    const injectFields = function(injectionObject, initial) {
                        (0, _iterator.each)(injectionObject, (function(key) {
                            if ((0, _type.isFunction)(instance[key])) {
                                if (initial || !object[key]) {
                                    object[key] = function() {
                                        return instance[key].apply(object, arguments)
                                    }
                                }
                            } else {
                                if (initial) {
                                    initialFields[key] = object[key]
                                }
                                object[key] = instance[key]
                            }
                        }))
                    };
                    injectFields(object, true);
                    object.inject = function(injectionObject) {
                        InjectedClass = InjectedClass.inherit(injectionObject);
                        instance = new InjectedClass;
                        injectFields(injectionObject)
                    };
                    object.resetInjection = function() {
                        (0, _extend.extend)(object, initialFields);
                        InjectedClass = BaseClass;
                        instance = new BaseClass
                    };
                    return object
                };
                var _class = (e = __webpack_require__( /*! ../../../core/class */ 55620), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576);
                var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274);
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528)
            },
        76400:
            /*!****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/m_dom.js ***!
              \****************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.resetActiveElement = exports.replaceWith = exports.normalizeTemplateElement = exports.isElementInDom = exports.insertBefore = exports.extractTemplateMarkup = exports.default = exports.createTextElementHiddenCopy = exports.contains = exports.closestCommonParent = exports.clipboardText = exports.clearSelection = void 0;
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../core/dom_adapter */ 64960));
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553));
                var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274);
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528);
                var _window = __webpack_require__( /*! ../../../core/utils/window */ 3104);

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const window = (0, _window.getWindow)();
                const resetActiveElement = () => {
                    const activeElement = _dom_adapter.default.getActiveElement();
                    if (activeElement && activeElement !== _dom_adapter.default.getBody()) {
                        var _activeElement$blur;
                        null === (_activeElement$blur = activeElement.blur) || void 0 === _activeElement$blur || _activeElement$blur.call(activeElement)
                    }
                };
                exports.resetActiveElement = resetActiveElement;
                const clearSelection = () => {
                    const selection = window.getSelection();
                    if (!selection) {
                        return
                    }
                    if ("Caret" === selection.type) {
                        return
                    }
                    if (selection.empty) {
                        selection.empty()
                    } else if (selection.removeAllRanges) {
                        try {
                            selection.removeAllRanges()
                        } catch (e) {}
                    }
                };
                exports.clearSelection = clearSelection;
                const closestCommonParent = (startTarget, endTarget) => {
                    const $startTarget = (0, _renderer.default)(startTarget);
                    const $endTarget = (0, _renderer.default)(endTarget);
                    if ($startTarget[0] === $endTarget[0]) {
                        return $startTarget[0]
                    }
                    const $startParents = $startTarget.parents();
                    const $endParents = $endTarget.parents();
                    const startingParent = Math.min($startParents.length, $endParents.length);
                    for (let i = -startingParent; i < 0; i++) {
                        if ($startParents.get(i) === $endParents.get(i)) {
                            return $startParents.get(i)
                        }
                    }
                };
                exports.closestCommonParent = closestCommonParent;
                const extractTemplateMarkup = element => {
                    element = (0, _renderer.default)(element);
                    const templateTag = element.length && element.filter((function() {
                        const $node = (0, _renderer.default)(this);
                        return $node.is("script[type]") && !$node.attr("type").includes("script")
                    }));
                    if (templateTag.length) {
                        return templateTag.eq(0).html()
                    }
                    element = (0, _renderer.default)("<div>").append(element);
                    return element.html()
                };
                exports.extractTemplateMarkup = extractTemplateMarkup;
                const normalizeTemplateElement = element => {
                    let $element = (0, _renderer.default)();
                    if ((0, _type.isDefined)(element) && (element.nodeType || (0, _type.isRenderer)(element))) {
                        $element = (0, _renderer.default)(element)
                    } else if ("object" !== typeof element) {
                        $element = (0, _renderer.default)("<div>").html(element).contents()
                    }
                    if (1 === $element.length) {
                        if ($element.is("script")) {
                            $element = normalizeTemplateElement($element.html().trim())
                        } else if ($element.is("table")) {
                            $element = $element.children("tbody").contents()
                        }
                    }
                    return $element
                };
                exports.normalizeTemplateElement = normalizeTemplateElement;
                const clipboardText = (event, text) => {
                    const clipboard = event.originalEvent && event.originalEvent.clipboardData || window.clipboardData;
                    if (!text) {
                        return clipboard && clipboard.getData("Text")
                    }
                    clipboard && clipboard.setData("Text", text)
                };
                exports.clipboardText = clipboardText;
                const contains = (container, element) => {
                    if (!element) {
                        return false
                    }
                    if ((0, _type.isWindow)(container)) {
                        return contains(container.document, element)
                    }
                    return container.contains(element) || contains(container, (element => {
                        if (!element.getRootNode) {
                            return
                        }
                        const {
                            host: host
                        } = element.getRootNode();
                        if ((0, _type.isString)(host)) {
                            return
                        }
                        return host
                    })(element))
                };
                exports.contains = contains;
                const createTextElementHiddenCopy = (element, text, options) => {
                    const elementStyles = window.getComputedStyle((0, _renderer.default)(element).get(0));
                    const includePaddings = options && options.includePaddings;
                    return (0, _renderer.default)("<div>").text(text).css({
                        fontStyle: elementStyles.fontStyle,
                        fontVariant: elementStyles.fontVariant,
                        fontWeight: elementStyles.fontWeight,
                        fontSize: elementStyles.fontSize,
                        fontFamily: elementStyles.fontFamily,
                        letterSpacing: elementStyles.letterSpacing,
                        border: elementStyles.border,
                        paddingTop: includePaddings ? elementStyles.paddingTop : "",
                        paddingRight: includePaddings ? elementStyles.paddingRight : "",
                        paddingBottom: includePaddings ? elementStyles.paddingBottom : "",
                        paddingLeft: includePaddings ? elementStyles.paddingLeft : "",
                        visibility: "hidden",
                        whiteSpace: "pre",
                        position: "absolute",
                        float: "left"
                    })
                };
                exports.createTextElementHiddenCopy = createTextElementHiddenCopy;
                const insertBefore = (element, newElement) => {
                    if (newElement) {
                        _dom_adapter.default.insertElement(element.parentNode, newElement, element)
                    }
                    return element
                };
                exports.insertBefore = insertBefore;
                const replaceWith = (element, newElement) => {
                    if (!(newElement && newElement[0])) {
                        return
                    }
                    if (newElement.is(element)) {
                        return element
                    }(0, _iterator.each)(newElement, ((_, currentElement) => {
                        insertBefore(element[0], currentElement)
                    }));
                    element.remove();
                    return newElement
                };
                exports.replaceWith = replaceWith;
                const isElementInDom = $element => {
                    const element = null === $element || void 0 === $element ? void 0 : $element.get(0);
                    const shadowHost = null === element || void 0 === element ? void 0 : element.getRootNode().host;
                    return !!(0, _renderer.default)(shadowHost || element).closest((0, _window.getWindow)().document).length
                };
                exports.isElementInDom = isElementInDom;
                exports.default = {
                    resetActiveElement: resetActiveElement,
                    clearSelection: clearSelection,
                    closestCommonParent: closestCommonParent,
                    extractTemplateMarkup: extractTemplateMarkup,
                    normalizeTemplateElement: normalizeTemplateElement,
                    clipboardText: clipboardText,
                    contains: contains,
                    createTextElementHiddenCopy: createTextElementHiddenCopy,
                    insertBefore: insertBefore,
                    replaceWith: replaceWith,
                    isElementInDom: isElementInDom
                }
            },
        40818:
            /*!******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/m_error.js ***!
              \******************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                exports.error = error;
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576);
                var _string = __webpack_require__( /*! ../../../core/utils/string */ 54497);
                var _version = __webpack_require__( /*! ../../../core/version */ 1956);
                var _m_console = (e = __webpack_require__( /*! ./m_console */ 35005), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                const ERROR_URL = `https://js.devexpress.com/error/${_version.version.split(".").slice(0,2).join("_")}/`;

                function error(baseErrors, errors) {
                    const exports = {
                        ERROR_MESSAGES: (0, _extend.extend)(errors, baseErrors),
                        Error: function() {
                            for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
                                args[_key] = arguments[_key]
                            }
                            return function(args) {
                                const id = args[0];
                                args = args.slice(1);
                                const details = formatDetails(id, args);
                                const url = getErrorUrl(id);
                                const message = formatMessage(id, details);
                                return (0, _extend.extend)(new Error(message), {
                                    __id: id,
                                    __details: details,
                                    url: url
                                })
                            }(args)
                        },
                        log() {
                            for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
                                args[_key2] = arguments[_key2]
                            }
                            const id = args[0];
                            let method = "log";
                            if (/^E\d+$/.test(id)) {
                                method = "error"
                            } else if (/^W\d+$/.test(id)) {
                                method = "warn"
                            }
                            _m_console.default.logger[method]("log" === method ? id : function(args) {
                                const id = args[0];
                                args = args.slice(1);
                                return formatMessage(id, formatDetails(id, args))
                            }(args))
                        }
                    };

                    function formatDetails(id, args) {
                        args = [exports.ERROR_MESSAGES[id]].concat(args);
                        return _string.format.apply(this, args).replace(/\.*\s*?$/, "")
                    }

                    function formatMessage(id, details) {
                        const kind = null !== id && void 0 !== id && id.startsWith("W") ? "warning" : "error";
                        return _string.format.apply(this, ["{0} - {1}.\n\nFor additional information on this {2} message, see: {3}", id, details, kind, getErrorUrl(id)])
                    }

                    function getErrorUrl(id) {
                        return ERROR_URL + id
                    }
                    return exports
                }
                exports.default = error
            },
        96298:
            /*!*******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/m_extend.js ***!
              \*******************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.extendFromObject = exports.extend = void 0;
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528);
                exports.extendFromObject = function(target, source, overrideExistingValues) {
                    target = target || {};
                    for (const prop in source) {
                        if (Object.prototype.hasOwnProperty.call(source, prop)) {
                            const value = source[prop];
                            if (!(prop in target) || overrideExistingValues) {
                                target[prop] = value
                            }
                        }
                    }
                    return target
                };
                const extend = function(target) {
                    target = target || {};
                    let i = 1;
                    let deep = false;
                    if ("boolean" === typeof target) {
                        deep = target;
                        target = arguments[1] || {};
                        i++
                    }
                    for (; i < arguments.length; i++) {
                        const source = arguments[i];
                        if (null == source) {
                            continue
                        }
                        for (const key in source) {
                            const targetValue = target[key];
                            const sourceValue = source[key];
                            let sourceValueIsArray = false;
                            let clone;
                            if ("__proto__" === key || "constructor" === key || target === sourceValue) {
                                continue
                            }
                            if (deep && sourceValue && ((0, _type.isPlainObject)(sourceValue) || (sourceValueIsArray = Array.isArray(sourceValue)))) {
                                if (sourceValueIsArray) {
                                    clone = targetValue && Array.isArray(targetValue) ? targetValue : []
                                } else {
                                    clone = targetValue && (0, _type.isPlainObject)(targetValue) ? targetValue : {}
                                }
                                target[key] = extend(deep, clone, sourceValue)
                            } else if (void 0 !== sourceValue) {
                                target[key] = sourceValue
                            }
                        }
                    }
                    return target
                };
                exports.extend = extend
            },
        25317:
            /*!************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/m_html_parser.js ***!
              \************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.parseHTML = exports.isTablePart = void 0;
                var _dom_adapter = (e = __webpack_require__( /*! ../../../core/dom_adapter */ 64960), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                const isTagName = /<([a-z][^/\0>\x20\t\r\n\f]+)/i;
                const tagWrappers = {
                    default: {
                        tagsCount: 0,
                        startTags: "",
                        endTags: ""
                    },
                    thead: {
                        tagsCount: 1,
                        startTags: "<table>",
                        endTags: "</table>"
                    },
                    td: {
                        tagsCount: 3,
                        startTags: "<table><tbody><tr>",
                        endTags: "</tr></tbody></table>"
                    },
                    col: {
                        tagsCount: 2,
                        startTags: "<table><colgroup>",
                        endTags: "</colgroup></table>"
                    },
                    tr: {
                        tagsCount: 2,
                        startTags: "<table><tbody>",
                        endTags: "</tbody></table>"
                    }
                };
                tagWrappers.tbody = tagWrappers.colgroup = tagWrappers.caption = tagWrappers.tfoot = tagWrappers.thead;
                tagWrappers.th = tagWrappers.td;
                exports.parseHTML = function(html) {
                    if ("string" !== typeof html) {
                        return null
                    }
                    const fragment = _dom_adapter.default.createDocumentFragment();
                    let container = fragment.appendChild(_dom_adapter.default.createElement("div"));
                    const tags = isTagName.exec(html);
                    const firstRootTag = null === tags || void 0 === tags ? void 0 : tags[1].toLowerCase();
                    const tagWrapper = tagWrappers[firstRootTag] || tagWrappers.default;
                    container.innerHTML = tagWrapper.startTags + html + tagWrapper.endTags;
                    for (let i = 0; i < tagWrapper.tagsCount; i++) {
                        container = container.lastChild
                    }
                    return [...container.childNodes]
                };
                exports.isTablePart = function(html) {
                    const tags = isTagName.exec(html);
                    return tags && tags[1] in tagWrappers
                }
            },
        42463:
            /*!*****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/m_icon.js ***!
              \*****************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.getImageSourceType = exports.getImageContainer = exports.ICON_CLASS = void 0;
                var _renderer = (e = __webpack_require__( /*! ../../../core/renderer */ 64553), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                const ICON_CLASS = exports.ICON_CLASS = "dx-icon";
                const getImageSourceType = source => {
                    if (!source || "string" !== typeof source) {
                        return false
                    }
                    if (/^\s*<svg[^>]*>(.|\r?\n)*?<\/svg>\s*$/i.test(source)) {
                        return "svg"
                    }
                    if (/data:.*base64|\.|[^<\s]\/{1,1}/.test(source)) {
                        return "image"
                    }
                    if (/^[\w-_]+$/.test(source)) {
                        return "dxIcon"
                    }
                    if (/^\s?([\w-_:]\s?)+$/.test(source)) {
                        return "fontIcon"
                    }
                    return false
                };
                exports.getImageSourceType = getImageSourceType;
                exports.getImageContainer = source => {
                    switch (getImageSourceType(source)) {
                        case "image":
                            return (0, _renderer.default)("<img>").attr("src", source).addClass(ICON_CLASS);
                        case "fontIcon":
                            return (0, _renderer.default)("<i>").addClass(`${ICON_CLASS} ${source}`);
                        case "dxIcon":
                            return (0, _renderer.default)("<i>").addClass(`${ICON_CLASS} ${ICON_CLASS}-${source}`);
                        case "svg":
                            return (0, _renderer.default)("<i>").addClass(`${ICON_CLASS} dx-svg-icon`).append(source);
                        default:
                            return null
                    }
                }
            },
        66122:
            /*!**********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/m_inflector.js ***!
              \**********************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.underscore = exports.titleize = exports.humanize = exports.default = exports.dasherize = exports.captionize = exports.camelize = void 0;
                var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274);
                const _normalize = function(text) {
                    if (void 0 === text || null === text) {
                        return ""
                    }
                    return String(text)
                };
                const _upperCaseFirst = function(text) {
                    return _normalize(text).charAt(0).toUpperCase() + text.substr(1)
                };
                const _chop = function(text) {
                    return _normalize(text).replace(/([a-z\d])([A-Z])/g, "$1 $2").split(/[\s_-]+/)
                };
                const dasherize = function(text) {
                    return (0, _iterator.map)(_chop(text), (function(p) {
                        return p.toLowerCase()
                    })).join("-")
                };
                exports.dasherize = dasherize;
                const underscore = function(text) {
                    return dasherize(text).replace(/-/g, "_")
                };
                exports.underscore = underscore;
                const camelize = function(text, upperFirst) {
                    return (0, _iterator.map)(_chop(text), (function(p, i) {
                        p = p.toLowerCase();
                        if (upperFirst || i > 0) {
                            p = _upperCaseFirst(p)
                        }
                        return p
                    })).join("")
                };
                exports.camelize = camelize;
                const humanize = function(text) {
                    return _upperCaseFirst(dasherize(text).replace(/-/g, " "))
                };
                exports.humanize = humanize;
                const titleize = function(text) {
                    return (0, _iterator.map)(_chop(text), (function(p) {
                        return _upperCaseFirst(p.toLowerCase())
                    })).join(" ")
                };
                exports.titleize = titleize;
                const DIGIT_CHARS = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"];
                const captionize = function(name) {
                    const captionList = [];
                    let i;
                    let char;
                    let isPrevCharNewWord = false;
                    let isNewWord = false;
                    for (i = 0; i < name.length; i++) {
                        char = name.charAt(i);
                        isNewWord = char === char.toUpperCase() && "-" !== char && ")" !== char && "/" !== char || char in DIGIT_CHARS;
                        if ("_" === char || "." === char) {
                            char = " ";
                            isNewWord = true
                        } else if (0 === i) {
                            char = char.toUpperCase();
                            isNewWord = true
                        } else if (!isPrevCharNewWord && isNewWord) {
                            if (captionList.length > 0) {
                                captionList.push(" ")
                            }
                        }
                        captionList.push(char);
                        isPrevCharNewWord = isNewWord
                    }
                    return captionList.join("")
                };
                exports.captionize = captionize;
                exports.default = {
                    dasherize: dasherize,
                    underscore: underscore,
                    camelize: camelize,
                    humanize: humanize,
                    titleize: titleize,
                    captionize: captionize
                }
            },
        26044:
            /*!*********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/m_iterator.js ***!
              \*********************************************************************************/
            function(__unused_webpack_module, exports) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.reverseEach = exports.map = exports.each = void 0;
                exports.map = (values, callback) => {
                    if (Array.isArray(values)) {
                        return values.map(callback)
                    }
                    const result = [];
                    for (const key in values) {
                        result.push(callback(values[key], key))
                    }
                    return result
                };
                exports.each = (values, callback) => {
                    if (!values) {
                        return
                    }
                    if ("length" in values) {
                        for (let i = 0; i < values.length; i++) {
                            if (false === callback.call(values[i], i, values[i])) {
                                break
                            }
                        }
                    } else {
                        for (const key in values) {
                            if (false === callback.call(values[key], key, values[key])) {
                                break
                            }
                        }
                    }
                    return values
                };
                exports.reverseEach = (array, callback) => {
                    if (!array || !("length" in array) || 0 === array.length) {
                        return
                    }
                    for (let i = array.length - 1; i >= 0; i--) {
                        if (false === callback.call(array[i], i, array[i])) {
                            break
                        }
                    }
                }
            },
        24574:
            /*!*******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/m_locker.js ***!
              \*******************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.Locker = void 0;
                var _errors = (e = __webpack_require__( /*! ../../../core/errors */ 87129), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                exports.Locker = function() {
                    const info = {};
                    const currentCount = function(lockName) {
                        return info[lockName] || 0
                    };
                    return {
                        obtain(lockName) {
                            info[lockName] = currentCount(lockName) + 1
                        },
                        release(lockName) {
                            const count = currentCount(lockName);
                            if (count < 1) {
                                throw _errors.default.Error("E0014")
                            }
                            if (1 === count) {
                                delete info[lockName]
                            } else {
                                info[lockName] = count - 1
                            }
                        },
                        locked: lockName => currentCount(lockName) > 0
                    }
                }
            },
        80764:
            /*!*****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/m_math.js ***!
              \*****************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.adjust = function(value, interval) {
                    let precision = getPrecision(interval || 0) + 2;
                    const separatedValue = value.toString().split(".");
                    const sourceValue = value;
                    const absValue = Math.abs(value);
                    let separatedAdjustedValue;
                    const isExponentValue = (0, _type.isExponential)(value);
                    const integerPart = absValue > 1 ? 10 : 0;
                    if (1 === separatedValue.length) {
                        return value
                    }
                    if (!isExponentValue) {
                        if ((0, _type.isExponential)(interval)) {
                            precision = separatedValue[0].length + getExponent(interval)
                        }
                        value = absValue;
                        value = value - Math.floor(value) + integerPart
                    }
                    precision = function() {
                        const value = 3e-4;
                        const correctValue = "0.000300";
                        const precisionValue = 3;
                        return correctValue !== value.toPrecision(precisionValue)
                    }() && getExponent(value) > 6 || precision > 7 ? 15 : 7;
                    if (!isExponentValue) {
                        separatedAdjustedValue = parseFloat(value.toPrecision(precision)).toString().split(".");
                        if (separatedAdjustedValue[0] === integerPart.toString()) {
                            return parseFloat(`${separatedValue[0]}.${separatedAdjustedValue[1]}`)
                        }
                    }
                    return parseFloat(sourceValue.toPrecision(precision))
                };
                exports.fitIntoRange = void 0;
                exports.getExponent = getExponent;
                exports.getExponentLength = function(value) {
                    var _valueString$split$;
                    const valueString = value.toString();
                    return (null === (_valueString$split$ = valueString.split(".")[1]) || void 0 === _valueString$split$ ? void 0 : _valueString$split$.length) || parseInt(valueString.split("e-")[1], 10) || 0
                };
                exports.getPrecision = getPrecision;
                exports.getRemainderByDivision = function(dividend, divider, digitsCount) {
                    if (divider === parseInt(divider, 10)) {
                        return dividend % divider
                    }
                    const quotient = roundFloatPart(dividend / divider, digitsCount);
                    return (quotient - parseInt(quotient, 10)) * divider
                };
                exports.getRoot = getRoot;
                exports.inRange = void 0;
                exports.multiplyInExponentialForm = function(value, exponentShift) {
                    const exponentialNotation = function(value) {
                        const parts = value.toExponential().split("e");
                        const mantissa = parseFloat(parts[0]);
                        const exponent = parseInt(parts[1], 10);
                        return {
                            exponent: exponent,
                            mantissa: mantissa
                        }
                    }(value);
                    return parseFloat(`${exponentialNotation.mantissa}e${exponentialNotation.exponent+exponentShift}`)
                };
                exports.roundFloatPart = roundFloatPart;
                exports.sign = void 0;
                exports.solveCubicEquation = function(a, b, c, d) {
                    if (Math.abs(a) < 1e-8) {
                        a = b;
                        b = c;
                        c = d;
                        if (Math.abs(a) < 1e-8) {
                            a = b;
                            b = c;
                            if (Math.abs(a) < 1e-8) {
                                return []
                            }
                            return [-b / a]
                        }
                        const D2 = b * b - 4 * a * c;
                        if (Math.abs(D2) < 1e-8) {
                            return [-b / (2 * a)]
                        }
                        if (D2 > 0) {
                            return [(-b + Math.sqrt(D2)) / (2 * a), (-b - Math.sqrt(D2)) / (2 * a)]
                        }
                        return []
                    }
                    const p = (3 * a * c - b * b) / (3 * a * a);
                    const q = (2 * b * b * b - 9 * a * b * c + 27 * a * a * d) / (27 * a * a * a);
                    let roots;
                    let u;
                    if (Math.abs(p) < 1e-8) {
                        roots = [getRoot(-q, 3)]
                    } else if (Math.abs(q) < 1e-8) {
                        roots = [0].concat(p < 0 ? [Math.sqrt(-p), -Math.sqrt(-p)] : [])
                    } else {
                        const D3 = q * q / 4 + p * p * p / 27;
                        if (Math.abs(D3) < 1e-8) {
                            roots = [-1.5 * q / p, 3 * q / p]
                        } else if (D3 > 0) {
                            u = getRoot(-q / 2 - Math.sqrt(D3), 3);
                            roots = [u - p / (3 * u)]
                        } else {
                            u = 2 * Math.sqrt(-p / 3);
                            const t = Math.acos(3 * q / p / u) / 3;
                            const k = 2 * Math.PI / 3;
                            roots = [u * Math.cos(t), u * Math.cos(t - k), u * Math.cos(t - 2 * k)]
                        }
                    }
                    for (let i = 0; i < roots.length; i++) {
                        roots[i] -= b / (3 * a)
                    }
                    return roots
                };
                exports.trunc = function(value) {
                    return Math.trunc ? Math.trunc(value) : value > 0 ? Math.floor(value) : Math.ceil(value)
                };
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528);
                exports.sign = function(value) {
                    if (0 === value) {
                        return 0
                    }
                    return value / Math.abs(value)
                };
                exports.fitIntoRange = function(value, minValue, maxValue) {
                    const isMinValueUndefined = !minValue && 0 !== minValue;
                    const isMaxValueUndefined = !maxValue && 0 !== maxValue;
                    isMinValueUndefined && (minValue = !isMaxValueUndefined ? Math.min(value, maxValue) : value);
                    isMaxValueUndefined && (maxValue = !isMinValueUndefined ? Math.max(value, minValue) : value);
                    return Math.min(Math.max(value, minValue), maxValue)
                };
                exports.inRange = function(value, minValue, maxValue) {
                    return value >= minValue && value <= maxValue
                };

                function getExponent(value) {
                    return Math.abs(parseInt(value.toExponential().split("e")[1], 10))
                }

                function getPrecision(value) {
                    const str = value.toString();
                    if (str.indexOf(".") < 0) {
                        return 0
                    }
                    const mantissa = str.split(".");
                    const positionOfDelimiter = mantissa[1].indexOf("e");
                    return positionOfDelimiter >= 0 ? positionOfDelimiter : mantissa[1].length
                }

                function getRoot(x, n) {
                    if (x < 0 && n % 2 !== 1) {
                        return NaN
                    }
                    const y = Math.abs(x) ** (1 / n);
                    return n % 2 === 1 && x < 0 ? -y : y
                }

                function roundFloatPart(value) {
                    let digitsCount = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0;
                    return parseFloat(value.toFixed(digitsCount))
                }
            },
        86005:
            /*!*******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/m_object.js ***!
              \*******************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.orderEach = exports.newAssign = exports.legacyAssign = exports.deepExtendArraySafe = exports.clone = void 0;
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528);
                var _variable_wrapper = (e = __webpack_require__( /*! ../../../core/utils/variable_wrapper */ 40216), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                exports.clone = function() {
                    function Clone() {}
                    return function(obj) {
                        Clone.prototype = obj;
                        return new Clone
                    }
                }();
                exports.orderEach = function(map, func) {
                    const keys = [];
                    let key;
                    let i;
                    for (key in map) {
                        if (Object.prototype.hasOwnProperty.call(map, key)) {
                            keys.push(key)
                        }
                    }
                    keys.sort((function(x, y) {
                        const isNumberX = (0, _type.isNumeric)(x);
                        const isNumberY = (0, _type.isNumeric)(y);
                        if (isNumberX && isNumberY) {
                            return x - y
                        }
                        if (isNumberX && !isNumberY) {
                            return -1
                        }
                        if (!isNumberX && isNumberY) {
                            return 1
                        }
                        if (x < y) {
                            return -1
                        }
                        if (x > y) {
                            return 1
                        }
                        return 0
                    }));
                    for (i = 0; i < keys.length; i++) {
                        key = keys[i];
                        func(key, map[key])
                    }
                };
                const getDeepCopyTarget = item => {
                    if ((0, _type.isObject)(item)) {
                        return Array.isArray(item) ? [] : {}
                    }
                    return item
                };
                const legacyAssign = function(target, property, value, extendComplexObject, assignByReference, shouldCopyUndefined) {
                    if (!assignByReference && _variable_wrapper.default.isWrapped(target[property])) {
                        _variable_wrapper.default.assign(target[property], value)
                    } else {
                        target[property] = value
                    }
                };
                exports.legacyAssign = legacyAssign;
                const newAssign = function(target, property, value, extendComplexObject, assignByReference, shouldCopyUndefined) {
                    const goDeeper = extendComplexObject ? (0, _type.isObject)(target) : (0, _type.isPlainObject)(target);
                    if (!assignByReference && _variable_wrapper.default.isWrapped(target[property])) {
                        _variable_wrapper.default.assign(target[property], value)
                    } else if (!assignByReference && Array.isArray(value)) {
                        target[property] = value.map((item => deepExtendArraySafe(getDeepCopyTarget(item), item, extendComplexObject, assignByReference, shouldCopyUndefined)))
                    } else if (!assignByReference && goDeeper) {
                        target[property] = deepExtendArraySafe(getDeepCopyTarget(value), value, extendComplexObject, assignByReference, shouldCopyUndefined, newAssign)
                    } else {
                        target[property] = value
                    }
                };
                exports.newAssign = newAssign;
                const deepExtendArraySafe = function(target, changes, extendComplexObject, assignByReference, shouldCopyUndefined, useNewAssign) {
                    let prevValue;
                    let newValue;
                    const assignFunc = useNewAssign ? newAssign : legacyAssign;
                    for (const name in changes) {
                        prevValue = target[name];
                        newValue = changes[name];
                        if ("__proto__" === name || "constructor" === name || target === newValue) {
                            continue
                        }
                        if ((0, _type.isPlainObject)(newValue)) {
                            const goDeeper = extendComplexObject ? (0, _type.isObject)(prevValue) : (0, _type.isPlainObject)(prevValue);
                            newValue = deepExtendArraySafe(goDeeper ? prevValue : {}, newValue, extendComplexObject, assignByReference, shouldCopyUndefined)
                        }
                        const isDeepCopyArray = Array.isArray(newValue) && !assignByReference;
                        const hasDifferentNewValue = (shouldCopyUndefined || void 0 !== newValue) && prevValue !== newValue || shouldCopyUndefined && void 0 === prevValue;
                        if (isDeepCopyArray || hasDifferentNewValue) {
                            assignFunc(target, name, newValue, extendComplexObject, assignByReference, shouldCopyUndefined)
                        }
                    }
                    return target
                };
                exports.deepExtendArraySafe = deepExtendArraySafe
            },
        80125:
            /*!*********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/m_position.js ***!
              \*********************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.getDefaultAlignment = exports.getBoundingRect = void 0;
                var _config = (e = __webpack_require__( /*! ../../../core/config */ 66636), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528);
                exports.getDefaultAlignment = isRtlEnabled => {
                    const rtlEnabled = isRtlEnabled ?? (0, _config.default)().rtlEnabled;
                    return rtlEnabled ? "right" : "left"
                };
                exports.getBoundingRect = element => {
                    var _element$getBoundingC;
                    if ((0, _type.isWindow)(element)) {
                        return {
                            width: element.outerWidth,
                            height: element.outerHeight
                        }
                    }
                    return null === (_element$getBoundingC = element.getBoundingClientRect) || void 0 === _element$getBoundingC ? void 0 : _element$getBoundingC.call(element)
                }
            },
        871:
            /*!*****************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/m_public_component.js ***!
              \*****************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.attachInstanceToElement = function($element, componentInstance, disposeFn) {
                    const data = (0, _element_data.data)($element.get(0));
                    const name = getName(componentInstance.constructor);
                    data[name] = componentInstance;
                    if (disposeFn) {
                        _events_engine.default.one($element, _remove.removeEvent, (function() {
                            disposeFn.call(componentInstance)
                        }))
                    }
                    if (!data[COMPONENT_NAMES_DATA_KEY]) {
                        data[COMPONENT_NAMES_DATA_KEY] = []
                    }
                    data[COMPONENT_NAMES_DATA_KEY].push(name)
                };
                exports.default = void 0;
                exports.getInstanceByElement = function($element, componentClass) {
                    const name = getName(componentClass);
                    return (0, _element_data.data)($element.get(0), name)
                };
                exports.name = void 0;
                var _events_engine = (e = __webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                var _remove = __webpack_require__( /*! ../../../common/core/events/remove */ 28630);
                var _element_data = __webpack_require__( /*! ../../../core/element_data */ 74663);
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528);
                const COMPONENT_NAMES_DATA_KEY = "dxComponents";
                const componentNames = new WeakMap;
                let nextAnonymousComponent = 0;
                const getName = function(componentClass, newName) {
                    if ((0, _type.isDefined)(newName)) {
                        componentNames.set(componentClass, newName);
                        return
                    }
                    if (!componentNames.has(componentClass)) {
                        const generatedName = "dxPrivateComponent" + nextAnonymousComponent++;
                        componentNames.set(componentClass, generatedName);
                        return generatedName
                    }
                    return componentNames.get(componentClass)
                };
                exports.name = getName;
                exports.default = {
                    name: getName
                }
            },
        52799:
            /*!******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/m_queue.js ***!
              \******************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.create = createQueue;
                exports.enqueue = void 0;
                var _errors = (e = __webpack_require__( /*! ../../../core/errors */ 87129), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                var _deferred = __webpack_require__( /*! ../../../core/utils/deferred */ 87739);

                function createQueue(discardPendingTasks) {
                    let _tasks = [];
                    let _busy = false;

                    function exec() {
                        while (_tasks.length) {
                            _busy = true;
                            const task = _tasks.shift();
                            const result = task();
                            if (void 0 === result) {
                                continue
                            }
                            if (result.then) {
                                (0, _deferred.when)(result).always(exec);
                                return
                            }
                            throw _errors.default.Error("E0015")
                        }
                        _busy = false
                    }
                    return {
                        add: function(task, removeTaskCallback) {
                            if (!discardPendingTasks) {
                                _tasks.push(task)
                            } else {
                                if (_tasks[0] && removeTaskCallback) {
                                    removeTaskCallback(_tasks[0])
                                }
                                _tasks = [task]
                            }
                            if (!_busy) {
                                exec()
                            }
                        },
                        busy: function() {
                            return _busy
                        }
                    }
                }
                exports.enqueue = createQueue().add
            },
        18344:
            /*!****************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/m_ready_callbacks.js ***!
              \****************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.readyCallbacksModule = exports.default = void 0;
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../core/dom_adapter */ 64960));
                var _call_once = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/call_once */ 13630));
                var _dependency_injector = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/dependency_injector */ 89656));
                var _window = __webpack_require__( /*! ../../../core/utils/window */ 3104);

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                let callbacks = [];
                const subscribeReady = (0, _call_once.default)((() => {
                    const removeListener = _dom_adapter.default.listen(_dom_adapter.default.getDocument(), "DOMContentLoaded", (() => {
                        readyCallbacks.fire();
                        removeListener()
                    }))
                }));
                const readyCallbacks = {
                    add: callback => {
                        const windowExists = (0, _window.hasWindow)();
                        if (windowExists && "loading" !== _dom_adapter.default.getReadyState()) {
                            callback()
                        } else {
                            callbacks.push(callback);
                            windowExists && subscribeReady()
                        }
                    },
                    fire: () => {
                        callbacks.forEach((callback => callback()));
                        callbacks = []
                    }
                };
                const readyCallbacksModule = exports.readyCallbacksModule = (0, _dependency_injector.default)(readyCallbacks);
                exports.default = readyCallbacksModule
            },
        33717:
            /*!*****************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/m_resize_callbacks.js ***!
              \*****************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.resizeCallbacks = exports.default = void 0;
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../core/dom_adapter */ 64960));
                var _call_once = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/call_once */ 13630));
                var _m_callbacks = _interopRequireDefault(__webpack_require__( /*! ./m_callbacks */ 63172));
                var _m_ready_callbacks = _interopRequireDefault(__webpack_require__( /*! ./m_ready_callbacks */ 18344));
                var _m_window = _interopRequireDefault(__webpack_require__( /*! ./m_window */ 14470));

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const resizeCallbacks = exports.resizeCallbacks = function() {
                    let prevSize;
                    const callbacks = (0, _m_callbacks.default)();
                    const originalCallbacksAdd = callbacks.add;
                    const originalCallbacksRemove = callbacks.remove;
                    if (!_m_window.default.hasWindow()) {
                        return callbacks
                    }
                    const formatSize = function() {
                        const window = _m_window.default.getWindow();
                        return {
                            width: window.innerWidth,
                            height: window.innerHeight
                        }
                    };
                    const handleResize = function() {
                        const now = formatSize();
                        if (now.width === prevSize.width && now.height === prevSize.height) {
                            return
                        }
                        let changedDimension;
                        if (now.width === prevSize.width) {
                            changedDimension = "height"
                        }
                        if (now.height === prevSize.height) {
                            changedDimension = "width"
                        }
                        prevSize = now;
                        callbacks.fire(changedDimension)
                    };
                    const setPrevSize = (0, _call_once.default)((function() {
                        prevSize = formatSize()
                    }));
                    let removeListener;
                    callbacks.add = function() {
                        const result = originalCallbacksAdd.apply(callbacks, arguments);
                        setPrevSize();
                        _m_ready_callbacks.default.add((function() {
                            if (!removeListener && callbacks.has()) {
                                removeListener = _dom_adapter.default.listen(_m_window.default.getWindow(), "resize", handleResize)
                            }
                        }));
                        return result
                    };
                    callbacks.remove = function() {
                        const result = originalCallbacksRemove.apply(callbacks, arguments);
                        if (!callbacks.has() && removeListener) {
                            removeListener();
                            removeListener = void 0
                        }
                        return result
                    };
                    return callbacks
                }();
                exports.default = resizeCallbacks
            },
        17113:
            /*!***********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/m_shadow_dom.js ***!
              \***********************************************************************************/
            function(__unused_webpack_module, exports) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.addShadowDomStyles = function($element) {
                    var _el$getRootNode;
                    const el = $element.get(0);
                    const root = null === (_el$getRootNode = el.getRootNode) || void 0 === _el$getRootNode ? void 0 : _el$getRootNode.call(el);
                    if (!(null !== root && void 0 !== root && root.host)) {
                        return
                    }
                    if (!ownerDocumentStyleSheet) {
                        ownerDocumentStyleSheet = createConstructedStyleSheet(root);
                        processRules(ownerDocumentStyleSheet, el.ownerDocument.styleSheets, false)
                    }
                    const currentShadowDomStyleSheet = createConstructedStyleSheet(root);
                    processRules(currentShadowDomStyleSheet, root.styleSheets, true);
                    root.adoptedStyleSheets = [ownerDocumentStyleSheet, currentShadowDomStyleSheet]
                };
                exports.getShadowElementsFromPoint = function(x, y, root) {
                    const elementQueue = function() {
                        let shiftIndex = 0;
                        const items = [];
                        return {
                            push(item) {
                                items.push(item);
                                return this
                            },
                            shift() {
                                shiftIndex++;
                                return items[shiftIndex - 1]
                            },
                            get length() {
                                return items.length - shiftIndex
                            },
                            get items() {
                                return items
                            }
                        }
                    }().push(root);
                    while (elementQueue.length) {
                        const el = elementQueue.shift();
                        for (let i = 0; i < el.childNodes.length; i++) {
                            const childNode = el.childNodes[i];
                            if (childNode.nodeType === Node.ELEMENT_NODE && isPositionInElementRectangle(childNode, x, y) && "none" !== getComputedStyle(childNode).pointerEvents) {
                                elementQueue.push(childNode)
                            }
                        }
                    }
                    const result = elementQueue.items.reverse();
                    result.pop();
                    return result
                };
                const DX_RULE_PREFIX = "dx-";
                let ownerDocumentStyleSheet = null;

                function createConstructedStyleSheet(rootNode) {
                    try {
                        return new CSSStyleSheet
                    } catch (err) {
                        const styleElement = rootNode.ownerDocument.createElement("style");
                        rootNode.appendChild(styleElement);
                        return styleElement.sheet
                    }
                }

                function processRules(targetStyleSheet, styleSheets, needApplyAllStyles) {
                    for (let i = 0; i < styleSheets.length; i++) {
                        const sheet = styleSheets[i];
                        try {
                            for (let j = 0; j < sheet.cssRules.length; j++) {
                                insertRule(targetStyleSheet, sheet.cssRules[j], needApplyAllStyles)
                            }
                        } catch (err) {}
                    }
                }

                function insertRule(targetStyleSheet, rule, needApplyAllStyles) {
                    var _rule$selectorText, _rule$cssRules, _rule$name, _rule$style;
                    const isDxRule = needApplyAllStyles || (null === (_rule$selectorText = rule.selectorText) || void 0 === _rule$selectorText ? void 0 : _rule$selectorText.includes(DX_RULE_PREFIX)) || (null === (_rule$cssRules = rule.cssRules) || void 0 === _rule$cssRules || null === (_rule$cssRules = _rule$cssRules[0]) || void 0 === _rule$cssRules || null === (_rule$cssRules = _rule$cssRules.selectorText) || void 0 === _rule$cssRules ? void 0 : _rule$cssRules.includes(DX_RULE_PREFIX)) || (null === (_rule$name = rule.name) || void 0 === _rule$name ? void 0 : _rule$name.startsWith(DX_RULE_PREFIX)) || "DXIcons" === (null === (_rule$style = rule.style) || void 0 === _rule$style ? void 0 : _rule$style.fontFamily);
                    if (isDxRule) {
                        targetStyleSheet.insertRule(rule.cssText, targetStyleSheet.cssRules.length)
                    }
                }

                function isPositionInElementRectangle(element, x, y) {
                    var _element$getBoundingC;
                    const rect = null === (_element$getBoundingC = element.getBoundingClientRect) || void 0 === _element$getBoundingC ? void 0 : _element$getBoundingC.call(element);
                    return rect && x >= rect.left && x < rect.right && y >= rect.top && y < rect.bottom
                }
            },
        64587:
            /*!*****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/m_size.js ***!
              \*****************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.setWidth = exports.setOuterWidth = exports.setOuterHeight = exports.setInnerWidth = exports.setInnerHeight = exports.setHeight = exports.parseHeight = exports.implementationsMap = exports.getWindowByElement = exports.getWidth = exports.getVisibleHeight = exports.getVerticalOffsets = exports.getSize = exports.getOuterWidth = exports.getOuterHeight = exports.getOffset = exports.getInnerWidth = exports.getInnerHeight = exports.getHeight = exports.getElementBoxParams = exports.addOffsetToMinHeight = exports.addOffsetToMaxHeight = void 0;
                var _dom_adapter = (e = __webpack_require__( /*! ../../../core/dom_adapter */ 64960), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528);
                var _window = __webpack_require__( /*! ../../../core/utils/window */ 3104);
                const window = (0, _window.getWindow)();
                const SPECIAL_HEIGHT_VALUES = ["auto", "none", "inherit", "initial"];
                const getSizeByStyles = function(elementStyles, styles) {
                    let result = 0;
                    styles.forEach((function(style) {
                        result += parseFloat(elementStyles[style]) || 0
                    }));
                    return result
                };
                const getElementBoxParams = function(name, elementStyles) {
                    const beforeName = "width" === name ? "Left" : "Top";
                    const afterName = "width" === name ? "Right" : "Bottom";
                    return {
                        padding: getSizeByStyles(elementStyles, [`padding${beforeName}`, `padding${afterName}`]),
                        border: getSizeByStyles(elementStyles, [`border${beforeName}Width`, `border${afterName}Width`]),
                        margin: getSizeByStyles(elementStyles, [`margin${beforeName}`, `margin${afterName}`])
                    }
                };
                exports.getElementBoxParams = getElementBoxParams;
                const getElementComputedStyle = function(element) {
                    var _element$ownerDocumen;
                    const view = (null === element || void 0 === element || null === (_element$ownerDocumen = element.ownerDocument) || void 0 === _element$ownerDocumen ? void 0 : _element$ownerDocumen.defaultView) || window;
                    return view.getComputedStyle && view.getComputedStyle(element)
                };
                const getCSSProperty = function(element, styles, name, defaultValue) {
                    var _element$style;
                    return (null === styles || void 0 === styles ? void 0 : styles[name]) || (null === (_element$style = element.style) || void 0 === _element$style ? void 0 : _element$style[name]) || defaultValue
                };
                const boxIndices = {
                    content: 0,
                    padding: 1,
                    border: 2,
                    margin: 3,
                    "content-box": 0,
                    "border-box": 2
                };
                const dimensionComponents = {
                    width: ["left", "right"],
                    height: ["top", "bottom"]
                };

                function getComponentThickness(elem, dimension, component, styles) {
                    const get = (elem, styles, field) => parseFloat(getCSSProperty(elem, styles, field, "0")) || 0;
                    const suffix = "border" === component ? "-width" : "";
                    return get(elem, styles, `${component}-${dimensionComponents[dimension][0]}${suffix}`) + get(elem, styles, `${component}-${dimensionComponents[dimension][1]}${suffix}`)
                }
                const getSize = function(element, dimension, box) {
                    const offsetFieldName = "width" === dimension ? "offsetWidth" : "offsetHeight";
                    const styles = getElementComputedStyle(element);
                    let result = getCSSProperty(element, styles, dimension);
                    if ("" === result || "auto" === result) {
                        result = element[offsetFieldName]
                    }
                    result = parseFloat(result) || 0;
                    const currentBox = getCSSProperty(element, styles, "boxSizing", "content-box");
                    const targetBox = box || currentBox;
                    let targetBoxIndex = boxIndices[targetBox];
                    let currentBoxIndex = boxIndices[currentBox];
                    if (void 0 === targetBoxIndex || void 0 === currentBoxIndex) {
                        throw new Error
                    }
                    if (currentBoxIndex === targetBoxIndex) {
                        return result
                    }
                    const coeff = Math.sign(targetBoxIndex - currentBoxIndex);
                    let padding = false;
                    let border = false;
                    let margin = false;
                    let scrollThickness = false;
                    if (1 === coeff) {
                        targetBoxIndex += 1;
                        currentBoxIndex += 1
                    }
                    for (let boxPart = currentBoxIndex; boxPart !== targetBoxIndex; boxPart += coeff) {
                        switch (boxPart) {
                            case boxIndices.content:
                                break;
                            case boxIndices.padding:
                                padding = coeff * getComponentThickness(element, dimension, "padding", styles);
                                break;
                            case boxIndices.border:
                                border = coeff * getComponentThickness(element, dimension, "border", styles);
                                break;
                            case boxIndices.margin:
                                margin = coeff * getComponentThickness(element, dimension, "margin", styles)
                        }
                    }
                    if (padding || border) {
                        const paddingAndBorder = (false === padding ? coeff * getComponentThickness(element, dimension, "padding", styles) : padding) + (false === border ? coeff * getComponentThickness(element, dimension, "border", styles) : border);
                        scrollThickness = coeff * Math.max(0, Math.floor(element[offsetFieldName] - result - coeff * paddingAndBorder)) || 0
                    }
                    return result + margin + padding + border + scrollThickness
                };
                exports.getSize = getSize;
                const parseHeight = function(value, container, element) {
                    if (value.indexOf("px") > 0) {
                        value = parseInt(value.replace("px", ""))
                    } else if (value.indexOf("%") > 0) {
                        value = parseInt(value.replace("%", "")) * function(container) {
                            return (0, _type.isWindow)(container) ? container.innerHeight : container.offsetHeight
                        }(container) / 100
                    } else if (!isNaN(value)) {
                        value = parseInt(value)
                    } else if (value.indexOf("vh") > 0) {
                        value = window.innerHeight / 100 * parseInt(value.replace("vh", ""))
                    } else if (element && value.indexOf("em") > 0) {
                        value = parseFloat(value.replace("em", "")) * parseFloat(window.getComputedStyle(element).fontSize)
                    }
                    return value
                };
                exports.parseHeight = parseHeight;
                const getHeightWithOffset = function(value, offset, container) {
                    if (!value) {
                        return null
                    }
                    if (SPECIAL_HEIGHT_VALUES.includes(value)) {
                        return offset ? null : value
                    }
                    if ((0, _type.isString)(value)) {
                        value = parseHeight(value, container)
                    }
                    if ((0, _type.isNumeric)(value)) {
                        return Math.max(0, value + offset)
                    }
                    const operationString = offset < 0 ? " - " : " ";
                    return `calc(${value}${operationString}${Math.abs(offset)}px)`
                };
                exports.addOffsetToMaxHeight = function(value, offset, container) {
                    const maxHeight = getHeightWithOffset(value, offset, container);
                    return null !== maxHeight ? maxHeight : "none"
                };
                exports.addOffsetToMinHeight = function(value, offset, container) {
                    const minHeight = getHeightWithOffset(value, offset, container);
                    return null !== minHeight ? minHeight : 0
                };
                exports.getVerticalOffsets = function(element, withMargins) {
                    if (!element) {
                        return 0
                    }
                    const boxParams = getElementBoxParams("height", window.getComputedStyle(element));
                    return boxParams.padding + boxParams.border + (withMargins ? boxParams.margin : 0)
                };
                exports.getVisibleHeight = function(element) {
                    if (element) {
                        var _element$getBoundingC;
                        const boundingClientRect = null === (_element$getBoundingC = element.getBoundingClientRect) || void 0 === _element$getBoundingC ? void 0 : _element$getBoundingC.call(element);
                        if (null !== boundingClientRect && void 0 !== boundingClientRect && boundingClientRect.height) {
                            return boundingClientRect.height
                        }
                    }
                    return 0
                };
                const implementationsMap = exports.implementationsMap = {
                    getWidth: function() {
                        for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
                            args[_key] = arguments[_key]
                        }
                        return elementSizeHelper("width", ...args)
                    },
                    setWidth: function() {
                        for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
                            args[_key2] = arguments[_key2]
                        }
                        return elementSizeHelper("width", ...args)
                    },
                    getHeight: function() {
                        for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
                            args[_key3] = arguments[_key3]
                        }
                        return elementSizeHelper("height", ...args)
                    },
                    setHeight: function() {
                        for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
                            args[_key4] = arguments[_key4]
                        }
                        return elementSizeHelper("height", ...args)
                    },
                    getOuterWidth: function() {
                        for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {
                            args[_key5] = arguments[_key5]
                        }
                        return elementSizeHelper("outerWidth", ...args)
                    },
                    setOuterWidth: function() {
                        for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {
                            args[_key6] = arguments[_key6]
                        }
                        return elementSizeHelper("outerWidth", ...args)
                    },
                    getOuterHeight: function() {
                        for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {
                            args[_key7] = arguments[_key7]
                        }
                        return elementSizeHelper("outerHeight", ...args)
                    },
                    setOuterHeight: function() {
                        for (var _len8 = arguments.length, args = new Array(_len8), _key8 = 0; _key8 < _len8; _key8++) {
                            args[_key8] = arguments[_key8]
                        }
                        return elementSizeHelper("outerHeight", ...args)
                    },
                    getInnerWidth: function() {
                        for (var _len9 = arguments.length, args = new Array(_len9), _key9 = 0; _key9 < _len9; _key9++) {
                            args[_key9] = arguments[_key9]
                        }
                        return elementSizeHelper("innerWidth", ...args)
                    },
                    setInnerWidth: function() {
                        for (var _len10 = arguments.length, args = new Array(_len10), _key10 = 0; _key10 < _len10; _key10++) {
                            args[_key10] = arguments[_key10]
                        }
                        return elementSizeHelper("innerWidth", ...args)
                    },
                    getInnerHeight: function() {
                        for (var _len11 = arguments.length, args = new Array(_len11), _key11 = 0; _key11 < _len11; _key11++) {
                            args[_key11] = arguments[_key11]
                        }
                        return elementSizeHelper("innerHeight", ...args)
                    },
                    setInnerHeight: function() {
                        for (var _len12 = arguments.length, args = new Array(_len12), _key12 = 0; _key12 < _len12; _key12++) {
                            args[_key12] = arguments[_key12]
                        }
                        return elementSizeHelper("innerHeight", ...args)
                    }
                };

                function elementSizeHelper(sizeProperty, el, value) {
                    return 2 === arguments.length ? elementSize(el, sizeProperty) : elementSize(el, sizeProperty, value)
                }
                exports.getWidth = el => implementationsMap.getWidth(el);
                exports.setWidth = (el, value) => implementationsMap.setWidth(el, value);
                exports.getHeight = el => implementationsMap.getHeight(el);
                exports.setHeight = (el, value) => implementationsMap.setHeight(el, value);
                exports.getOuterWidth = (el, includeMargin) => implementationsMap.getOuterWidth(el, includeMargin || false);
                exports.setOuterWidth = (el, value) => implementationsMap.setOuterWidth(el, value);
                exports.getOuterHeight = (el, includeMargin) => implementationsMap.getOuterHeight(el, includeMargin || false);
                exports.setOuterHeight = (el, value) => implementationsMap.setOuterHeight(el, value);
                exports.getInnerWidth = el => implementationsMap.getInnerWidth(el);
                exports.setInnerWidth = (el, value) => implementationsMap.setInnerWidth(el, value);
                exports.getInnerHeight = el => implementationsMap.getInnerHeight(el);
                exports.setInnerHeight = (el, value) => implementationsMap.setInnerHeight(el, value);
                const elementSize = function(el, sizeProperty, value) {
                    const partialName = sizeProperty.toLowerCase().indexOf("width") >= 0 ? "Width" : "Height";
                    const propName = partialName.toLowerCase();
                    const isOuter = 0 === sizeProperty.indexOf("outer");
                    const isInner = 0 === sizeProperty.indexOf("inner");
                    const isGetter = 2 === arguments.length || "boolean" === typeof value;
                    if ((0, _type.isRenderer)(el)) {
                        if (el.length > 1 && !isGetter) {
                            for (let i = 0; i < el.length; i++) {
                                elementSize(el[i], sizeProperty, value)
                            }
                            return
                        }
                        el = el[0]
                    }
                    if (!el) {
                        return
                    }
                    if ((0, _type.isWindow)(el)) {
                        return isOuter ? el[`inner${partialName}`] : _dom_adapter.default.getDocumentElement()[`client${partialName}`]
                    }
                    if (_dom_adapter.default.isDocument(el)) {
                        const documentElement = _dom_adapter.default.getDocumentElement();
                        const body = _dom_adapter.default.getBody();
                        return Math.max(body[`scroll${partialName}`], body[`offset${partialName}`], documentElement[`scroll${partialName}`], documentElement[`offset${partialName}`], documentElement[`client${partialName}`])
                    }
                    if (isGetter) {
                        let box = "content";
                        if (isOuter) {
                            box = value ? "margin" : "border"
                        }
                        if (isInner) {
                            box = "padding"
                        }
                        return getSize(el, propName, box)
                    }
                    if ((0, _type.isNumeric)(value)) {
                        const elementStyles = getElementComputedStyle(el);
                        const sizeAdjustment = getElementBoxParams(propName, elementStyles);
                        const isBorderBox = "border-box" === elementStyles.boxSizing;
                        value = Number(value);
                        if (isOuter) {
                            value -= isBorderBox ? 0 : sizeAdjustment.border + sizeAdjustment.padding
                        } else if (isInner) {
                            value += isBorderBox ? sizeAdjustment.border : -sizeAdjustment.padding
                        } else if (isBorderBox) {
                            value += sizeAdjustment.border + sizeAdjustment.padding
                        }
                    }
                    value += (0, _type.isNumeric)(value) ? "px" : "";
                    _dom_adapter.default.setStyle(el, propName, value);
                    return null
                };
                const getWindowByElement = el => (0, _type.isWindow)(el) ? el : el.defaultView;
                exports.getWindowByElement = getWindowByElement;
                exports.getOffset = el => {
                    if (!el.getClientRects().length) {
                        return {
                            top: 0,
                            left: 0
                        }
                    }
                    const rect = el.getBoundingClientRect();
                    const win = getWindowByElement(el.ownerDocument);
                    const docElem = el.ownerDocument.documentElement;
                    return {
                        top: rect.top + win.pageYOffset - docElem.clientTop,
                        left: rect.left + win.pageXOffset - docElem.clientLeft
                    }
                }
            },
        47865:
            /*!********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/m_storage.js ***!
              \********************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.sessionStorage = void 0;
                var _window = __webpack_require__( /*! ../../../core/utils/window */ 3104);
                const window = (0, _window.getWindow)();
                exports.sessionStorage = function() {
                    let sessionStorage;
                    try {
                        sessionStorage = window.sessionStorage
                    } catch (e) {}
                    return sessionStorage
                }
            },
        32527:
            /*!*******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/m_string.js ***!
              \*******************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.encodeHtml = void 0;
                exports.format = function(template) {
                    for (var _len = arguments.length, values = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
                        values[_key - 1] = arguments[_key]
                    }
                    if ((0, _type.isFunction)(template)) {
                        return template(...values)
                    }
                    values.forEach(((value, index) => {
                        if ((0, _type.isString)(value)) {
                            value = value.replace(/\$/g, "$$$$")
                        }
                        const placeholderReg = new RegExp(`\\{${index}\\}`, "gm");
                        template = template.replace(placeholderReg, value)
                    }));
                    return template
                };
                exports.quadToObject = exports.isEmpty = void 0;
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528);
                exports.encodeHtml = function() {
                    const encodeRegExp = [new RegExp("&", "g"), new RegExp('"', "g"), new RegExp("'", "g"), new RegExp("<", "g"), new RegExp(">", "g")];
                    return function(str) {
                        return String(str).replace(encodeRegExp[0], "&amp;").replace(encodeRegExp[1], "&quot;").replace(encodeRegExp[2], "&#39;").replace(encodeRegExp[3], "&lt;").replace(encodeRegExp[4], "&gt;")
                    }
                }();
                exports.quadToObject = function(raw) {
                    const quad = function(raw) {
                        switch (typeof raw) {
                            case "string":
                                return raw.split(/\s+/, 4);
                            case "object":
                                return [raw.x || raw.h || raw.left, raw.y || raw.v || raw.top, raw.x || raw.h || raw.right, raw.y || raw.v || raw.bottom];
                            case "number":
                                return [raw];
                            default:
                                return raw
                        }
                    }(raw);
                    let left = parseInt(quad && quad[0], 10);
                    let top = parseInt(quad && quad[1], 10);
                    let right = parseInt(quad && quad[2], 10);
                    let bottom = parseInt(quad && quad[3], 10);
                    if (!isFinite(left)) {
                        left = 0
                    }
                    if (!isFinite(top)) {
                        top = left
                    }
                    if (!isFinite(right)) {
                        right = left
                    }
                    if (!isFinite(bottom)) {
                        bottom = top
                    }
                    return {
                        top: top,
                        right: right,
                        bottom: bottom,
                        left: left
                    }
                };
                exports.isEmpty = function() {
                    const SPACE_REGEXP = /\s/g;
                    return function(text) {
                        return !text || !text.replace(SPACE_REGEXP, "")
                    }
                }()
            },
        11953:
            /*!******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/m_style.js ***!
              \******************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.stylePropPrefix = exports.styleProp = exports.setWidth = exports.setStyle = exports.setHeight = exports.parsePixelValue = exports.normalizeStyleProp = void 0;
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../core/dom_adapter */ 64960));
                var _call_once = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/call_once */ 13630));
                var _inflector = __webpack_require__( /*! ../../../core/utils/inflector */ 53124);
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528);

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const jsPrefixes = ["", "Webkit", "Moz", "O", "Ms"];
                const cssPrefixes = {
                    "": "",
                    Webkit: "-webkit-",
                    Moz: "-moz-",
                    O: "-o-",
                    ms: "-ms-"
                };
                const getStyles = (0, _call_once.default)((function() {
                    return _dom_adapter.default.createElement("dx").style
                }));
                exports.styleProp = function(name) {
                    if (name in getStyles()) {
                        return name
                    }
                    const originalName = name;
                    name = name.charAt(0).toUpperCase() + name.substr(1);
                    for (let i = 1; i < jsPrefixes.length; i++) {
                        const prefixedProp = jsPrefixes[i].toLowerCase() + name;
                        if (prefixedProp in getStyles()) {
                            return prefixedProp
                        }
                    }
                    return originalName
                };
                exports.stylePropPrefix = function(prop) {
                    return function(prop, callBack) {
                        prop = (0, _inflector.camelize)(prop, true);
                        let result;
                        for (let i = 0, cssPrefixesCount = jsPrefixes.length; i < cssPrefixesCount; i++) {
                            const jsPrefix = jsPrefixes[i];
                            const prefixedProp = jsPrefix + prop;
                            const lowerPrefixedProp = (0, _inflector.camelize)(prefixedProp);
                            result = callBack(lowerPrefixedProp, jsPrefix);
                            if (void 0 === result) {
                                result = callBack(prefixedProp, jsPrefix)
                            }
                            if (void 0 !== result) {
                                break
                            }
                        }
                        return result || ""
                    }(prop, (function(specific, jsPrefix) {
                        if (specific in getStyles()) {
                            return cssPrefixes[jsPrefix]
                        }
                    }))
                };
                const pxExceptions = ["fillOpacity", "columnCount", "flexGrow", "flexShrink", "fontWeight", "lineHeight", "opacity", "zIndex", "zoom"];
                exports.parsePixelValue = function(value) {
                    if ((0, _type.isNumeric)(value)) {
                        return value
                    }
                    if ((0, _type.isString)(value)) {
                        return Number(value.replace("px", ""))
                    }
                    return NaN
                };
                exports.normalizeStyleProp = function(prop, value) {
                    if ((0, _type.isNumeric)(value) && !pxExceptions.includes(prop)) {
                        value += "px"
                    }
                    return value
                };
                const setDimensionProperty = function(elements, propertyName, value) {
                    if (elements) {
                        value = (0, _type.isNumeric)(value) ? value += "px" : value;
                        for (let i = 0; i < elements.length; ++i) {
                            elements[i].style[propertyName] = value
                        }
                    }
                };
                exports.setWidth = function(elements, value) {
                    setDimensionProperty(elements, "width", value)
                };
                exports.setHeight = function(elements, value) {
                    setDimensionProperty(elements, "height", value)
                };
                exports.setStyle = function(element, styleString) {
                    let resetStyle = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : true;
                    if (resetStyle) {
                        const styleList = [].slice.call(element.style);
                        styleList.forEach((propertyName => {
                            element.style.removeProperty(propertyName)
                        }))
                    }
                    styleString.split(";").forEach((style => {
                        const parts = style.split(":").map((stylePart => stylePart.trim()));
                        if (2 === parts.length) {
                            const [property, value] = parts;
                            element.style[property] = value
                        }
                    }))
                }
            },
        85991:
            /*!********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/m_support.js ***!
              \********************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.pointerEvents = exports.nativeScrolling = exports.inputType = exports.default = exports.animation = void 0;
                Object.defineProperty(exports, "styleProp", {
                    enumerable: true,
                    get: function() {
                        return _style.styleProp
                    }
                });
                Object.defineProperty(exports, "stylePropPrefix", {
                    enumerable: true,
                    get: function() {
                        return _style.stylePropPrefix
                    }
                });
                exports.transitionEndEventName = exports.transition = exports.touchEvents = exports.touch = exports.supportProp = void 0;
                var _devices = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/environment/devices */ 44257));
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../core/dom_adapter */ 64960));
                var _call_once = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/call_once */ 13630));
                var _style = __webpack_require__( /*! ../../../core/utils/style */ 58515);
                var _window = __webpack_require__( /*! ../../../core/utils/window */ 3104);

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const {
                    maxTouchPoints: maxTouchPoints
                } = (0, _window.getNavigator)();
                const transitionEndEventNames = {
                    webkitTransition: "webkitTransitionEnd",
                    MozTransition: "transitionend",
                    OTransition: "oTransitionEnd",
                    transition: "transitionend"
                };
                const supportProp = function(prop) {
                    return !!(0, _style.styleProp)(prop)
                };
                exports.supportProp = supportProp;
                const inputType = function(type) {
                    if ("text" === type) {
                        return true
                    }
                    const input = _dom_adapter.default.createElement("input");
                    try {
                        input.setAttribute("type", type);
                        input.value = "wrongValue";
                        return !input.value
                    } catch (e) {
                        return false
                    }
                };
                exports.inputType = inputType;
                const touchEvents = exports.touchEvents = function(hasWindowProperty, maxTouchPoints) {
                    return (hasWindowProperty("ontouchstart") || !!maxTouchPoints) && !hasWindowProperty("callPhantom")
                }(_window.hasProperty, maxTouchPoints);
                const pointerEvents = exports.pointerEvents = (hasWindowProperty = _window.hasProperty, hasWindowProperty("PointerEvent"));
                var hasWindowProperty;
                const touchPointersPresent = !!maxTouchPoints;
                const touch = exports.touch = touchEvents || pointerEvents && touchPointersPresent;
                const transition = exports.transition = (0, _call_once.default)((function() {
                    return supportProp("transition")
                }));
                const transitionEndEventName = exports.transitionEndEventName = (0, _call_once.default)((function() {
                    return transitionEndEventNames[(0, _style.styleProp)("transition")]
                }));
                const animation = exports.animation = (0, _call_once.default)((function() {
                    return supportProp("animation")
                }));
                const nativeScrolling = exports.nativeScrolling = function() {
                    const {
                        platform: platform,
                        mac: isMac
                    } = _devices.default.real();
                    const isNativeScrollDevice = "ios" === platform || "android" === platform || isMac;
                    return isNativeScrollDevice
                }();
                exports.default = {
                    animation: animation,
                    inputType: inputType,
                    nativeScrolling: nativeScrolling,
                    pointerEvents: pointerEvents,
                    styleProp: _style.styleProp,
                    stylePropPrefix: _style.stylePropPrefix,
                    supportProp: supportProp,
                    touch: touch,
                    touchEvents: touchEvents,
                    transition: transition,
                    transitionEndEventName: transitionEndEventName
                }
            },
        89650:
            /*!****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/m_svg.js ***!
              \****************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = exports.HIDDEN_FOR_EXPORT = void 0;
                exports.getSvgElement = getSvgElement;
                exports.getSvgMarkup = getSvgMarkup;
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../core/dom_adapter */ 64960));
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553));
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528);
                var _window = __webpack_require__( /*! ../../../core/utils/window */ 3104);

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const window = (0, _window.getWindow)();
                const HIDDEN_FOR_EXPORT = exports.HIDDEN_FOR_EXPORT = "hidden-for-export";

                function getSvgMarkup(element, backgroundColor) {
                    return function(markup) {
                        if (-1 === markup.indexOf("xmlns:xlink")) {
                            markup = markup.replace("<svg", '<svg xmlns:xlink="http://www.w3.org/1999/xlink"')
                        }
                        return markup.replace(/xmlns:NS1="[\s\S]*?"/gi, "").replace(/NS1:xmlns:xlink="([\s\S]*?)"/gi, 'xmlns:xlink="$1"')
                    }((markup = function(element, backgroundColor) {
                        const temp = _dom_adapter.default.createElement("div");
                        const clone = element.cloneNode(true);
                        if (backgroundColor) {
                            (0, _renderer.default)(clone).css("backgroundColor", backgroundColor)
                        }
                        temp.appendChild(clone);
                        return temp.innerHTML
                    }(element, backgroundColor), markup.replace(/&quot;/gi, "&#34;").replace(/&amp;/gi, "&#38;").replace(/&apos;/gi, "&#39;").replace(/&lt;/gi, "&#60;").replace(/&gt;/gi, "&#62;").replace(/&nbsp;/gi, "&#160;").replace(/&shy;/gi, "&#173;")));
                    var markup
                }

                function getSvgElement(markup) {
                    if ((0, _type.isString)(markup)) {
                        const parsedMarkup = (new window.DOMParser).parseFromString(markup, "image/svg+xml").childNodes[0];
                        return parsedMarkup
                    }
                    if (_dom_adapter.default.isNode(markup)) {
                        return markup
                    }
                    if ((0, _type.isRenderer)(markup)) {
                        return markup.get(0)
                    }
                }
                exports.default = {
                    getSvgElement: getSvgElement,
                    getSvgMarkup: getSvgMarkup,
                    HIDDEN_FOR_EXPORT: HIDDEN_FOR_EXPORT
                }
            },
        91008:
            /*!*****************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/m_template_manager.js ***!
              \*****************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.validateTemplateSource = exports.templateKey = exports.suitableTemplatesByName = exports.getNormalizedTemplateArgs = exports.findTemplates = exports.defaultCreateElement = exports.default = exports.addPublicElementNormalization = exports.addOneRenderedCall = exports.acquireTemplate = exports.acquireIntegrationTemplate = void 0;
                var _config = _interopRequireDefault(__webpack_require__( /*! ../../../core/config */ 66636));
                var _devices = _interopRequireDefault(__webpack_require__( /*! ../../../core/devices */ 65951));
                var _element = __webpack_require__( /*! ../../../core/element */ 61404);
                var _errors = _interopRequireDefault(__webpack_require__( /*! ../../../core/errors */ 87129));
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553));
                var _child_default_template = __webpack_require__( /*! ../../../core/templates/child_default_template */ 91585);
                var _empty_template = __webpack_require__( /*! ../../../core/templates/empty_template */ 48650);
                var _template = __webpack_require__( /*! ../../../core/templates/template */ 67872);
                var _template_base = __webpack_require__( /*! ../../../core/templates/template_base */ 42186);
                var _array = __webpack_require__( /*! ../../../core/utils/array */ 94487);
                var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781);
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576);
                var _m_dom = _interopRequireDefault(__webpack_require__( /*! ./m_dom */ 76400));
                var _m_type = _interopRequireDefault(__webpack_require__( /*! ./m_type */ 39918));

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }

                function _extends() {
                    return _extends = Object.assign ? Object.assign.bind() : function(n) {
                        for (var e = 1; e < arguments.length; e++) {
                            var t = arguments[e];
                            for (var r in t) {
                                ({}).hasOwnProperty.call(t, r) && (n[r] = t[r])
                            }
                        }
                        return n
                    }, _extends.apply(null, arguments)
                }
                const findTemplates = (element, name) => {
                    const templates = (0, _renderer.default)(element).contents().filter(`[data-options*="${name}"]`);
                    return [].slice.call(templates).map((element => {
                        const optionsString = (0, _renderer.default)(element).attr("data-options") || "";
                        return {
                            element: element,
                            options: (0, _config.default)().optionsParser(optionsString)[name]
                        }
                    })).filter((template => !!template.options))
                };
                exports.findTemplates = findTemplates;
                const suitableTemplatesByName = rawTemplates => {
                    const templatesMap = (0, _array.groupBy)(rawTemplates, (template => template.options.name));
                    if (templatesMap.undefined) {
                        throw _errors.default.Error("E0023")
                    }
                    const result = {};
                    Object.keys(templatesMap).forEach((name => {
                        var _findBestMatches$;
                        const suitableTemplate = null === (_findBestMatches$ = (0, _common.findBestMatches)(_devices.default.current(), templatesMap[name], (template => template.options))[0]) || void 0 === _findBestMatches$ ? void 0 : _findBestMatches$.element;
                        if (suitableTemplate) {
                            result[name] = suitableTemplate
                        }
                    }));
                    return result
                };
                exports.suitableTemplatesByName = suitableTemplatesByName;
                const addOneRenderedCall = template => {
                    const render = template.render.bind(template);
                    return (0, _extend.extend)({}, template, {
                        render(options) {
                            const templateResult = render(options);
                            options && options.onRendered && options.onRendered();
                            return templateResult
                        }
                    })
                };
                exports.addOneRenderedCall = addOneRenderedCall;
                const addPublicElementNormalization = template => {
                    const render = template.render.bind(template);
                    return (0, _extend.extend)({}, template, {
                        render(options) {
                            const $container = (0, _renderer.default)(options.container);
                            return render(_extends({}, options, {
                                container: (0, _element.getPublicElement)($container)
                            }))
                        }
                    })
                };
                exports.addPublicElementNormalization = addPublicElementNormalization;
                const getNormalizedTemplateArgs = options => {
                    const args = [];
                    if ("model" in options) {
                        args.push(options.model)
                    }
                    if ("index" in options) {
                        args.push(options.index)
                    }
                    args.push(options.container);
                    return args
                };
                exports.getNormalizedTemplateArgs = getNormalizedTemplateArgs;
                const validateTemplateSource = templateSource => "string" === typeof templateSource ? _m_dom.default.normalizeTemplateElement(templateSource) : templateSource;
                exports.validateTemplateSource = validateTemplateSource;
                const templateKey = templateSource => _m_type.default.isRenderer(templateSource) && templateSource[0] || templateSource;
                exports.templateKey = templateKey;
                const defaultCreateElement = element => new _template.Template(element);
                exports.defaultCreateElement = defaultCreateElement;
                const acquireIntegrationTemplate = (templateSource, templates, isAsyncTemplate, skipTemplates) => {
                    let integrationTemplate = null;
                    if (!skipTemplates || -1 === skipTemplates.indexOf(templateSource)) {
                        integrationTemplate = templates[templateSource];
                        if (integrationTemplate && !(integrationTemplate instanceof _template_base.TemplateBase)) {
                            if (_m_type.default.isFunction(integrationTemplate.render)) {
                                integrationTemplate = addPublicElementNormalization(integrationTemplate)
                            }
                            if (!isAsyncTemplate) {
                                integrationTemplate = addOneRenderedCall(integrationTemplate)
                            }
                        }
                    }
                    return integrationTemplate
                };
                exports.acquireIntegrationTemplate = acquireIntegrationTemplate;
                const acquireTemplate = (templateSource, createTemplate, templates, isAsyncTemplate, skipTemplates, defaultTemplates) => {
                    if (null == templateSource) {
                        return new _empty_template.EmptyTemplate
                    }
                    if (templateSource instanceof _child_default_template.ChildDefaultTemplate) {
                        return defaultTemplates[templateSource.name]
                    }
                    if (templateSource instanceof _template_base.TemplateBase) {
                        return templateSource
                    }
                    if (_m_type.default.isFunction(templateSource.render) && !_m_type.default.isRenderer(templateSource)) {
                        return isAsyncTemplate ? templateSource : addOneRenderedCall(templateSource)
                    }
                    if (templateSource.nodeType || _m_type.default.isRenderer(templateSource)) {
                        return createTemplate((0, _renderer.default)(templateSource))
                    }
                    return acquireIntegrationTemplate(templateSource, templates, isAsyncTemplate, skipTemplates) || defaultTemplates[templateSource] || createTemplate(templateSource)
                };
                exports.acquireTemplate = acquireTemplate;
                exports.default = {
                    findTemplates: findTemplates,
                    suitableTemplatesByName: suitableTemplatesByName,
                    addOneRenderedCall: addOneRenderedCall,
                    addPublicElementNormalization: addPublicElementNormalization,
                    getNormalizedTemplateArgs: getNormalizedTemplateArgs,
                    validateTemplateSource: validateTemplateSource,
                    templateKey: templateKey,
                    defaultCreateElement: defaultCreateElement,
                    acquireIntegrationTemplate: acquireIntegrationTemplate,
                    acquireTemplate: acquireTemplate
                }
            },
        39918:
            /*!*****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/m_type.js ***!
              \*****************************************************************************/
            function(__unused_webpack_module, exports) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.type = exports.isWindow = exports.isString = exports.isRenderer = exports.isPromise = exports.isPrimitive = exports.isPlainObject = exports.isObject = exports.isNumeric = exports.isFunction = exports.isExponential = exports.isEvent = exports.isEmptyObject = exports.isDefined = exports.isDeferred = exports.isDate = exports.isBoolean = exports.default = void 0;
                const types = {
                    "[object Array]": "array",
                    "[object Date]": "date",
                    "[object Object]": "object",
                    "[object String]": "string"
                };
                const type = function(object) {
                    if (null === object) {
                        return "null"
                    }
                    const typeOfObject = Object.prototype.toString.call(object);
                    return "object" === typeof object ? types[typeOfObject] || "object" : typeof object
                };
                exports.type = type;
                const isBoolean = function(object) {
                    return "boolean" === typeof object
                };
                exports.isBoolean = isBoolean;
                const isExponential = function(value) {
                    return isNumeric(value) && -1 !== value.toString().indexOf("e")
                };
                exports.isExponential = isExponential;
                const isDate = function(object) {
                    return "date" === type(object)
                };
                exports.isDate = isDate;
                const isDefined = function(object) {
                    return null !== object && void 0 !== object
                };
                exports.isDefined = isDefined;
                const isFunction = function(object) {
                    return "function" === typeof object
                };
                exports.isFunction = isFunction;
                const isString = function(object) {
                    return "string" === typeof object
                };
                exports.isString = isString;
                const isNumeric = function(object) {
                    return "number" === typeof object && isFinite(object) || !isNaN(object - parseFloat(object))
                };
                exports.isNumeric = isNumeric;
                const isObject = function(object) {
                    return "object" === type(object)
                };
                exports.isObject = isObject;
                const isEmptyObject = function(object) {
                    let property;
                    for (property in object) {
                        return false
                    }
                    return true
                };
                exports.isEmptyObject = isEmptyObject;
                const isPlainObject = function(object) {
                    if (!object || "object" !== type(object)) {
                        return false
                    }
                    const proto = Object.getPrototypeOf(object);
                    if (!proto) {
                        return true
                    }
                    const ctor = Object.hasOwnProperty.call(proto, "constructor") && proto.constructor;
                    return "function" === typeof ctor && Object.toString.call(ctor) === Object.toString.call(Object)
                };
                exports.isPlainObject = isPlainObject;
                const isPrimitive = function(value) {
                    return !["object", "array", "function"].includes(type(value))
                };
                exports.isPrimitive = isPrimitive;
                const isWindow = function(object) {
                    return null != object && object === object.window
                };
                exports.isWindow = isWindow;
                const isRenderer = function(object) {
                    return !!object && !!(object.jquery || object.dxRenderer)
                };
                exports.isRenderer = isRenderer;
                const isPromise = function(object) {
                    return !!object && isFunction(object.then)
                };
                exports.isPromise = isPromise;
                const isDeferred = function(object) {
                    return !!object && isFunction(object.done) && isFunction(object.fail)
                };
                exports.isDeferred = isDeferred;
                const isEvent = function(object) {
                    return !!(object && object.preventDefault)
                };
                exports.isEvent = isEvent;
                exports.default = {
                    isBoolean: isBoolean,
                    isDate: isDate,
                    isDeferred: isDeferred,
                    isDefined: isDefined,
                    isEmptyObject: isEmptyObject,
                    isEvent: isEvent,
                    isExponential: isExponential,
                    isFunction: isFunction,
                    isNumeric: isNumeric,
                    isObject: isObject,
                    isPlainObject: isPlainObject,
                    isPrimitive: isPrimitive,
                    isPromise: isPromise,
                    isRenderer: isRenderer,
                    isString: isString,
                    isWindow: isWindow,
                    type: type
                }
            },
        66082:
            /*!*****************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/m_variable_wrapper.js ***!
              \*****************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.variableWrapper = void 0;
                var _console = __webpack_require__( /*! ../../../core/utils/console */ 31951);
                var _dependency_injector = (e = __webpack_require__( /*! ../../../core/utils/dependency_injector */ 89656), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                exports.variableWrapper = (0, _dependency_injector.default)({
                    isWrapped: function() {
                        return false
                    },
                    isWritableWrapped: function() {
                        return false
                    },
                    wrap: function(value) {
                        return value
                    },
                    unwrap: function(value) {
                        return value
                    },
                    assign: function() {
                        _console.logger.error("Method 'assign' should not be used for not wrapped variables. Use 'isWrapped' method for ensuring.")
                    }
                })
            },
        5388:
            /*!********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/m_version.js ***!
              \********************************************************************************/
            function(__unused_webpack_module, exports) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.compare = function(x, y, maxLevel) {
                    function normalizeArg(value) {
                        if ("string" === typeof value) {
                            return value.split(".")
                        }
                        if ("number" === typeof value) {
                            return [value]
                        }
                        return value
                    }
                    x = normalizeArg(x);
                    y = normalizeArg(y);
                    let length = Math.max(x.length, y.length);
                    if (isFinite(maxLevel)) {
                        length = Math.min(length, maxLevel)
                    }
                    for (let i = 0; i < length; i++) {
                        const xItem = parseInt(x[i] || 0, 10);
                        const yItem = parseInt(y[i] || 0, 10);
                        if (xItem < yItem) {
                            return -1
                        }
                        if (xItem > yItem) {
                            return 1
                        }
                    }
                    return 0
                }
            },
        65913:
            /*!**********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/m_view_port.js ***!
              \**********************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.changeCallback = void 0;
                exports.originalViewPort = function() {
                    return $originalViewPort
                };
                exports.value = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553));
                var _callbacks = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/callbacks */ 84718));
                var _ready_callbacks = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/ready_callbacks */ 3122));

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const ready = _ready_callbacks.default.add;
                const changeCallback = exports.changeCallback = (0, _callbacks.default)();
                let $originalViewPort = (0, _renderer.default)();
                const value = exports.value = function() {
                    let $current;
                    return function(element) {
                        if (!arguments.length) {
                            return $current
                        }
                        const $element = (0, _renderer.default)(element);
                        $originalViewPort = $element;
                        const isNewViewportFound = !!$element.length;
                        const prevViewPort = value();
                        $current = isNewViewportFound ? $element : (0, _renderer.default)("body");
                        changeCallback.fire(isNewViewportFound ? value() : (0, _renderer.default)(), prevViewPort)
                    }
                }();
                ready((function() {
                    value(".dx-viewport")
                }))
            },
        14470:
            /*!*******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/m_window.js ***!
              \*******************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.setWindow = exports.hasWindow = exports.hasProperty = exports.getWindow = exports.getNavigator = exports.getCurrentScreenFactor = exports.defaultScreenFactorFunc = exports.default = void 0;
                var _dom_adapter = (e = __webpack_require__( /*! ../../../core/dom_adapter */ 64960), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                let hasWindowValue = "undefined" !== typeof window;
                const hasWindow = () => hasWindowValue;
                exports.hasWindow = hasWindow;
                let windowObject = hasWindow() ? window : void 0;
                if (!windowObject) {
                    windowObject = {};
                    windowObject.window = windowObject
                }
                const getWindow = () => windowObject;
                exports.getWindow = getWindow;
                const setWindow = (newWindowObject, hasWindow) => {
                    if (void 0 === hasWindow) {
                        hasWindowValue = "undefined" !== typeof window && window === newWindowObject
                    } else {
                        hasWindowValue = hasWindow
                    }
                    windowObject = newWindowObject
                };
                exports.setWindow = setWindow;
                const hasProperty = prop => hasWindow() && prop in windowObject;
                exports.hasProperty = hasProperty;
                const defaultScreenFactorFunc = width => {
                    if (width < 768) {
                        return "xs"
                    }
                    if (width < 992) {
                        return "sm"
                    }
                    if (width < 1200) {
                        return "md"
                    }
                    return "lg"
                };
                exports.defaultScreenFactorFunc = defaultScreenFactorFunc;
                const getCurrentScreenFactor = screenFactorCallback => {
                    const screenFactorFunc = screenFactorCallback || defaultScreenFactorFunc;
                    const windowWidth = _dom_adapter.default.getDocumentElement().clientWidth;
                    return screenFactorFunc(windowWidth)
                };
                exports.getCurrentScreenFactor = getCurrentScreenFactor;
                const getNavigator = () => {
                    var _windowObject;
                    return hasWindow() ? null === (_windowObject = windowObject) || void 0 === _windowObject ? void 0 : _windowObject.navigator : {
                        userAgent: ""
                    }
                };
                exports.getNavigator = getNavigator;
                exports.default = {
                    defaultScreenFactorFunc: defaultScreenFactorFunc,
                    getCurrentScreenFactor: getCurrentScreenFactor,
                    getNavigator: getNavigator,
                    getWindow: getWindow,
                    hasProperty: hasProperty,
                    hasWindow: hasWindow,
                    setWindow: setWindow
                }
            },
        65020:
            /*!*********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/widget/component.js ***!
              \*********************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.Component = void 0;
                var _action = _interopRequireDefault(__webpack_require__( /*! ../../../core/action */ 88412));
                var _class = _interopRequireDefault(__webpack_require__( /*! ../../../core/class */ 55620));
                var _config3 = _interopRequireDefault(__webpack_require__( /*! ../../../core/config */ 66636));
                var _errors = _interopRequireDefault(__webpack_require__( /*! ../../../core/errors */ 87129));
                var _events_strategy = __webpack_require__( /*! ../../../core/events_strategy */ 2607);
                var _index = __webpack_require__( /*! ../../../core/options/index */ 74453);
                var _utils = __webpack_require__( /*! ../../../core/options/utils */ 53904);
                var _postponed_operations = __webpack_require__( /*! ../../../core/postponed_operations */ 21971);
                var _callbacks = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/callbacks */ 84718));
                var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781);
                var _data = __webpack_require__( /*! ../../../core/utils/data */ 31e3);
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576);
                var _public_component = __webpack_require__( /*! ../../../core/utils/public_component */ 85521);
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528);

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const getEventName = actionName => actionName.charAt(2).toLowerCase() + actionName.substr(3);
                class Component extends(_class.default.inherit({})) {
                    _setDeprecatedOptions() {
                        this._deprecatedOptions = {}
                    }
                    _getDeprecatedOptions() {
                        return this._deprecatedOptions
                    }
                    _getDefaultOptions() {
                        return {
                            onInitialized: null,
                            onOptionChanged: null,
                            onDisposing: null,
                            defaultOptionsRules: null
                        }
                    }
                    _defaultOptionsRules() {
                        return []
                    }
                    _setOptionsByDevice(rules) {
                        this._options.applyRules(rules)
                    }
                    _convertRulesToOptions(rules) {
                        return (0, _utils.convertRulesToOptions)(rules)
                    }
                    _isInitialOptionValue(name) {
                        return this._options.isInitial(name)
                    }
                    _setOptionsByReference() {
                        this._optionsByReference = {}
                    }
                    _getOptionsByReference() {
                        return this._optionsByReference
                    }
                    ctor() {
                        let options = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
                        const {
                            _optionChangedCallbacks: _optionChangedCallbacks,
                            _disposingCallbacks: _disposingCallbacks
                        } = options;
                        this.NAME = (0, _public_component.name)(this.constructor);
                        this._eventsStrategy = _events_strategy.EventsStrategy.create(this, options.eventsStrategy);
                        this._updateLockCount = 0;
                        this._optionChangedCallbacks = _optionChangedCallbacks || (0, _callbacks.default)();
                        this._disposingCallbacks = _disposingCallbacks || (0, _callbacks.default)();
                        this.postponedOperations = new _postponed_operations.PostponedOperations;
                        this._createOptions(options)
                    }
                    _createOptions(options) {
                        this.beginUpdate();
                        try {
                            this._setOptionsByReference();
                            this._setDeprecatedOptions();
                            this._options = new _index.Options(this._getDefaultOptions(), this._getDefaultOptions(), this._getOptionsByReference(), this._getDeprecatedOptions());
                            this._options.onChanging(((name, previousValue, value) => this._initialized && this._optionChanging(name, previousValue, value)));
                            this._options.onDeprecated(((option, info) => this._logDeprecatedOptionWarning(option, info)));
                            this._options.onChanged(((name, value, previousValue) => this._notifyOptionChanged(name, value, previousValue)));
                            this._options.onStartChange((() => this.beginUpdate()));
                            this._options.onEndChange((() => this.endUpdate()));
                            this._options.addRules(this._defaultOptionsRules());
                            this._options.validateOptions((o => this._validateOptions(o)));
                            if (options && options.onInitializing) {
                                options.onInitializing.apply(this, [options])
                            }
                            this._setOptionsByDevice(options.defaultOptionsRules);
                            this._initOptions(options)
                        } finally {
                            this.endUpdate()
                        }
                    }
                    _initOptions(options) {
                        this.option(options)
                    }
                    _init() {
                        this._createOptionChangedAction();
                        this.on("disposing", (args => {
                            this._disposingCallbacks.fireWith(this, [args])
                        }))
                    }
                    _logDeprecatedOptionWarning(option, info) {
                        const message = info.message || `Use the '${info.alias}' option instead`;
                        _errors.default.log("W0001", this.NAME, option, info.since, message)
                    }
                    _logDeprecatedComponentWarning(since, alias) {
                        _errors.default.log("W0000", this.NAME, since, `Use the '${alias}' widget instead`)
                    }
                    _createOptionChangedAction() {
                        this._optionChangedAction = this._createActionByOption("onOptionChanged", {
                            excludeValidators: ["disabled", "readOnly"]
                        })
                    }
                    _createDisposingAction() {
                        this._disposingAction = this._createActionByOption("onDisposing", {
                            excludeValidators: ["disabled", "readOnly"]
                        })
                    }
                    _optionChanged(args) {
                        const {
                            name: name
                        } = args;
                        switch (name) {
                            case "onDisposing":
                            case "onInitialized":
                            case "defaultOptionsRules":
                            default:
                                break;
                            case "onOptionChanged":
                                this._createOptionChangedAction()
                        }
                    }
                    _dispose() {
                        var _this$_disposingActio;
                        this._optionChangedCallbacks.empty();
                        this._createDisposingAction();
                        null === (_this$_disposingActio = this._disposingAction) || void 0 === _this$_disposingActio || _this$_disposingActio.call(this);
                        this._eventsStrategy.dispose();
                        this._options.dispose();
                        this._disposed = true
                    }
                    _lockUpdate() {
                        this._updateLockCount++
                    }
                    _unlockUpdate() {
                        this._updateLockCount = Math.max(this._updateLockCount - 1, 0)
                    }
                    _isUpdateAllowed() {
                        return 0 === this._updateLockCount
                    }
                    _isInitializingRequired() {
                        return !this._initializing && !this._initialized
                    }
                    isInitialized() {
                        return this._initialized
                    }
                    _commitUpdate() {
                        this.postponedOperations.callPostponedOperations();
                        this._isInitializingRequired() && this._initializeComponent()
                    }
                    _initializeComponent() {
                        this._initializing = true;
                        try {
                            this._init()
                        } finally {
                            this._initializing = false;
                            this._lockUpdate();
                            this._createActionByOption("onInitialized", {
                                excludeValidators: ["disabled", "readOnly"]
                            })();
                            this._unlockUpdate();
                            this._initialized = true
                        }
                    }
                    instance() {
                        return this
                    }
                    beginUpdate() {
                        this._lockUpdate()
                    }
                    endUpdate() {
                        this._unlockUpdate();
                        this._isUpdateAllowed() && this._commitUpdate()
                    }
                    _optionChanging() {}
                    _notifyOptionChanged(option, value, previousValue) {
                        if (this._initialized) {
                            const optionNames = [option].concat(this._options.getAliasesByName(option));
                            for (let i = 0; i < optionNames.length; i++) {
                                const name = optionNames[i];
                                const args = {
                                    name: (0, _data.getPathParts)(name)[0],
                                    fullName: name,
                                    value: value,
                                    previousValue: previousValue
                                };
                                if (!(optionName = name, 0 === optionName.indexOf("_", 0))) {
                                    var _this$_optionChangedA;
                                    this._optionChangedCallbacks.fireWith(this, [(0, _extend.extend)(this._defaultActionArgs(), args)]);
                                    null === (_this$_optionChangedA = this._optionChangedAction) || void 0 === _this$_optionChangedA || _this$_optionChangedA.call(this, (0, _extend.extend)({}, args))
                                }
                                if (!this._disposed && this._cancelOptionChange !== name) {
                                    this._optionChanged(args)
                                }
                            }
                        }
                        var optionName
                    }
                    initialOption(name) {
                        return this._options.initial(name)
                    }
                    _defaultActionConfig() {
                        return {
                            context: this,
                            component: this
                        }
                    }
                    _defaultActionArgs() {
                        return {
                            component: this
                        }
                    }
                    _createAction(actionSource, config) {
                        let action;
                        return e => {
                            if (!(0, _type.isDefined)(e)) {
                                e = {}
                            }
                            if (!(0, _type.isPlainObject)(e)) {
                                e = {
                                    actionValue: e
                                }
                            }
                            action = action || new _action.default(actionSource, (0, _extend.extend)({}, config, this._defaultActionConfig()));
                            return action.execute.call(action, (0, _extend.extend)(e, this._defaultActionArgs()))
                        }
                    }
                    _createActionByOption(optionName, config) {
                        var _this = this;
                        let action;
                        let eventName;
                        let actionFunc;
                        config = (0, _extend.extend)({}, config);
                        const result = function() {
                            var _config, _config2;
                            if (!eventName) {
                                config = config || {};
                                if ("string" !== typeof optionName) {
                                    throw _errors.default.Error("E0008")
                                }
                                if (optionName.startsWith("on")) {
                                    eventName = getEventName(optionName)
                                }
                                actionFunc = _this.option(optionName)
                            }
                            if (!action && !actionFunc && !(null !== (_config = config) && void 0 !== _config && _config.beforeExecute) && !(null !== (_config2 = config) && void 0 !== _config2 && _config2.afterExecute) && !_this._eventsStrategy.hasEvent(eventName)) {
                                return
                            }
                            if (!action) {
                                const {
                                    beforeExecute: beforeExecute
                                } = config;
                                config.beforeExecute = function() {
                                    for (var _len2 = arguments.length, props = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
                                        props[_key2] = arguments[_key2]
                                    }
                                    beforeExecute && beforeExecute.apply(_this, props);
                                    _this._eventsStrategy.fireEvent(eventName, props[0].args)
                                };
                                action = _this._createAction(actionFunc, config)
                            }
                            for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
                                args[_key] = arguments[_key]
                            }
                            if ((0, _config3.default)().wrapActionsBeforeExecute) {
                                const beforeActionExecute = _this.option("beforeActionExecute") || _common.noop;
                                const wrappedAction = beforeActionExecute(_this, action, config) || action;
                                return wrappedAction.apply(_this, args)
                            }
                            return action.apply(_this, args)
                        };
                        if ((0, _config3.default)().wrapActionsBeforeExecute) {
                            return result
                        }
                        const onActionCreated = this.option("onActionCreated") || _common.noop;
                        return onActionCreated(this, result, config) || result
                    }
                    on(eventName, eventHandler) {
                        this._eventsStrategy.on(eventName, eventHandler);
                        return this
                    }
                    off(eventName, eventHandler) {
                        this._eventsStrategy.off(eventName, eventHandler);
                        return this
                    }
                    hasActionSubscription(actionName) {
                        return !!this._options.silent(actionName) || this._eventsStrategy.hasEvent(getEventName(actionName))
                    }
                    isOptionDeprecated(name) {
                        return this._options.isDeprecated(name)
                    }
                    _setOptionWithoutOptionChange(name, value) {
                        this._cancelOptionChange = name;
                        this.option(name, value);
                        this._cancelOptionChange = false
                    }
                    _getOptionValue(name, context) {
                        const value = this.option(name);
                        if ((0, _type.isFunction)(value)) {
                            return value.bind(context)()
                        }
                        return value
                    }
                    option() {
                        return this._options.option(...arguments)
                    }
                    resetOption(name) {
                        this.beginUpdate();
                        this._options.reset(name);
                        this.endUpdate()
                    }
                    _validateOptions(options) {
                        return options
                    }
                }
                exports.Component = Component
            },
        22331:
            /*!*************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/widget/dom_component.js ***!
              \*************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _short = __webpack_require__( /*! ../../../common/core/events/short */ 42222);
                var _config = _interopRequireDefault(__webpack_require__( /*! ../../../core/config */ 66636));
                var _element = __webpack_require__( /*! ../../../core/element */ 61404);
                var _element_data = __webpack_require__( /*! ../../../core/element_data */ 74663);
                var _errors = _interopRequireDefault(__webpack_require__( /*! ../../../core/errors */ 87129));
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553));
                var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781);
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576);
                var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274);
                var _public_component = __webpack_require__( /*! ../../../core/utils/public_component */ 85521);
                var _resize_callbacks = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/resize_callbacks */ 63283));
                var _shadow_dom = __webpack_require__( /*! ../../../core/utils/shadow_dom */ 93631);
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528);
                var _window = __webpack_require__( /*! ../../../core/utils/window */ 3104);
                var _license_validation = function(e, r) {
                    if (!r && e && e.__esModule) {
                        return e
                    }
                    if (null === e || "object" != typeof e && "function" != typeof e) {
                        return {
                            default: e
                        }
                    }
                    var t = _getRequireWildcardCache(r);
                    if (t && t.has(e)) {
                        return t.get(e)
                    }
                    var n = {
                            __proto__: null
                        },
                        a = Object.defineProperty && Object.getOwnPropertyDescriptor;
                    for (var u in e) {
                        if ("default" !== u && {}.hasOwnProperty.call(e, u)) {
                            var i = a ? Object.getOwnPropertyDescriptor(e, u) : null;
                            i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]
                        }
                    }
                    return n.default = e, t && t.set(e, n), n
                }(__webpack_require__( /*! ../../core/license/license_validation */ 93391));
                var _m_template_manager = _interopRequireDefault(__webpack_require__( /*! ../../core/m_template_manager */ 66298));
                var _m_common = __webpack_require__( /*! ../../core/utils/m_common */ 39315);
                var _component = __webpack_require__( /*! ./component */ 65020);

                function _getRequireWildcardCache(e) {
                    if ("function" != typeof WeakMap) {
                        return null
                    }
                    var r = new WeakMap,
                        t = new WeakMap;
                    return (_getRequireWildcardCache = function(e) {
                        return e ? t : r
                    })(e)
                }

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                class DOMComponent extends _component.Component {
                    static getInstance(element) {
                        return (0, _public_component.getInstanceByElement)((0, _renderer.default)(element), this)
                    }
                    static defaultOptions(rule) {
                        this._classCustomRules = Object.hasOwnProperty.bind(this)("_classCustomRules") && this._classCustomRules ? this._classCustomRules : [];
                        this._classCustomRules.push(rule)
                    }
                    _getDefaultOptions() {
                        return (0, _extend.extend)(super._getDefaultOptions(), {
                            width: void 0,
                            height: void 0,
                            rtlEnabled: (0, _config.default)().rtlEnabled,
                            elementAttr: {},
                            disabled: false,
                            integrationOptions: {}
                        }, this._useTemplates() ? _m_template_manager.default.TemplateManager.createDefaultOptions() : {})
                    }
                    ctor(element, options) {
                        this._customClass = null;
                        this._createElement(element);
                        (0, _public_component.attachInstanceToElement)(this._$element, this, this._dispose);
                        super.ctor(options);
                        const validationAlreadyPerformed = (0, _license_validation.peekValidationPerformed)();
                        _license_validation.default.validateLicense((0, _config.default)().licenseKey);
                        if (!validationAlreadyPerformed && (0, _license_validation.peekValidationPerformed)()) {
                            (0, _config.default)({
                                licenseKey: ""
                            })
                        }
                        _m_common.uiLayerInitialized.resolve()
                    }
                    _createElement(element) {
                        this._$element = (0, _renderer.default)(element)
                    }
                    _getSynchronizableOptionsForCreateComponent() {
                        return ["rtlEnabled", "disabled", "templatesRenderAsynchronously"]
                    }
                    _checkFunctionValueDeprecation(optionNames) {
                        if (!this.option("_ignoreFunctionValueDeprecation")) {
                            optionNames.forEach((optionName => {
                                if ((0, _type.isFunction)(this.option(optionName))) {
                                    _errors.default.log("W0017", optionName)
                                }
                            }))
                        }
                    }
                    _visibilityChanged(value) {}
                    _dimensionChanged() {}
                    _init() {
                        super._init();
                        this._checkFunctionValueDeprecation(["width", "height", "maxHeight", "maxWidth", "minHeight", "minWidth", "popupHeight", "popupWidth"]);
                        this._attachWindowResizeCallback();
                        this._initTemplateManager()
                    }
                    _setOptionsByDevice(instanceCustomRules) {
                        const ctor = this.constructor;
                        const hasOwnCustomRules = Object.prototype.hasOwnProperty.call(ctor, "_classCustomRules");
                        const hasOwnDefaultOptions = Object.prototype.hasOwnProperty.call(ctor, "defaultOptions");
                        const ownClassCustomRules = hasOwnCustomRules || hasOwnDefaultOptions ? ctor._classCustomRules : [];
                        super._setOptionsByDevice([].concat(ownClassCustomRules || [], instanceCustomRules || []))
                    }
                    _isInitialOptionValue(name) {
                        const isCustomOption = this.constructor._classCustomRules && Object.prototype.hasOwnProperty.call(this._convertRulesToOptions(this.constructor._classCustomRules), name);
                        return !isCustomOption && super._isInitialOptionValue(name)
                    }
                    _attachWindowResizeCallback() {
                        if (this._isDimensionChangeSupported()) {
                            const windowResizeCallBack = this._windowResizeCallBack = this._dimensionChanged.bind(this);
                            _resize_callbacks.default.add(windowResizeCallBack)
                        }
                    }
                    _isDimensionChangeSupported() {
                        return this._dimensionChanged !== DOMComponent.prototype._dimensionChanged
                    }
                    _renderComponent() {
                        (0, _shadow_dom.addShadowDomStyles)(this.$element());
                        this._initMarkup();
                        (0, _window.hasWindow)() && this._render()
                    }
                    _initMarkup() {
                        const {
                            rtlEnabled: rtlEnabled
                        } = this.option() || {};
                        this._renderElementAttributes();
                        this._toggleRTLDirection(rtlEnabled);
                        this._renderVisibilityChange();
                        this._renderDimensions()
                    }
                    _render() {
                        this._attachVisibilityChangeHandlers()
                    }
                    _renderElementAttributes() {
                        const {
                            elementAttr: elementAttr
                        } = this.option() || {};
                        const attributes = (0, _extend.extend)({}, elementAttr);
                        const classNames = attributes.class;
                        delete attributes.class;
                        this.$element().attr(attributes).removeClass(this._customClass).addClass(classNames);
                        this._customClass = classNames
                    }
                    _renderVisibilityChange() {
                        if (this._isDimensionChangeSupported()) {
                            this._attachDimensionChangeHandlers()
                        }
                        if (this._isVisibilityChangeSupported()) {
                            const $element = this.$element();
                            $element.addClass("dx-visibility-change-handler")
                        }
                    }
                    _renderDimensions() {
                        const $element = this.$element();
                        const element = $element.get(0);
                        const width = this._getOptionValue("width", element);
                        const height = this._getOptionValue("height", element);
                        if (this._isCssUpdateRequired(element, height, width)) {
                            $element.css({
                                width: null === width ? "" : width,
                                height: null === height ? "" : height
                            })
                        }
                    }
                    _isCssUpdateRequired(element, height, width) {
                        return !!((0, _type.isDefined)(width) || (0, _type.isDefined)(height) || element.style.width || element.style.height)
                    }
                    _attachDimensionChangeHandlers() {
                        const $el = this.$element();
                        const namespace = `${this.NAME}VisibilityChange`;
                        _short.resize.off($el, {
                            namespace: namespace
                        });
                        _short.resize.on($el, (() => this._dimensionChanged()), {
                            namespace: namespace
                        })
                    }
                    _attachVisibilityChangeHandlers() {
                        if (this._isVisibilityChangeSupported()) {
                            const $el = this.$element();
                            const namespace = `${this.NAME}VisibilityChange`;
                            this._isHidden = !this._isVisible();
                            _short.visibility.off($el, {
                                namespace: namespace
                            });
                            _short.visibility.on($el, (() => this._checkVisibilityChanged("shown")), (() => this._checkVisibilityChanged("hiding")), {
                                namespace: namespace
                            })
                        }
                    }
                    _isVisible() {
                        const $element = this.$element();
                        return $element.is(":visible")
                    }
                    _checkVisibilityChanged(action) {
                        const isVisible = this._isVisible();
                        if (isVisible) {
                            if ("hiding" === action && !this._isHidden) {
                                this._visibilityChanged(false);
                                this._isHidden = true
                            } else if ("shown" === action && this._isHidden) {
                                this._isHidden = false;
                                this._visibilityChanged(true)
                            }
                        }
                    }
                    _isVisibilityChangeSupported() {
                        return this._visibilityChanged !== DOMComponent.prototype._visibilityChanged && (0, _window.hasWindow)()
                    }
                    _clean() {}
                    _modelByElement(element) {
                        const {
                            modelByElement: modelByElement
                        } = this.option();
                        const $element = this.$element();
                        return modelByElement ? modelByElement($element) : void 0
                    }
                    _invalidate() {
                        if (this._isUpdateAllowed()) {
                            throw _errors.default.Error("E0007")
                        }
                        this._requireRefresh = true
                    }
                    _refresh() {
                        this._clean();
                        this._renderComponent()
                    }
                    _dispose() {
                        this._templateManager && this._templateManager.dispose();
                        super._dispose();
                        this._clean();
                        this._detachWindowResizeCallback()
                    }
                    _detachWindowResizeCallback() {
                        if (this._isDimensionChangeSupported()) {
                            _resize_callbacks.default.remove(this._windowResizeCallBack)
                        }
                    }
                    _toggleRTLDirection(rtl) {
                        const $element = this.$element();
                        $element.toggleClass("dx-rtl", rtl)
                    }
                    _createComponent(element, component, componentConfiguration) {
                        const configuration = componentConfiguration ?? {};
                        const synchronizableOptions = (0, _common.grep)(this._getSynchronizableOptionsForCreateComponent(), (value => !(value in configuration)));
                        const {
                            integrationOptions: integrationOptions
                        } = this.option();
                        let {
                            nestedComponentOptions: nestedComponentOptions
                        } = this.option();
                        nestedComponentOptions = nestedComponentOptions ?? _common.noop;
                        const nestedComponentConfig = (0, _extend.extend)({
                            integrationOptions: integrationOptions
                        }, nestedComponentOptions(this));
                        synchronizableOptions.forEach((optionName => nestedComponentConfig[optionName] = this.option(optionName)));
                        this._extendConfig(configuration, nestedComponentConfig);
                        let instance;
                        if ((0, _type.isString)(component)) {
                            const $element = (0, _renderer.default)(element)[component](configuration);
                            instance = $element[component]("instance")
                        } else if (element) {
                            instance = component.getInstance(element);
                            if (instance) {
                                instance.option(configuration)
                            } else {
                                instance = new component(element, configuration)
                            }
                        }
                        if (instance) {
                            const optionChangedHandler = _ref => {
                                let {
                                    name: name,
                                    value: value
                                } = _ref;
                                if (synchronizableOptions.includes(name)) {
                                    instance.option(name, value)
                                }
                            };
                            this.on("optionChanged", optionChangedHandler);
                            instance.on("disposing", (() => this.off("optionChanged", optionChangedHandler)))
                        }
                        return instance
                    }
                    _extendConfig(configuration, extendConfig) {
                        (0, _iterator.each)(extendConfig, ((key, value) => {
                            !Object.prototype.hasOwnProperty.call(configuration, key) && (configuration[key] = value)
                        }))
                    }
                    _defaultActionConfig() {
                        const $element = this.$element();
                        const context = this._modelByElement($element);
                        return (0, _extend.extend)(super._defaultActionConfig(), {
                            context: context
                        })
                    }
                    _defaultActionArgs() {
                        const $element = this.$element();
                        const model = this._modelByElement($element);
                        const element = this.element();
                        return (0, _extend.extend)(super._defaultActionArgs(), {
                            element: element,
                            model: model
                        })
                    }
                    _optionChanged(args) {
                        const {
                            name: name
                        } = args;
                        switch (name) {
                            case "width":
                            case "height":
                                this._renderDimensions();
                                break;
                            case "rtlEnabled":
                                this._invalidate();
                                break;
                            case "elementAttr":
                                this._renderElementAttributes();
                                break;
                            case "disabled":
                            case "integrationOptions":
                                break;
                            default:
                                super._optionChanged(args)
                        }
                    }
                    _removeAttributes(element) {
                        const attrs = element.attributes;
                        for (let i = attrs.length - 1; i >= 0; i--) {
                            const attr = attrs[i];
                            if (attr) {
                                const {
                                    name: name
                                } = attr;
                                if (!name.indexOf("aria-") || -1 !== name.indexOf("dx-") || "role" === name || "style" === name || "tabindex" === name) {
                                    element.removeAttribute(name)
                                }
                            }
                        }
                    }
                    _removeClasses(element) {
                        element.className = element.className.split(" ").filter((cssClass => 0 !== cssClass.lastIndexOf("dx-", 0))).join(" ")
                    }
                    _updateDOMComponent(renderRequired) {
                        if (renderRequired) {
                            this._renderComponent()
                        } else if (this._requireRefresh) {
                            this._requireRefresh = false;
                            this._refresh()
                        }
                    }
                    endUpdate() {
                        const renderRequired = this._isInitializingRequired();
                        super.endUpdate();
                        this._isUpdateAllowed() && this._updateDOMComponent(renderRequired)
                    }
                    $element() {
                        return this._$element
                    }
                    element() {
                        const $element = this.$element();
                        return (0, _element.getPublicElement)($element)
                    }
                    dispose() {
                        const element = this.$element().get(0);
                        (0, _element_data.cleanDataRecursive)(element, true);
                        element.textContent = "";
                        this._removeAttributes(element);
                        this._removeClasses(element)
                    }
                    resetOption(optionName) {
                        super.resetOption(optionName);
                        if ("width" === optionName || "height" === optionName) {
                            const initialOption = this.initialOption(optionName);
                            !(0, _type.isDefined)(initialOption) && this.$element().css(optionName, "")
                        }
                    }
                    _getAnonymousTemplateName() {
                        return
                    }
                    _initTemplateManager() {
                        if (this._templateManager || !this._useTemplates()) {
                            return
                        }
                        const {
                            integrationOptions: integrationOptions = {}
                        } = this.option();
                        const {
                            createTemplate: createTemplate
                        } = integrationOptions;
                        this._templateManager = new _m_template_manager.default.TemplateManager(createTemplate, this._getAnonymousTemplateName());
                        this._initTemplates();
                        return
                    }
                    _initTemplates() {
                        const {
                            templates: templates,
                            anonymousTemplateMeta: anonymousTemplateMeta
                        } = this._templateManager.extractTemplates(this.$element());
                        const anonymousTemplate = this.option(`integrationOptions.templates.${anonymousTemplateMeta.name}`);
                        templates.forEach((_ref2 => {
                            let {
                                name: name,
                                template: template
                            } = _ref2;
                            this._options.silent(`integrationOptions.templates.${name}`, template)
                        }));
                        if (anonymousTemplateMeta.name && !anonymousTemplate) {
                            this._options.silent(`integrationOptions.templates.${anonymousTemplateMeta.name}`, anonymousTemplateMeta.template);
                            this._options.silent("_hasAnonymousTemplateContent", true)
                        }
                    }
                    _getTemplateByOption(optionName) {
                        return this._getTemplate(this.option(optionName))
                    }
                    _getTemplate(templateSource) {
                        const templates = this.option("integrationOptions.templates");
                        const isAsyncTemplate = this.option("templatesRenderAsynchronously");
                        const skipTemplates = this.option("integrationOptions.skipTemplates");
                        return this._templateManager.getTemplate(templateSource, templates, {
                            isAsyncTemplate: isAsyncTemplate,
                            skipTemplates: skipTemplates
                        }, this)
                    }
                    _saveTemplate(name, template) {
                        this._setOptionWithoutOptionChange(`integrationOptions.templates.${name}`, this._templateManager._createTemplate(template))
                    }
                    _useTemplates() {
                        return true
                    }
                }
                exports.default = DOMComponent
            },
        89275:
            /*!******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/widget/widget.js ***!
              \******************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = exports.WIDGET_CLASS = exports.HOVER_STATE_CLASS = exports.FOCUSED_STATE_CLASS = void 0;
                __webpack_require__( /*! ../../../common/core/events/click */ 64044);
                __webpack_require__( /*! ../../../common/core/events/core/emitter.feedback */ 69331);
                __webpack_require__( /*! ../../../common/core/events/hover */ 638);
                var _short = __webpack_require__( /*! ../../../common/core/events/short */ 42222);
                var _action = _interopRequireDefault(__webpack_require__( /*! ../../../core/action */ 88412));
                var _devices = _interopRequireDefault(__webpack_require__( /*! ../../../core/devices */ 65951));
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553));
                var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781);
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576);
                var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274);
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528);
                var _version = __webpack_require__( /*! ../../../core/utils/version */ 20142);
                var _selectors = __webpack_require__( /*! ../../../ui/widget/selectors */ 35944);
                var _dom_component = _interopRequireDefault(__webpack_require__( /*! ./dom_component */ 22331));

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const WIDGET_CLASS = exports.WIDGET_CLASS = "dx-widget";
                const FOCUSED_STATE_CLASS = exports.FOCUSED_STATE_CLASS = "dx-state-focused";
                const HOVER_STATE_CLASS = exports.HOVER_STATE_CLASS = "dx-state-hover";

                function setAttribute(name, value, target) {
                    name = "role" === name || "id" === name ? name : `aria-${name}`;
                    value = (0, _type.isDefined)(value) ? value.toString() : null;
                    target.attr(name, value)
                }
                class Widget extends _dom_component.default {
                    constructor() {
                        super(...arguments);
                        this._feedbackHideTimeout = 400;
                        this._feedbackShowTimeout = 30
                    }
                    static getOptionsFromContainer(_ref) {
                        let {
                            name: name,
                            fullName: fullName,
                            value: value
                        } = _ref;
                        let options = {};
                        if (name === fullName) {
                            options = value
                        } else {
                            const option = fullName.split(".").pop();
                            options[option] = value
                        }
                        return options
                    }
                    _supportedKeys() {
                        return {}
                    }
                    _getDefaultOptions() {
                        return (0, _extend.extend)(super._getDefaultOptions(), {
                            hoveredElement: null,
                            isActive: false,
                            disabled: false,
                            visible: true,
                            hint: void 0,
                            activeStateEnabled: false,
                            onContentReady: null,
                            hoverStateEnabled: false,
                            focusStateEnabled: false,
                            tabIndex: 0,
                            accessKey: void 0,
                            onFocusIn: null,
                            onFocusOut: null,
                            onKeyboardHandled: null,
                            ignoreParentReadOnly: false,
                            useResizeObserver: true
                        })
                    }
                    _defaultOptionsRules() {
                        return super._defaultOptionsRules().concat([{
                            device() {
                                const device = _devices.default.real();
                                const {
                                    platform: platform
                                } = device;
                                const {
                                    version: version
                                } = device;
                                return "ios" === platform && (0, _version.compare)(version, "13.3") <= 0
                            },
                            options: {
                                useResizeObserver: false
                            }
                        }])
                    }
                    _init() {
                        super._init();
                        this._initContentReadyAction()
                    }
                    _innerWidgetOptionChanged(innerWidget, args) {
                        const options = Widget.getOptionsFromContainer(args);
                        innerWidget && innerWidget.option(options);
                        this._options.cache(args.name, options)
                    }
                    _bindInnerWidgetOptions(innerWidget, optionsContainer) {
                        const syncOptions = () => this._options.silent(optionsContainer, (0, _extend.extend)({}, innerWidget.option()));
                        syncOptions();
                        innerWidget.on("optionChanged", syncOptions)
                    }
                    _getAriaTarget() {
                        return this._focusTarget()
                    }
                    _initContentReadyAction() {
                        this._contentReadyAction = this._createActionByOption("onContentReady", {
                            excludeValidators: ["disabled", "readOnly"]
                        })
                    }
                    _initMarkup() {
                        const {
                            disabled: disabled,
                            visible: visible
                        } = this.option();
                        this.$element().addClass(WIDGET_CLASS);
                        this._toggleDisabledState(disabled);
                        this._toggleVisibility(visible);
                        this._renderHint();
                        this._isFocusable() && this._renderFocusTarget();
                        super._initMarkup()
                    }
                    _render() {
                        super._render();
                        this._renderContent();
                        this._renderFocusState();
                        this._attachFeedbackEvents();
                        this._attachHoverEvents();
                        this._toggleIndependentState()
                    }
                    _renderHint() {
                        const {
                            hint: hint
                        } = this.option();
                        this.$element().attr("title", hint || null)
                    }
                    _renderContent() {
                        (0, _common.deferRender)((() => !this._disposed ? this._renderContentImpl() : void 0)).done((() => !this._disposed ? this._fireContentReadyAction() : void 0))
                    }
                    _renderContentImpl() {}
                    _fireContentReadyAction() {
                        return (0, _common.deferRender)((() => {
                            var _this$_contentReadyAc;
                            return null === (_this$_contentReadyAc = this._contentReadyAction) || void 0 === _this$_contentReadyAc ? void 0 : _this$_contentReadyAc.call(this)
                        }))
                    }
                    _dispose() {
                        this._contentReadyAction = null;
                        this._detachKeyboardEvents();
                        super._dispose()
                    }
                    _resetActiveState() {
                        this._toggleActiveState(this._eventBindingTarget(), false)
                    }
                    _clean() {
                        this._cleanFocusState();
                        this._resetActiveState();
                        super._clean();
                        this.$element().empty()
                    }
                    _toggleVisibility(visible) {
                        this.$element().toggleClass("dx-state-invisible", !visible)
                    }
                    _renderFocusState() {
                        this._attachKeyboardEvents();
                        if (this._isFocusable()) {
                            this._renderFocusTarget();
                            this._attachFocusEvents();
                            this._renderAccessKey()
                        }
                    }
                    _renderAccessKey() {
                        const $el = this._focusTarget();
                        const {
                            accessKey: accessKey
                        } = this.option();
                        $el.attr("accesskey", accessKey)
                    }
                    _isFocusable() {
                        const {
                            focusStateEnabled: focusStateEnabled,
                            disabled: disabled
                        } = this.option();
                        return focusStateEnabled && !disabled
                    }
                    _eventBindingTarget() {
                        return this.$element()
                    }
                    _focusTarget() {
                        return this._getActiveElement()
                    }
                    _isFocusTarget(element) {
                        const focusTargets = (0, _renderer.default)(this._focusTarget()).toArray();
                        return focusTargets.includes(element)
                    }
                    _findActiveTarget($element) {
                        return $element.find(this._activeStateUnit).not(".dx-state-disabled")
                    }
                    _getActiveElement() {
                        const activeElement = this._eventBindingTarget();
                        if (this._activeStateUnit) {
                            return this._findActiveTarget(activeElement)
                        }
                        return activeElement
                    }
                    _renderFocusTarget() {
                        const {
                            tabIndex: tabIndex
                        } = this.option();
                        this._focusTarget().attr("tabIndex", tabIndex)
                    }
                    _keyboardEventBindingTarget() {
                        return this._eventBindingTarget()
                    }
                    _refreshFocusEvent() {
                        this._detachFocusEvents();
                        this._attachFocusEvents()
                    }
                    _focusEventTarget() {
                        return this._focusTarget()
                    }
                    _focusInHandler(event) {
                        if (!event.isDefaultPrevented()) {
                            this._createActionByOption("onFocusIn", {
                                beforeExecute: () => this._updateFocusState(event, true),
                                excludeValidators: ["readOnly"]
                            })({
                                event: event
                            })
                        }
                    }
                    _focusOutHandler(event) {
                        if (!event.isDefaultPrevented()) {
                            this._createActionByOption("onFocusOut", {
                                beforeExecute: () => this._updateFocusState(event, false),
                                excludeValidators: ["readOnly", "disabled"]
                            })({
                                event: event
                            })
                        }
                    }
                    _updateFocusState(_ref2, isFocused) {
                        let {
                            target: target
                        } = _ref2;
                        if (this._isFocusTarget(target)) {
                            this._toggleFocusClass(isFocused, (0, _renderer.default)(target))
                        }
                    }
                    _toggleFocusClass(isFocused, $element) {
                        const $focusTarget = $element && $element.length ? $element : this._focusTarget();
                        $focusTarget.toggleClass(FOCUSED_STATE_CLASS, isFocused)
                    }
                    _hasFocusClass(element) {
                        const $focusTarget = (0, _renderer.default)(element ?? this._focusTarget());
                        return $focusTarget.hasClass(FOCUSED_STATE_CLASS)
                    }
                    _isFocused() {
                        return this._hasFocusClass()
                    }
                    _getKeyboardListeners() {
                        return []
                    }
                    _attachKeyboardEvents() {
                        this._detachKeyboardEvents();
                        const {
                            focusStateEnabled: focusStateEnabled,
                            onKeyboardHandled: onKeyboardHandled
                        } = this.option();
                        const hasChildListeners = this._getKeyboardListeners().length;
                        const hasKeyboardEventHandler = !!onKeyboardHandled;
                        const shouldAttach = focusStateEnabled || hasChildListeners || hasKeyboardEventHandler;
                        if (shouldAttach) {
                            this._keyboardListenerId = _short.keyboard.on(this._keyboardEventBindingTarget(), this._focusTarget(), (opts => this._keyboardHandler(opts)))
                        }
                    }
                    _keyboardHandler(options, onlyChildProcessing) {
                        if (!onlyChildProcessing) {
                            const {
                                originalEvent: originalEvent,
                                keyName: keyName,
                                which: which
                            } = options;
                            const keys = this._supportedKeys(originalEvent);
                            const func = keys[keyName] || keys[which];
                            if (void 0 !== func) {
                                const handler = func.bind(this);
                                const result = handler(originalEvent, options);
                                if (!result) {
                                    return false
                                }
                            }
                        }
                        const keyboardListeners = this._getKeyboardListeners();
                        const {
                            onKeyboardHandled: onKeyboardHandled
                        } = this.option();
                        keyboardListeners.forEach((listener => listener && listener._keyboardHandler(options)));
                        onKeyboardHandled && onKeyboardHandled(options);
                        return true
                    }
                    _refreshFocusState() {
                        this._cleanFocusState();
                        this._renderFocusState()
                    }
                    _cleanFocusState() {
                        const $element = this._focusTarget();
                        $element.removeAttr("tabIndex");
                        this._toggleFocusClass(false);
                        this._detachFocusEvents();
                        this._detachKeyboardEvents()
                    }
                    _detachKeyboardEvents() {
                        _short.keyboard.off(this._keyboardListenerId);
                        this._keyboardListenerId = null
                    }
                    _attachHoverEvents() {
                        const {
                            hoverStateEnabled: hoverStateEnabled
                        } = this.option();
                        const selector = this._activeStateUnit;
                        const $el = this._eventBindingTarget();
                        _short.hover.off($el, {
                            selector: selector,
                            namespace: "UIFeedback"
                        });
                        if (hoverStateEnabled) {
                            _short.hover.on($el, new _action.default((_ref3 => {
                                let {
                                    event: event,
                                    element: element
                                } = _ref3;
                                this._hoverStartHandler(event);
                                this.option("hoveredElement", (0, _renderer.default)(element))
                            }), {
                                excludeValidators: ["readOnly"]
                            }), (event => {
                                this.option("hoveredElement", null);
                                this._hoverEndHandler(event)
                            }), {
                                selector: selector,
                                namespace: "UIFeedback"
                            })
                        }
                    }
                    _attachFeedbackEvents() {
                        const {
                            activeStateEnabled: activeStateEnabled
                        } = this.option();
                        const selector = this._activeStateUnit;
                        const $el = this._eventBindingTarget();
                        _short.active.off($el, {
                            namespace: "UIFeedback",
                            selector: selector
                        });
                        if (activeStateEnabled) {
                            _short.active.on($el, new _action.default((_ref4 => {
                                let {
                                    event: event,
                                    element: element
                                } = _ref4;
                                return this._toggleActiveState((0, _renderer.default)(element), true, event)
                            })), new _action.default((_ref5 => {
                                let {
                                    event: event,
                                    element: element
                                } = _ref5;
                                return this._toggleActiveState((0, _renderer.default)(element), false, event)
                            }), {
                                excludeValidators: ["disabled", "readOnly"]
                            }), {
                                showTimeout: this._feedbackShowTimeout,
                                hideTimeout: this._feedbackHideTimeout,
                                selector: selector,
                                namespace: "UIFeedback"
                            })
                        }
                    }
                    _detachFocusEvents() {
                        const $el = this._focusEventTarget();
                        _short.focus.off($el, {
                            namespace: `${this.NAME}Focus`
                        })
                    }
                    _attachFocusEvents() {
                        const $el = this._focusEventTarget();
                        _short.focus.on($el, (e => this._focusInHandler(e)), (e => this._focusOutHandler(e)), {
                            namespace: `${this.NAME}Focus`,
                            isFocusable: (index, el) => (0, _renderer.default)(el).is(_selectors.focusable)
                        })
                    }
                    _hoverStartHandler(event) {}
                    _hoverEndHandler(event) {}
                    _toggleActiveState($element, value, event) {
                        this.option("isActive", value);
                        $element.toggleClass("dx-state-active", value)
                    }
                    _updatedHover() {
                        const hoveredElement = this._options.silent("hoveredElement");
                        this._hover(hoveredElement, hoveredElement)
                    }
                    _findHoverTarget($el) {
                        return $el && $el.closest(this._activeStateUnit || this._eventBindingTarget())
                    }
                    _hover($el, $previous) {
                        const {
                            hoverStateEnabled: hoverStateEnabled,
                            disabled: disabled,
                            isActive: isActive
                        } = this.option();
                        $previous = this._findHoverTarget($previous);
                        $previous && $previous.toggleClass(HOVER_STATE_CLASS, false);
                        if ($el && hoverStateEnabled && !disabled && !isActive) {
                            const newHoveredElement = this._findHoverTarget($el);
                            newHoveredElement && newHoveredElement.toggleClass(HOVER_STATE_CLASS, true)
                        }
                    }
                    _toggleDisabledState(value) {
                        this.$element().toggleClass("dx-state-disabled", Boolean(value));
                        this.setAria("disabled", value || void 0)
                    }
                    _toggleIndependentState() {
                        const {
                            ignoreParentReadOnly: ignoreParentReadOnly
                        } = this.option();
                        this.$element().toggleClass("dx-state-independent", ignoreParentReadOnly)
                    }
                    _setWidgetOption(widgetName, args) {
                        if (!this[widgetName]) {
                            return
                        }
                        if ((0, _type.isPlainObject)(args[0])) {
                            (0, _iterator.each)(args[0], ((option, value) => this._setWidgetOption(widgetName, [option, value])));
                            return
                        }
                        const optionName = args[0];
                        let value = args[1];
                        if (1 === args.length) {
                            value = this.option(optionName)
                        }
                        const widgetOptionMap = this[`${widgetName}OptionMap`];
                        this[widgetName].option(widgetOptionMap ? widgetOptionMap(optionName) : optionName, value)
                    }
                    _optionChanged(args) {
                        const {
                            name: name,
                            value: value,
                            previousValue: previousValue
                        } = args;
                        switch (name) {
                            case "disabled":
                                this._toggleDisabledState(value);
                                this._updatedHover();
                                this._refreshFocusState();
                                break;
                            case "hint":
                                this._renderHint();
                                break;
                            case "ignoreParentReadOnly":
                                this._toggleIndependentState();
                                break;
                            case "activeStateEnabled":
                                this._attachFeedbackEvents();
                                break;
                            case "hoverStateEnabled":
                                this._attachHoverEvents();
                                this._updatedHover();
                                break;
                            case "tabIndex":
                            case "focusStateEnabled":
                                this._refreshFocusState();
                                break;
                            case "onFocusIn":
                            case "onFocusOut":
                            case "useResizeObserver":
                                break;
                            case "accessKey":
                                this._renderAccessKey();
                                break;
                            case "hoveredElement":
                                this._hover(value, previousValue);
                                break;
                            case "isActive":
                                this._updatedHover();
                                break;
                            case "visible":
                                this._toggleVisibility(value);
                                if (this._isVisibilityChangeSupported()) {
                                    this._checkVisibilityChanged(value ? "shown" : "hiding")
                                }
                                break;
                            case "onKeyboardHandled":
                                this._attachKeyboardEvents();
                                break;
                            case "onContentReady":
                                this._initContentReadyAction();
                                break;
                            default:
                                super._optionChanged(args)
                        }
                    }
                    _isVisible() {
                        const {
                            visible: visible
                        } = this.option();
                        return super._isVisible() && visible
                    }
                    beginUpdate() {
                        this._ready(false);
                        super.beginUpdate()
                    }
                    endUpdate() {
                        super.endUpdate();
                        if (this._initialized) {
                            this._ready(true)
                        }
                    }
                    _ready(value) {
                        if (0 === arguments.length) {
                            return !!this._isReady
                        }
                        this._isReady = !!value;
                        return this._isReady
                    }
                    setAria() {
                        if (!(0, _type.isPlainObject)(arguments.length <= 0 ? void 0 : arguments[0])) {
                            setAttribute(arguments.length <= 0 ? void 0 : arguments[0], arguments.length <= 1 ? void 0 : arguments[1], (arguments.length <= 2 ? void 0 : arguments[2]) || this._getAriaTarget())
                        } else {
                            const target = (arguments.length <= 1 ? void 0 : arguments[1]) || this._getAriaTarget();
                            (0, _iterator.each)(arguments.length <= 0 ? void 0 : arguments[0], ((name, value) => setAttribute(name, value, target)))
                        }
                    }
                    isReady() {
                        return this._ready()
                    }
                    repaint() {
                        this._refresh()
                    }
                    focus() {
                        _short.focus.trigger(this._focusTarget())
                    }
                    registerKeyHandler(key, handler) {
                        const currentKeys = this._supportedKeys();
                        this._supportedKeys = () => (0, _extend.extend)(currentKeys, {
                            [key]: handler
                        })
                    }
                }
                exports.default = Widget
            },
        79562:
            /*!******************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/data/data_source/m_data_source.js ***!
              \******************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.DataSource = void 0;
                var _array_utils = __webpack_require__( /*! ../../../common/data/array_utils */ 43792);
                var _custom_store = __webpack_require__( /*! ../../../common/data/custom_store */ 63326);
                var _operation_manager = _interopRequireDefault(__webpack_require__( /*! ../../../common/data/data_source/operation_manager */ 95853));
                var _utils = __webpack_require__( /*! ../../../common/data/data_source/utils */ 97169);
                var _errors = __webpack_require__( /*! ../../../common/data/errors */ 82812);
                var _utils2 = __webpack_require__( /*! ../../../common/data/utils */ 89358);
                var _class = _interopRequireDefault(__webpack_require__( /*! ../../../core/class */ 55620));
                var _events_strategy = __webpack_require__( /*! ../../../core/events_strategy */ 2607);
                var _deferred = __webpack_require__( /*! ../../../core/utils/deferred */ 87739);
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576);
                var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274);
                var _queue = __webpack_require__( /*! ../../../core/utils/queue */ 65221);
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528);
                var _m_common = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/m_common */ 39315));

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }

                function _extends() {
                    return _extends = Object.assign ? Object.assign.bind() : function(n) {
                        for (var e = 1; e < arguments.length; e++) {
                            var t = arguments[e];
                            for (var r in t) {
                                ({}).hasOwnProperty.call(t, r) && (n[r] = t[r])
                            }
                        }
                        return n
                    }, _extends.apply(null, arguments)
                }
                exports.DataSource = _class.default.inherit({
                    ctor(options) {
                        options = (0, _utils.normalizeDataSourceOptions)(options);
                        this._eventsStrategy = new _events_strategy.EventsStrategy(this, {
                            syncStrategy: true
                        });
                        this._store = options.store;
                        this._changedTime = 0;
                        const needThrottling = 0 !== options.pushAggregationTimeout;
                        if (needThrottling) {
                            const throttlingTimeout = void 0 === options.pushAggregationTimeout ? () => 5 * this._changedTime : options.pushAggregationTimeout;
                            let pushDeferred;
                            let lastPushWaiters;
                            const throttlingPushHandler = (0, _utils2.throttleChanges)((changes => {
                                pushDeferred.resolve();
                                const storePushPending = (0, _deferred.when)(...lastPushWaiters);
                                storePushPending.done((() => this._onPush(changes)));
                                lastPushWaiters = void 0;
                                pushDeferred = void 0
                            }), throttlingTimeout);
                            this._onPushHandler = args => {
                                this._aggregationTimeoutId = throttlingPushHandler(args.changes);
                                if (!pushDeferred) {
                                    pushDeferred = new _deferred.Deferred
                                }
                                lastPushWaiters = args.waitFor;
                                args.waitFor.push(pushDeferred.promise())
                            };
                            this._store.on("beforePushAggregation", this._onPushHandler)
                        } else {
                            this._onPushHandler = changes => this._onPush(changes);
                            this._store.on("push", this._onPushHandler)
                        }
                        this._storeLoadOptions = this._extractLoadOptions(options);
                        this._mapFunc = options.map;
                        this._postProcessFunc = options.postProcess;
                        this._pageIndex = void 0 !== options.pageIndex ? options.pageIndex : 0;
                        this._pageSize = void 0 !== options.pageSize ? options.pageSize : 20;
                        this._loadingCount = 0;
                        this._loadQueue = this._createLoadQueue();
                        this._searchValue = "searchValue" in options ? options.searchValue : null;
                        this._searchOperation = options.searchOperation || "contains";
                        this._searchExpr = options.searchExpr;
                        this._paginate = options.paginate;
                        this._reshapeOnPush = options.reshapeOnPush ?? false;
                        (0, _iterator.each)(["onChanged", "onLoadError", "onLoadingChanged", "onCustomizeLoadResult", "onCustomizeStoreLoadOptions"], ((_, optionName) => {
                            if (optionName in options) {
                                this.on(optionName.substr(2, 1).toLowerCase() + optionName.substr(3), options[optionName])
                            }
                        }));
                        this._operationManager = new _operation_manager.default;
                        this._init()
                    },
                    _init() {
                        this._items = [];
                        this._userData = {};
                        this._totalCount = -1;
                        this._isLoaded = false;
                        if (!(0, _type.isDefined)(this._paginate)) {
                            this._paginate = !this.group()
                        }
                        this._isLastPage = !this._paginate
                    },
                    dispose() {
                        var _this$_delayedLoadTas;
                        this._store.off("beforePushAggregation", this._onPushHandler);
                        this._store.off("push", this._onPushHandler);
                        this._eventsStrategy.dispose();
                        clearTimeout(this._aggregationTimeoutId);
                        null === (_this$_delayedLoadTas = this._delayedLoadTask) || void 0 === _this$_delayedLoadTas || _this$_delayedLoadTas.abort();
                        this._operationManager.cancelAll();
                        delete this._store;
                        delete this._items;
                        delete this._delayedLoadTask;
                        this._disposed = true
                    },
                    _extractLoadOptions(options) {
                        const result = {};
                        let names = ["sort", "filter", "langParams", "select", "group", "requireTotalCount"];
                        const customNames = this._store._customLoadOptions();
                        if (customNames) {
                            names = names.concat(customNames)
                        }(0, _iterator.each)(names, (function() {
                            result[this] = options[this]
                        }));
                        return result
                    },
                    loadOptions() {
                        return this._storeLoadOptions
                    },
                    items() {
                        return this._items
                    },
                    pageIndex(newIndex) {
                        if (!(0, _type.isNumeric)(newIndex)) {
                            return this._pageIndex
                        }
                        this._pageIndex = newIndex;
                        this._isLastPage = !this._paginate
                    },
                    paginate(value) {
                        if (!(0, _type.isBoolean)(value)) {
                            return this._paginate
                        }
                        if (this._paginate !== value) {
                            this._paginate = value;
                            this.pageIndex(0)
                        }
                    },
                    pageSize(value) {
                        if (!(0, _type.isNumeric)(value)) {
                            return this._pageSize
                        }
                        this._pageSize = value
                    },
                    isLastPage() {
                        return this._isLastPage
                    },
                    generateStoreLoadOptionAccessor(optionName) {
                        return args => {
                            const normalizedArgs = (0, _utils.normalizeStoreLoadOptionAccessorArguments)(args);
                            if (void 0 === normalizedArgs) {
                                return this._storeLoadOptions[optionName]
                            }
                            this._storeLoadOptions[optionName] = normalizedArgs
                        }
                    },
                    sort() {
                        for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
                            args[_key] = arguments[_key]
                        }
                        return this.generateStoreLoadOptionAccessor("sort")(args)
                    },
                    filter() {
                        const newFilter = (0, _utils.normalizeStoreLoadOptionAccessorArguments)(arguments);
                        if (void 0 === newFilter) {
                            return this._storeLoadOptions.filter
                        }
                        this._storeLoadOptions.filter = newFilter;
                        this.pageIndex(0)
                    },
                    group() {
                        for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
                            args[_key2] = arguments[_key2]
                        }
                        return this.generateStoreLoadOptionAccessor("group")(args)
                    },
                    select() {
                        for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
                            args[_key3] = arguments[_key3]
                        }
                        return this.generateStoreLoadOptionAccessor("select")(args)
                    },
                    requireTotalCount(value) {
                        if (!(0, _type.isBoolean)(value)) {
                            return this._storeLoadOptions.requireTotalCount
                        }
                        this._storeLoadOptions.requireTotalCount = value
                    },
                    searchValue(value) {
                        if (arguments.length < 1) {
                            return this._searchValue
                        }
                        this._searchValue = value;
                        this.pageIndex(0)
                    },
                    searchOperation(op) {
                        if (!(0, _type.isString)(op)) {
                            return this._searchOperation
                        }
                        this._searchOperation = op;
                        this.pageIndex(0)
                    },
                    searchExpr(expr) {
                        const argc = arguments.length;
                        if (0 === argc) {
                            return this._searchExpr
                        }
                        if (argc > 1) {
                            expr = [].slice.call(arguments)
                        }
                        this._searchExpr = expr;
                        this.pageIndex(0)
                    },
                    store() {
                        return this._store
                    },
                    key() {
                        var _this$_store;
                        return null === (_this$_store = this._store) || void 0 === _this$_store ? void 0 : _this$_store.key()
                    },
                    totalCount() {
                        return this._totalCount
                    },
                    isLoaded() {
                        return this._isLoaded
                    },
                    isLoading() {
                        return this._loadingCount > 0
                    },
                    beginLoading() {
                        this._changeLoadingCount(1)
                    },
                    endLoading() {
                        this._changeLoadingCount(-1)
                    },
                    _createLoadQueue: () => (0, _queue.create)(),
                    _changeLoadingCount(increment) {
                        const oldLoading = this.isLoading();
                        this._loadingCount += increment;
                        const newLoading = this.isLoading();
                        if (oldLoading ^ newLoading) {
                            this._eventsStrategy.fireEvent("loadingChanged", [newLoading])
                        }
                    },
                    _scheduleLoadCallbacks(deferred) {
                        this.beginLoading();
                        deferred.always((() => {
                            this.endLoading()
                        }))
                    },
                    _scheduleFailCallbacks(deferred) {
                        var _this = this;
                        deferred.fail((function() {
                            for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
                                args[_key4] = arguments[_key4]
                            }
                            if (args[0] === _utils.CANCELED_TOKEN) {
                                return
                            }
                            _this._eventsStrategy.fireEvent("loadError", args)
                        }))
                    },
                    _fireChanged(args) {
                        const date = new Date;
                        this._eventsStrategy.fireEvent("changed", args);
                        this._changedTime = new Date - date
                    },
                    _scheduleChangedCallbacks(deferred) {
                        deferred.done((() => this._fireChanged()))
                    },
                    loadSingle(propName, propValue) {
                        const d = new _deferred.Deferred;
                        const key = this.key();
                        const store = this._store;
                        const options = this._createStoreLoadOptions();
                        this._scheduleFailCallbacks(d);
                        if (arguments.length < 2) {
                            propValue = propName;
                            propName = key
                        }
                        delete options.skip;
                        delete options.group;
                        delete options.refresh;
                        delete options.pageIndex;
                        delete options.searchString;
                        (() => {
                            if (propName === key || store instanceof _custom_store.CustomStore && !store._byKeyViaLoad()) {
                                return store.byKey(propValue, options)
                            }
                            options.take = 1;
                            options.filter = options.filter ? [options.filter, [propName, propValue]] : [propName, propValue];
                            return store.load(options)
                        })().fail(d.reject).done((data => {
                            const isEmptyArray = Array.isArray(data) && !data.length;
                            if (!(0, _type.isDefined)(data) || isEmptyArray) {
                                d.reject(_errors.errors.Error("E4009"))
                            } else {
                                if (!Array.isArray(data)) {
                                    data = [data]
                                }
                                d.resolve(this._applyMapFunction(data)[0])
                            }
                        }));
                        return d.promise()
                    },
                    load() {
                        const d = new _deferred.Deferred;
                        const loadTask = () => {
                            if (this._disposed) {
                                return
                            }
                            if (!(0, _utils.isPending)(d)) {
                                return
                            }
                            return this._loadFromStore(loadOperation, d)
                        };
                        this._scheduleLoadCallbacks(d);
                        this._scheduleFailCallbacks(d);
                        this._scheduleChangedCallbacks(d);
                        const loadOperation = this._createLoadOperation(d);
                        this._eventsStrategy.fireEvent("customizeStoreLoadOptions", [loadOperation]);
                        this._loadQueue.add((() => {
                            if ("number" === typeof loadOperation.delay) {
                                this._delayedLoadTask = _m_common.default.executeAsync(loadTask, loadOperation.delay)
                            } else {
                                loadTask()
                            }
                            return d.promise()
                        }));
                        return d.promise({
                            operationId: loadOperation.operationId
                        })
                    },
                    _onPush(changes) {
                        if (this._reshapeOnPush) {
                            this.load()
                        } else {
                            const changingArgs = {
                                changes: changes
                            };
                            this._eventsStrategy.fireEvent("changing", [changingArgs]);
                            const group = this.group();
                            const items = this.items();
                            let groupLevel = 0;
                            let dataSourceChanges = this.paginate() || group ? changes.filter((item => "update" === item.type)) : changes;
                            if (group) {
                                groupLevel = Array.isArray(group) ? group.length : 1
                            }
                            if (this._mapFunc) {
                                dataSourceChanges.forEach((item => {
                                    if ("insert" === item.type) {
                                        item.data = this._mapFunc(item.data)
                                    }
                                }))
                            }
                            if (changingArgs.postProcessChanges) {
                                dataSourceChanges = changingArgs.postProcessChanges(dataSourceChanges)
                            }(0, _array_utils.applyBatch)({
                                keyInfo: this.store(),
                                data: items,
                                changes: dataSourceChanges,
                                groupCount: groupLevel,
                                useInsertIndex: true
                            });
                            this._fireChanged([{
                                changes: changes
                            }])
                        }
                    },
                    _createLoadOperation(deferred) {
                        const operationId = this._operationManager.add(deferred);
                        const storeLoadOptions = this._createStoreLoadOptions();
                        if (this._store && !(0, _type.isEmptyObject)(null === storeLoadOptions || void 0 === storeLoadOptions ? void 0 : storeLoadOptions.langParams)) {
                            this._store._langParams = _extends({}, this._store._langParams, storeLoadOptions.langParams)
                        }
                        deferred.always((() => this._operationManager.remove(operationId)));
                        return {
                            operationId: operationId,
                            storeLoadOptions: storeLoadOptions
                        }
                    },
                    reload() {
                        const store = this.store();
                        store._clearCache();
                        this._init();
                        return this.load()
                    },
                    cancel(operationId) {
                        return this._operationManager.cancel(operationId)
                    },
                    cancelAll() {
                        return this._operationManager.cancelAll()
                    },
                    _addSearchOptions(storeLoadOptions) {
                        if (this._disposed) {
                            return
                        }
                        if (this.store()._useDefaultSearch) {
                            this._addSearchFilter(storeLoadOptions)
                        } else {
                            storeLoadOptions.searchOperation = this._searchOperation;
                            storeLoadOptions.searchValue = this._searchValue;
                            storeLoadOptions.searchExpr = this._searchExpr
                        }
                    },
                    _createStoreLoadOptions() {
                        const result = (0, _extend.extend)({}, this._storeLoadOptions);
                        this._addSearchOptions(result);
                        if (this._paginate) {
                            if (this._pageSize) {
                                result.skip = this._pageIndex * this._pageSize;
                                result.take = this._pageSize
                            }
                        }
                        result.userData = this._userData;
                        return result
                    },
                    _addSearchFilter(storeLoadOptions) {
                        const value = this._searchValue;
                        const op = this._searchOperation;
                        let selector = this._searchExpr;
                        const searchFilter = [];
                        if (!value) {
                            return
                        }
                        if (!selector) {
                            selector = "this"
                        }
                        if (!Array.isArray(selector)) {
                            selector = [selector]
                        }(0, _iterator.each)(selector, ((i, item) => {
                            if (searchFilter.length) {
                                searchFilter.push("or")
                            }
                            searchFilter.push([item, op, value])
                        }));
                        if (storeLoadOptions.filter) {
                            storeLoadOptions.filter = [searchFilter, storeLoadOptions.filter]
                        } else {
                            storeLoadOptions.filter = searchFilter
                        }
                    },
                    _loadFromStore(loadOptions, pendingDeferred) {
                        const handleSuccess = (data, extra) => {
                            if (this._disposed) {
                                return
                            }
                            if (!(0, _utils.isPending)(pendingDeferred)) {
                                return
                            }
                            const loadResult = (0, _extend.extend)((0, _utils.normalizeLoadResult)(data, extra), loadOptions);
                            this._eventsStrategy.fireEvent("customizeLoadResult", [loadResult]);
                            (0, _deferred.when)(loadResult.data).done((data => {
                                loadResult.data = data;
                                this._processStoreLoadResult(loadResult, pendingDeferred)
                            })).fail(pendingDeferred.reject)
                        };
                        if (loadOptions.data) {
                            return (new _deferred.Deferred).resolve(loadOptions.data).done(handleSuccess)
                        }
                        return this.store().load(loadOptions.storeLoadOptions).done(handleSuccess).fail(pendingDeferred.reject)
                    },
                    _processStoreLoadResult(loadResult, pendingDeferred) {
                        let {
                            data: data
                        } = loadResult;
                        let {
                            extra: extra
                        } = loadResult;
                        const {
                            storeLoadOptions: storeLoadOptions
                        } = loadResult;
                        const resolvePendingDeferred = () => {
                            this._isLoaded = true;
                            this._totalCount = isFinite(extra.totalCount) ? extra.totalCount : -1;
                            return pendingDeferred.resolve(data, extra)
                        };
                        const proceedLoadingTotalCount = () => {
                            this.store().totalCount(storeLoadOptions).done((count => {
                                extra.totalCount = count;
                                resolvePendingDeferred()
                            })).fail(pendingDeferred.reject)
                        };
                        if (this._disposed) {
                            return
                        }
                        data = this._applyPostProcessFunction(this._applyMapFunction(data));
                        if (!(0, _type.isObject)(extra)) {
                            extra = {}
                        }
                        this._items = data;
                        if (!data.length || !this._paginate || this._pageSize && data.length < this._pageSize) {
                            this._isLastPage = true
                        }
                        if (storeLoadOptions.requireTotalCount && !isFinite(extra.totalCount)) {
                            proceedLoadingTotalCount()
                        } else {
                            resolvePendingDeferred()
                        }
                    },
                    _applyMapFunction(data) {
                        if (this._mapFunc) {
                            return (0, _utils.mapDataRespectingGrouping)(data, this._mapFunc, this.group())
                        }
                        return data
                    },
                    _applyPostProcessFunction(data) {
                        if (this._postProcessFunc) {
                            return this._postProcessFunc(data)
                        }
                        return data
                    },
                    on(eventName, eventHandler) {
                        this._eventsStrategy.on(eventName, eventHandler);
                        return this
                    },
                    off(eventName, eventHandler) {
                        this._eventsStrategy.off(eventName, eventHandler);
                        return this
                    }
                })
            },
        9427:
            /*!************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/data/data_source/m_operation_manager.js ***!
              \************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _utils = __webpack_require__( /*! ../../../common/data/data_source/utils */ 97169);
                exports.default = class {
                    constructor() {
                        this._counter = -1;
                        this._deferreds = {}
                    }
                    add(deferred) {
                        this._counter++;
                        this._deferreds[this._counter] = deferred;
                        return this._counter
                    }
                    remove(operationId) {
                        return delete this._deferreds[operationId]
                    }
                    cancel(operationId) {
                        if (operationId in this._deferreds) {
                            this._deferreds[operationId].reject(_utils.CANCELED_TOKEN);
                            return true
                        }
                        return false
                    }
                    cancelAll() {
                        while (this._counter > -1) {
                            this.cancel(this._counter);
                            this._counter--
                        }
                    }
                }
            },
        23923:
            /*!************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/data/data_source/m_utils.js ***!
              \************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.normalizeStoreLoadOptionAccessorArguments = exports.normalizeLoadResult = exports.normalizeDataSourceOptions = exports.mapDataRespectingGrouping = exports.isPending = exports.CANCELED_TOKEN = void 0;
                var _array_store = _interopRequireDefault(__webpack_require__( /*! ../../../common/data/array_store */ 80556));
                var _custom_store = __webpack_require__( /*! ../../../common/data/custom_store */ 63326);
                var _utils = __webpack_require__( /*! ../../../common/data/utils */ 89358);
                var _ajax = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/ajax */ 78670));
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576);
                var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274);
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528);
                var _abstract_store = _interopRequireDefault(__webpack_require__( /*! ../../../data/abstract_store */ 77735));
                const _excluded = ["items"];

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }

                function _extends() {
                    return _extends = Object.assign ? Object.assign.bind() : function(n) {
                        for (var e = 1; e < arguments.length; e++) {
                            var t = arguments[e];
                            for (var r in t) {
                                ({}).hasOwnProperty.call(t, r) && (n[r] = t[r])
                            }
                        }
                        return n
                    }, _extends.apply(null, arguments)
                }
                exports.CANCELED_TOKEN = "canceled";
                exports.isPending = deferred => "pending" === deferred.state();
                exports.normalizeStoreLoadOptionAccessorArguments = originalArguments => {
                    switch (originalArguments.length) {
                        case 0:
                            return;
                        case 1:
                            return originalArguments[0]
                    }
                    return [].slice.call(originalArguments)
                };
                const mapRecursive = (items, level, mapper) => {
                    if (!Array.isArray(items)) {
                        return items
                    }
                    return level ? ((group, level, mapper) => (0, _iterator.map)(group, (item => {
                        const restItem = function(r, e) {
                            if (null == r) {
                                return {}
                            }
                            var t = {};
                            for (var n in r) {
                                if ({}.hasOwnProperty.call(r, n)) {
                                    if (e.includes(n)) {
                                        continue
                                    }
                                    t[n] = r[n]
                                }
                            }
                            return t
                        }(item, _excluded);
                        return _extends({}, restItem, {
                            items: mapRecursive(item.items, level - 1, mapper)
                        })
                    })))(items, level, mapper) : (0, _iterator.map)(items, mapper)
                };
                exports.mapDataRespectingGrouping = (items, mapper, groupInfo) => {
                    const level = groupInfo ? (0, _utils.normalizeSortingInfo)(groupInfo).length : 0;
                    return mapRecursive(items, level, mapper)
                };
                exports.normalizeLoadResult = (data, extra) => {
                    var _data;
                    if (null !== (_data = data) && void 0 !== _data && _data.data) {
                        extra = data;
                        data = data.data
                    }
                    if (!Array.isArray(data)) {
                        data = [data]
                    }
                    return {
                        data: data,
                        extra: extra
                    }
                };
                const createCustomStoreFromLoadFunc = options => {
                    const storeConfig = {};
                    (0, _iterator.each)(["useDefaultSearch", "key", "load", "loadMode", "cacheRawData", "byKey", "lookup", "totalCount", "insert", "update", "remove"], (function() {
                        storeConfig[this] = options[this];
                        delete options[this]
                    }));
                    return new _custom_store.CustomStore(storeConfig)
                };
                const createCustomStoreFromUrl = (url, normalizationOptions) => new _custom_store.CustomStore({
                    load: () => _ajax.default.sendRequest({
                        url: url,
                        dataType: "json"
                    }),
                    loadMode: null === normalizationOptions || void 0 === normalizationOptions ? void 0 : normalizationOptions.fromUrlLoadMode
                });
                exports.normalizeDataSourceOptions = (options, normalizationOptions) => {
                    let store;
                    if ("string" === typeof options) {
                        options = {
                            paginate: false,
                            store: createCustomStoreFromUrl(options, normalizationOptions)
                        }
                    }
                    if (void 0 === options) {
                        options = []
                    }
                    if (Array.isArray(options) || options instanceof _abstract_store.default) {
                        options = {
                            store: options
                        }
                    } else {
                        options = (0, _extend.extend)({}, options)
                    }
                    if (void 0 === options.store) {
                        options.store = []
                    }
                    store = options.store;
                    if ("load" in options) {
                        store = createCustomStoreFromLoadFunc(options)
                    } else if (Array.isArray(store)) {
                        store = new _array_store.default(store)
                    } else if ((0, _type.isPlainObject)(store)) {
                        store = (storeConfig => {
                            const alias = storeConfig.type;
                            delete storeConfig.type;
                            return _abstract_store.default.create(alias, storeConfig)
                        })((0, _extend.extend)({}, store))
                    }
                    options.store = store;
                    return options
                }
            },
        1773:
            /*!*********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/data/m_abstract_store.js ***!
              \*********************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _errors = __webpack_require__( /*! ../../common/data/errors */ 82812);
                var _store_helper = _interopRequireDefault(__webpack_require__( /*! ../../common/data/store_helper */ 66177));
                var _utils = __webpack_require__( /*! ../../common/data/utils */ 89358);
                var _class = _interopRequireDefault(__webpack_require__( /*! ../../core/class */ 55620));
                var _events_strategy = __webpack_require__( /*! ../../core/events_strategy */ 2607);
                var _common = __webpack_require__( /*! ../../core/utils/common */ 17781);
                var _data = __webpack_require__( /*! ../../core/utils/data */ 31e3);
                var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 87739);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 21274);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 11528);

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }

                function _extends() {
                    return _extends = Object.assign ? Object.assign.bind() : function(n) {
                        for (var e = 1; e < arguments.length; e++) {
                            var t = arguments[e];
                            for (var r in t) {
                                ({}).hasOwnProperty.call(t, r) && (n[r] = t[r])
                            }
                        }
                        return n
                    }, _extends.apply(null, arguments)
                }
                const {
                    abstract: abstract
                } = _class.default;
                const {
                    queryByOptions: queryByOptions
                } = _store_helper.default;
                const storeImpl = {};
                const Store = _class.default.inherit({
                    _langParams: {},
                    ctor(options) {
                        const that = this;
                        options = options || {};
                        this._eventsStrategy = new _events_strategy.EventsStrategy(this);
                        (0, _iterator.each)(["onLoaded", "onLoading", "onInserted", "onInserting", "onUpdated", "onUpdating", "onPush", "onRemoved", "onRemoving", "onModified", "onModifying"], ((_, optionName) => {
                            if (optionName in options) {
                                that.on(optionName.slice(2).toLowerCase(), options[optionName])
                            }
                        }));
                        this._key = options.key;
                        this._errorHandler = options.errorHandler;
                        this._useDefaultSearch = true
                    },
                    _clearCache: _common.noop,
                    _customLoadOptions: () => null,
                    key() {
                        return this._key
                    },
                    keyOf(obj) {
                        if (!this._keyGetter) {
                            this._keyGetter = (0, _data.compileGetter)(this.key())
                        }
                        return this._keyGetter(obj)
                    },
                    _requireKey() {
                        if (!this.key()) {
                            throw _errors.errors.Error("E4005")
                        }
                    },
                    load(options) {
                        const that = this;
                        options = options || {};
                        this._eventsStrategy.fireEvent("loading", [options]);
                        return this._withLock(this._loadImpl(options)).done((result => {
                            that._eventsStrategy.fireEvent("loaded", [result, options])
                        }))
                    },
                    _loadImpl(options) {
                        if (!(0, _type.isEmptyObject)(this._langParams)) {
                            options = options || {};
                            options._langParams = _extends({}, this._langParams, options._langParams)
                        }
                        return queryByOptions(this.createQuery(options), options).enumerate()
                    },
                    _withLock(task) {
                        const result = new _deferred.Deferred;
                        task.done((function() {
                            const that = this;
                            const args = arguments;
                            _utils.processRequestResultLock.promise().done((() => {
                                result.resolveWith(that, args)
                            }))
                        })).fail((function() {
                            result.rejectWith(this, arguments)
                        }));
                        return result
                    },
                    createQuery: abstract,
                    totalCount(options) {
                        return this._totalCountImpl(options)
                    },
                    _totalCountImpl(options) {
                        return queryByOptions(this.createQuery(options), options, true).count()
                    },
                    byKey(key, extraOptions) {
                        return this._addFailHandlers(this._withLock(this._byKeyImpl(key, extraOptions)))
                    },
                    _byKeyImpl: abstract,
                    insert(values) {
                        const that = this;
                        that._eventsStrategy.fireEvent("modifying");
                        that._eventsStrategy.fireEvent("inserting", [values]);
                        return that._addFailHandlers(that._insertImpl(values).done(((callbackValues, callbackKey) => {
                            that._eventsStrategy.fireEvent("inserted", [callbackValues, callbackKey]);
                            that._eventsStrategy.fireEvent("modified")
                        })))
                    },
                    _insertImpl: abstract,
                    update(key, values) {
                        const that = this;
                        that._eventsStrategy.fireEvent("modifying");
                        that._eventsStrategy.fireEvent("updating", [key, values]);
                        return that._addFailHandlers(that._updateImpl(key, values).done((() => {
                            that._eventsStrategy.fireEvent("updated", [key, values]);
                            that._eventsStrategy.fireEvent("modified")
                        })))
                    },
                    _updateImpl: abstract,
                    push(changes) {
                        const beforePushArgs = {
                            changes: changes,
                            waitFor: []
                        };
                        this._eventsStrategy.fireEvent("beforePushAggregation", [beforePushArgs]);
                        (0, _deferred.when)(...beforePushArgs.waitFor).done((() => {
                            this._pushImpl(changes);
                            this._eventsStrategy.fireEvent("beforePush", [{
                                changes: changes
                            }]);
                            this._eventsStrategy.fireEvent("push", [changes])
                        }))
                    },
                    _pushImpl: _common.noop,
                    remove(key) {
                        const that = this;
                        that._eventsStrategy.fireEvent("modifying");
                        that._eventsStrategy.fireEvent("removing", [key]);
                        return that._addFailHandlers(that._removeImpl(key).done((callbackKey => {
                            that._eventsStrategy.fireEvent("removed", [callbackKey]);
                            that._eventsStrategy.fireEvent("modified")
                        })))
                    },
                    _removeImpl: abstract,
                    _addFailHandlers(deferred) {
                        return deferred.fail(this._errorHandler).fail(_errors.handleError)
                    },
                    on(eventName, eventHandler) {
                        this._eventsStrategy.on(eventName, eventHandler);
                        return this
                    },
                    off(eventName, eventHandler) {
                        this._eventsStrategy.off(eventName, eventHandler);
                        return this
                    }
                });
                Store.create = function(alias, options) {
                    if (!(alias in storeImpl)) {
                        throw _errors.errors.Error("E4020", alias)
                    }
                    return new storeImpl[alias](options)
                };
                Store.registerClass = function(type, alias) {
                    if (alias) {
                        storeImpl[alias] = type
                    }
                    return type
                };
                Store.inherit = (inheritor = Store.inherit, function(members, alias) {
                    const type = inheritor.apply(this, [members]);
                    Store.registerClass(type, alias);
                    return type
                });
                var inheritor;
                exports.default = Store
            },
        79587:
            /*!******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/data/m_array_query.js ***!
              \******************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _errors = __webpack_require__( /*! ../../common/data/errors */ 82812);
                var _utils = __webpack_require__( /*! ../../common/data/utils */ 89358);
                var _class = (e = __webpack_require__( /*! ../../core/class */ 55620), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                var _data = __webpack_require__( /*! ../../core/utils/data */ 31e3);
                var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 87739);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 21274);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 11528);
                const Iterator = _class.default.inherit({
                    toArray() {
                        const result = [];
                        this.reset();
                        while (this.next()) {
                            result.push(this.current())
                        }
                        return result
                    },
                    countable: () => false
                });
                const ArrayIterator = Iterator.inherit({
                    ctor(array) {
                        this.array = array;
                        this.index = -1
                    },
                    next() {
                        if (this.index + 1 < this.array.length) {
                            this.index++;
                            return true
                        }
                        return false
                    },
                    current() {
                        return this.array[this.index]
                    },
                    reset() {
                        this.index = -1
                    },
                    toArray() {
                        return this.array.slice(0)
                    },
                    countable: () => true,
                    count() {
                        return this.array.length
                    }
                });
                const WrappedIterator = Iterator.inherit({
                    ctor(iter) {
                        this.iter = iter
                    },
                    next() {
                        return this.iter.next()
                    },
                    current() {
                        return this.iter.current()
                    },
                    reset() {
                        return this.iter.reset()
                    }
                });
                const MapIterator = WrappedIterator.inherit({
                    ctor(iter, mapper) {
                        this.callBase(iter);
                        this.index = -1;
                        this.mapper = mapper
                    },
                    current() {
                        return this.mapper(this.callBase(), this.index)
                    },
                    next() {
                        const hasNext = this.callBase();
                        if (hasNext) {
                            this.index++
                        }
                        return hasNext
                    }
                });
                const SortIterator = Iterator.inherit({
                    ctor(iter, getter, desc, compare) {
                        this.langParams = iter.langParams;
                        if (!(iter instanceof MapIterator)) {
                            iter = new MapIterator(iter, this._wrap);
                            iter.langParams = this.langParams
                        }
                        this.iter = iter;
                        this.rules = [{
                            getter: getter,
                            desc: desc,
                            compare: compare,
                            langParams: this.langParams
                        }]
                    },
                    thenBy(getter, desc, compare) {
                        const result = new SortIterator(this.sortedIter || this.iter, getter, desc, compare);
                        if (!this.sortedIter) {
                            result.rules = this.rules.concat(result.rules)
                        }
                        return result
                    },
                    next() {
                        this._ensureSorted();
                        return this.sortedIter.next()
                    },
                    current() {
                        this._ensureSorted();
                        return this.sortedIter.current()
                    },
                    reset() {
                        delete this.sortedIter
                    },
                    countable() {
                        return this.sortedIter || this.iter.countable()
                    },
                    count() {
                        if (this.sortedIter) {
                            return this.sortedIter.count()
                        }
                        return this.iter.count()
                    },
                    _ensureSorted() {
                        const that = this;
                        if (that.sortedIter) {
                            return
                        }(0, _iterator.each)(that.rules, (function() {
                            this.getter = (0, _data.compileGetter)(this.getter)
                        }));
                        that.sortedIter = new MapIterator(new ArrayIterator(this.iter.toArray().sort(((x, y) => that._compare(x, y)))), that._unwrap)
                    },
                    _wrap: (record, index) => ({
                        index: index,
                        value: record
                    }),
                    _unwrap: wrappedItem => wrappedItem.value,
                    _getDefaultCompare: langParams => (xValue, yValue) => function(xValue, yValue, options) {
                        if ((0, _type.isString)(xValue) && (0, _type.isString)(yValue) && (null !== options && void 0 !== options && options.locale || null !== options && void 0 !== options && options.collatorOptions)) {
                            return new Intl.Collator((null === options || void 0 === options ? void 0 : options.locale) || void 0, (null === options || void 0 === options ? void 0 : options.collatorOptions) || void 0).compare(xValue, yValue)
                        }
                        xValue = (0, _data.toComparable)(xValue, false, options);
                        yValue = (0, _data.toComparable)(yValue, false, options);
                        if (null === xValue && null !== yValue) {
                            return -1
                        }
                        if (null !== xValue && null === yValue) {
                            return 1
                        }
                        if (void 0 === xValue && void 0 !== yValue) {
                            return 1
                        }
                        if (void 0 !== xValue && void 0 === yValue) {
                            return -1
                        }
                        if (xValue < yValue) {
                            return -1
                        }
                        if (xValue > yValue) {
                            return 1
                        }
                        return 0
                    }(xValue, yValue, langParams),
                    _compare(x, y) {
                        const xIndex = x.index;
                        const yIndex = y.index;
                        x = x.value;
                        y = y.value;
                        if (x === y) {
                            return xIndex - yIndex
                        }
                        for (let i = 0, rulesCount = this.rules.length; i < rulesCount; i++) {
                            const rule = this.rules[i];
                            const xValue = rule.getter(x);
                            const yValue = rule.getter(y);
                            const compare = rule.compare || this._getDefaultCompare(rule.langParams);
                            const compareResult = compare(xValue, yValue);
                            if (compareResult) {
                                return rule.desc ? -compareResult : compareResult
                            }
                        }
                        return xIndex - yIndex
                    }
                });
                const compileCriteria = function() {
                    let langParams = {};
                    const _toComparable = value => (0, _data.toComparable)(value, false, langParams);
                    const compileGroup = function(crit) {
                        if ((0, _utils.isUniformEqualsByOr)(crit)) {
                            return (crit => {
                                const getter = (0, _data.compileGetter)(crit[0][0]);
                                const filterValues = crit.reduce(((acc, item, i) => {
                                    if (i % 2 === 0) {
                                        acc.push(_toComparable(item[2]))
                                    }
                                    return acc
                                }), []);
                                return obj => {
                                    const value = _toComparable(getter(obj));
                                    return filterValues.some((filterValue => useStrictComparison(filterValue) ? value === filterValue : value == filterValue))
                                }
                            })(crit)
                        }
                        const ops = [];
                        let isConjunctiveOperator = false;
                        let isConjunctiveNextOperator = false;
                        (0, _iterator.each)(crit, (function() {
                            if (Array.isArray(this) || (0, _type.isFunction)(this)) {
                                if (ops.length > 1 && isConjunctiveOperator !== isConjunctiveNextOperator) {
                                    throw _errors.errors.Error("E4019")
                                }
                                ops.push(compileCriteria(this, langParams));
                                isConjunctiveOperator = isConjunctiveNextOperator;
                                isConjunctiveNextOperator = true
                            } else {
                                isConjunctiveNextOperator = (0, _utils.isConjunctiveOperator)(this)
                            }
                        }));
                        return function(d) {
                            let result = isConjunctiveOperator;
                            for (let i = 0; i < ops.length; i++) {
                                if (ops[i](d) !== isConjunctiveOperator) {
                                    result = !isConjunctiveOperator;
                                    break
                                }
                            }
                            return result
                        }
                    };
                    const toString = function(value) {
                        var _langParams;
                        return (0, _type.isDefined)(value) ? null !== (_langParams = langParams) && void 0 !== _langParams && _langParams.locale ? value.toLocaleString(langParams.locale) : value.toString() : ""
                    };

                    function compileEquals(getter, value, negate) {
                        return function(obj) {
                            obj = _toComparable(getter(obj));
                            let result = useStrictComparison(value) ? obj === value : obj == value;
                            if (negate) {
                                result = !result
                            }
                            return result
                        }
                    }

                    function useStrictComparison(value) {
                        return "" === value || 0 === value || false === value
                    }
                    return function(crit, options) {
                        langParams = options || {};
                        if ((0, _type.isFunction)(crit)) {
                            return crit
                        }
                        if ((0, _utils.isGroupCriterion)(crit)) {
                            return compileGroup(crit)
                        }
                        if ((0, _utils.isUnaryOperation)(crit)) {
                            return function(crit) {
                                const op = crit[0];
                                const criteria = compileCriteria(crit[1], langParams);
                                if ("!" === op) {
                                    return function(obj) {
                                        return !criteria(obj)
                                    }
                                }
                                throw _errors.errors.Error("E4003", op)
                            }(crit)
                        }
                        return function(crit) {
                            crit = (0, _utils.normalizeBinaryCriterion)(crit);
                            const getter = (0, _data.compileGetter)(crit[0]);
                            const op = crit[1];
                            let value = crit[2];
                            value = _toComparable(value);
                            const compare = (obj, operatorFn) => {
                                obj = _toComparable(getter(obj));
                                return (null == value || null == obj) && value !== obj ? false : operatorFn(obj, value)
                            };
                            switch (op.toLowerCase()) {
                                case "=":
                                    return compileEquals(getter, value);
                                case "<>":
                                    return compileEquals(getter, value, true);
                                case ">":
                                    return obj => compare(obj, ((a, b) => a > b));
                                case "<":
                                    return obj => compare(obj, ((a, b) => a < b));
                                case ">=":
                                    return obj => compare(obj, ((a, b) => a >= b));
                                case "<=":
                                    return obj => compare(obj, ((a, b) => a <= b));
                                case "startswith":
                                    return obj => _toComparable(toString(getter(obj))).startsWith(value);
                                case "endswith":
                                    return obj => _toComparable(toString(getter(obj))).endsWith(value);
                                case "contains":
                                    return obj => _toComparable(toString(getter(obj))).includes(value);
                                case "notcontains":
                                    return obj => !_toComparable(toString(getter(obj))).includes(value)
                            }
                            throw _errors.errors.Error("E4003", op)
                        }(crit)
                    }
                }();
                const FilterIterator = WrappedIterator.inherit({
                    ctor(iter, criteria) {
                        this.callBase(iter);
                        this.langParams = iter.langParams;
                        this.criteria = compileCriteria(criteria, this.langParams)
                    },
                    next() {
                        while (this.iter.next()) {
                            if (this.criteria(this.current())) {
                                return true
                            }
                        }
                        return false
                    }
                });
                const GroupIterator = Iterator.inherit({
                    ctor(iter, getter) {
                        this.iter = iter;
                        this.getter = getter
                    },
                    next() {
                        this._ensureGrouped();
                        return this.groupedIter.next()
                    },
                    current() {
                        this._ensureGrouped();
                        return this.groupedIter.current()
                    },
                    reset() {
                        delete this.groupedIter
                    },
                    countable() {
                        return !!this.groupedIter
                    },
                    count() {
                        return this.groupedIter.count()
                    },
                    _ensureGrouped() {
                        if (this.groupedIter) {
                            return
                        }
                        const hash = {};
                        const keys = [];
                        const {
                            iter: iter
                        } = this;
                        const getter = (0, _data.compileGetter)(this.getter);
                        iter.reset();
                        while (iter.next()) {
                            const current = iter.current();
                            const key = getter(current);
                            if (key in hash) {
                                hash[key].push(current)
                            } else {
                                hash[key] = [current];
                                keys.push(key)
                            }
                        }
                        this.groupedIter = new ArrayIterator((0, _iterator.map)(keys, (key => ({
                            key: key,
                            items: hash[key]
                        }))))
                    }
                });
                const SelectIterator = WrappedIterator.inherit({
                    ctor(iter, getter) {
                        this.callBase(iter);
                        this.getter = (0, _data.compileGetter)(getter)
                    },
                    current() {
                        return this.getter(this.callBase())
                    },
                    countable() {
                        return this.iter.countable()
                    },
                    count() {
                        return this.iter.count()
                    }
                });
                const SliceIterator = WrappedIterator.inherit({
                    ctor(iter, skip, take) {
                        this.callBase(iter);
                        this.skip = Math.max(0, skip);
                        this.take = Math.max(0, take);
                        this.pos = 0
                    },
                    next() {
                        if (this.pos >= this.skip + this.take) {
                            return false
                        }
                        while (this.pos < this.skip && this.iter.next()) {
                            this.pos++
                        }
                        this.pos++;
                        return this.iter.next()
                    },
                    reset() {
                        this.callBase();
                        this.pos = 0
                    },
                    countable() {
                        return this.iter.countable()
                    },
                    count() {
                        return Math.min(this.iter.count() - this.skip, this.take)
                    }
                });
                const arrayQueryImpl = function(iter, queryOptions) {
                    queryOptions = queryOptions || {};
                    if (!(iter instanceof Iterator)) {
                        iter = new ArrayIterator(iter)
                    }
                    if (queryOptions.langParams) {
                        iter.langParams = queryOptions.langParams
                    }
                    const handleError = function(error) {
                        const handler = queryOptions.errorHandler;
                        if (handler) {
                            handler(error)
                        }(0, _errors.handleError)(error)
                    };
                    const aggregateCore = function(aggregator) {
                        const d = (new _deferred.Deferred).fail(handleError);
                        let seed;
                        const {
                            step: step
                        } = aggregator;
                        const {
                            finalize: finalize
                        } = aggregator;
                        try {
                            iter.reset();
                            if ("seed" in aggregator) {
                                seed = aggregator.seed
                            } else {
                                seed = iter.next() ? iter.current() : NaN
                            }
                            let accumulator = seed;
                            while (iter.next()) {
                                accumulator = step(accumulator, iter.current())
                            }
                            d.resolve(finalize ? finalize(accumulator) : accumulator)
                        } catch (x) {
                            d.reject(x)
                        }
                        return d.promise()
                    };
                    const standardAggregate = function(name) {
                        return aggregateCore(_utils.aggregators[name])
                    };
                    const select = function(getter) {
                        if (!(0, _type.isFunction)(getter) && !Array.isArray(getter)) {
                            getter = [].slice.call(arguments)
                        }
                        return chainQuery(new SelectIterator(iter, getter))
                    };
                    const selectProp = function(name) {
                        return select((0, _data.compileGetter)(name))
                    };

                    function chainQuery(iter) {
                        return arrayQueryImpl(iter, queryOptions)
                    }
                    return {
                        toArray: () => iter.toArray(),
                        enumerate() {
                            const d = (new _deferred.Deferred).fail(handleError);
                            try {
                                d.resolve(iter.toArray())
                            } catch (x) {
                                d.reject(x)
                            }
                            return d.promise()
                        },
                        setLangParams(options) {
                            iter.langParams = options
                        },
                        sortBy: (getter, desc, compare) => chainQuery(new SortIterator(iter, getter, desc, compare)),
                        thenBy(getter, desc, compare) {
                            if (iter instanceof SortIterator) {
                                return chainQuery(iter.thenBy(getter, desc, compare))
                            }
                            throw _errors.errors.Error("E4004")
                        },
                        filter(criteria) {
                            if (!Array.isArray(criteria)) {
                                criteria = [].slice.call(arguments)
                            }
                            return chainQuery(new FilterIterator(iter, criteria))
                        },
                        slice(skip, take) {
                            if (void 0 === take) {
                                take = Number.MAX_VALUE
                            }
                            return chainQuery(new SliceIterator(iter, skip, take))
                        },
                        select: select,
                        groupBy: getter => chainQuery(new GroupIterator(iter, getter)),
                        aggregate: function(seed, step, finalize) {
                            if (arguments.length < 2) {
                                return aggregateCore({
                                    step: arguments[0]
                                })
                            }
                            return aggregateCore({
                                seed: seed,
                                step: step,
                                finalize: finalize
                            })
                        },
                        count() {
                            if (iter.countable()) {
                                const d = (new _deferred.Deferred).fail(handleError);
                                try {
                                    d.resolve(iter.count())
                                } catch (x) {
                                    d.reject(x)
                                }
                                return d.promise()
                            }
                            return standardAggregate("count")
                        },
                        sum(getter) {
                            if (getter) {
                                return selectProp(getter).sum()
                            }
                            return standardAggregate("sum")
                        },
                        min(getter) {
                            if (getter) {
                                return selectProp(getter).min()
                            }
                            return standardAggregate("min")
                        },
                        max(getter) {
                            if (getter) {
                                return selectProp(getter).max()
                            }
                            return standardAggregate("max")
                        },
                        avg(getter) {
                            if (getter) {
                                return selectProp(getter).avg()
                            }
                            return standardAggregate("avg")
                        }
                    }
                };
                exports.default = arrayQueryImpl
            },
        11338:
            /*!******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/data/m_array_store.js ***!
              \******************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _array_utils = __webpack_require__( /*! ../../common/data/array_utils */ 43792);
                var _errors = __webpack_require__( /*! ../../common/data/errors */ 82812);
                var _query = _interopRequireDefault(__webpack_require__( /*! ../../common/data/query */ 30771));
                var _utils = __webpack_require__( /*! ../../common/data/utils */ 89358);
                var _abstract_store = _interopRequireDefault(__webpack_require__( /*! ../../data/abstract_store */ 77735));

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const ArrayStore = _abstract_store.default.inherit({
                    ctor(options) {
                        if (Array.isArray(options)) {
                            options = {
                                data: options
                            }
                        } else {
                            options = options || {}
                        }
                        this.callBase(options);
                        const initialArray = options.data;
                        if (initialArray && !Array.isArray(initialArray)) {
                            throw _errors.errors.Error("E4006")
                        }
                        this._array = initialArray || []
                    },
                    createQuery() {
                        return (0, _query.default)(this._array, {
                            errorHandler: this._errorHandler
                        })
                    },
                    _byKeyImpl(key) {
                        const index = (0, _array_utils.indexByKey)(this, this._array, key);
                        if (-1 === index) {
                            return (0, _utils.rejectedPromise)(_errors.errors.Error("E4009"))
                        }
                        return (0, _utils.trivialPromise)(this._array[index])
                    },
                    _insertImpl(values) {
                        return (0, _array_utils.insert)(this, this._array, values)
                    },
                    _pushImpl(changes) {
                        (0, _array_utils.applyBatch)({
                            keyInfo: this,
                            data: this._array,
                            changes: changes
                        })
                    },
                    _updateImpl(key, values) {
                        return (0, _array_utils.update)(this, this._array, key, values)
                    },
                    _removeImpl(key) {
                        return (0, _array_utils.remove)(this, this._array, key)
                    },
                    clear() {
                        this._eventsStrategy.fireEvent("modifying");
                        this._array = [];
                        this._eventsStrategy.fireEvent("modified")
                    }
                }, "array");
                exports.default = ArrayStore
            },
        3198:
            /*!******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/data/m_array_utils.js ***!
              \******************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.applyBatch = applyBatch;
                exports.applyChanges = function(data, changes) {
                    let options = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};
                    const {
                        keyExpr: keyExpr = "id",
                        immutable: immutable = true
                    } = options;
                    const keyGetter = (0, _data.compileGetter)(keyExpr);
                    const keyInfo = {
                        key: () => keyExpr,
                        keyOf: obj => keyGetter(obj)
                    };
                    return applyBatch({
                        keyInfo: keyInfo,
                        data: data,
                        changes: changes,
                        immutable: immutable,
                        disableCache: true,
                        logError: true
                    })
                };
                exports.createObjectWithChanges = createObjectWithChanges;
                exports.indexByKey = indexByKey;
                exports.insert = insert;
                exports.remove = remove;
                exports.update = update;
                var _errors = __webpack_require__( /*! ../../common/data/errors */ 82812);
                var _utils = __webpack_require__( /*! ../../common/data/utils */ 89358);
                var _config = _interopRequireDefault(__webpack_require__( /*! ../../core/config */ 66636));
                var _guid = _interopRequireDefault(__webpack_require__( /*! ../../core/guid */ 19427));
                var _data = __webpack_require__( /*! ../../core/utils/data */ 31e3);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576);
                var _object = __webpack_require__( /*! ../../core/utils/object */ 22263);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 11528);

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }

                function _extends() {
                    return _extends = Object.assign ? Object.assign.bind() : function(n) {
                        for (var e = 1; e < arguments.length; e++) {
                            var t = arguments[e];
                            for (var r in t) {
                                ({}).hasOwnProperty.call(t, r) && (n[r] = t[r])
                            }
                        }
                        return n
                    }, _extends.apply(null, arguments)
                }

                function findItems(keyInfo, items, key, groupCount) {
                    let childItems;
                    let result;
                    if (groupCount) {
                        for (let i = 0; i < items.length; i++) {
                            childItems = items[i].items || items[i].collapsedItems || [];
                            result = findItems(keyInfo, childItems || [], key, groupCount - 1);
                            if (result) {
                                return result
                            }
                        }
                    } else if (indexByKey(keyInfo, items, key) >= 0) {
                        return items
                    }
                }

                function getItems(keyInfo, items, key, groupCount) {
                    if (groupCount) {
                        return findItems(keyInfo, items, key, groupCount) || []
                    }
                    return items
                }

                function setDataByKeyMapValue(array, key, data) {
                    if (array._dataByKeyMap) {
                        array._dataByKeyMap[JSON.stringify(key)] = data;
                        array._dataByKeyMapLength += data ? 1 : -1
                    }
                }

                function cloneInstanceWithChangedPaths(instance, changes, clonedInstances) {
                    clonedInstances = clonedInstances || new WeakMap;
                    const result = instance ? Object.create(Object.getPrototypeOf(instance)) : {};
                    if (instance) {
                        clonedInstances.set(instance, result)
                    }
                    const instanceWithoutPrototype = _extends({}, instance);
                    (0, _object.deepExtendArraySafe)(result, instanceWithoutPrototype, true, true, true);
                    for (const name in instanceWithoutPrototype) {
                        const value = instanceWithoutPrototype[name];
                        const change = null === changes || void 0 === changes ? void 0 : changes[name];
                        if ((0, _type.isObject)(value) && !(0, _type.isPlainObject)(value) && (0, _type.isObject)(change) && !clonedInstances.has(value)) {
                            result[name] = cloneInstanceWithChangedPaths(value, change, clonedInstances)
                        }
                    }
                    for (const name in result) {
                        const prop = result[name];
                        if ((0, _type.isObject)(prop) && clonedInstances.has(prop)) {
                            result[name] = clonedInstances.get(prop)
                        }
                    }
                    return result
                }

                function createObjectWithChanges(target, changes) {
                    const result = cloneInstanceWithChangedPaths(target, changes);
                    return (0, _object.deepExtendArraySafe)(result, changes, true, true, true)
                }

                function applyBatch(_ref) {
                    let {
                        keyInfo: keyInfo,
                        data: data,
                        changes: changes,
                        groupCount: groupCount,
                        useInsertIndex: useInsertIndex,
                        immutable: immutable,
                        disableCache: disableCache,
                        logError: logError,
                        skipCopying: skipCopying
                    } = _ref;
                    const resultItems = true === immutable ? [...data] : data;
                    changes.forEach((item => {
                        const items = "insert" === item.type ? resultItems : getItems(keyInfo, resultItems, item.key, groupCount);
                        !disableCache && function(keyInfo, array) {
                            if (keyInfo.key() && (!array._dataByKeyMap || array._dataByKeyMapLength !== array.length)) {
                                const dataByKeyMap = {};
                                const arrayLength = array.length;
                                for (let i = 0; i < arrayLength; i++) {
                                    dataByKeyMap[JSON.stringify(keyInfo.keyOf(array[i]))] = array[i]
                                }
                                array._dataByKeyMap = dataByKeyMap;
                                array._dataByKeyMapLength = arrayLength
                            }
                        }(keyInfo, items);
                        switch (item.type) {
                            case "update":
                                update(keyInfo, items, item.key, item.data, true, immutable, logError);
                                break;
                            case "insert":
                                insert(keyInfo, items, item.data, useInsertIndex && (0, _type.isDefined)(item.index) ? item.index : -1, true, logError, skipCopying);
                                break;
                            case "remove":
                                remove(keyInfo, items, item.key, true, logError)
                        }
                    }));
                    return resultItems
                }

                function getErrorResult(isBatch, logError, errorCode) {
                    return !isBatch ? (0, _utils.rejectedPromise)(_errors.errors.Error(errorCode)) : logError && _errors.errors.log(errorCode)
                }

                function update(keyInfo, array, key, data, isBatch, immutable, logError) {
                    let target;
                    const keyExpr = keyInfo.key();
                    if (keyExpr) {
                        if (function(target, keyOrKeys) {
                                let key;
                                const keys = "string" === typeof keyOrKeys ? keyOrKeys.split() : keyOrKeys.slice();
                                while (keys.length) {
                                    key = keys.shift();
                                    if (key in target) {
                                        return true
                                    }
                                }
                                return false
                            }(data, keyExpr) && !(0, _utils.keysEqual)(keyExpr, key, keyInfo.keyOf(data))) {
                            return getErrorResult(isBatch, logError, "E4017")
                        }
                        target = function(array, key) {
                            if (array._dataByKeyMap) {
                                return array._dataByKeyMap[JSON.stringify(key)]
                            }
                        }(array, key);
                        if (!target) {
                            const index = indexByKey(keyInfo, array, key);
                            if (index < 0) {
                                return getErrorResult(isBatch, logError, "E4009")
                            }
                            target = array[index];
                            if (true === immutable && (0, _type.isDefined)(target)) {
                                const newTarget = createObjectWithChanges(target, data);
                                array[index] = newTarget;
                                return !isBatch && (0, _utils.trivialPromise)(newTarget, key)
                            }
                        }
                    } else {
                        target = key
                    }(0, _object.deepExtendArraySafe)(target, data, true, false, true, true);
                    if (!isBatch) {
                        if ((0, _config.default)().useLegacyStoreResult) {
                            return (0, _utils.trivialPromise)(key, data)
                        }
                        return (0, _utils.trivialPromise)(target, key)
                    }
                }

                function insert(keyInfo, array, data, index, isBatch, logError, skipCopying) {
                    let keyValue;
                    const keyExpr = keyInfo.key();
                    const obj = (0, _type.isPlainObject)(data) && !skipCopying ? (0, _extend.extend)({}, data) : data;
                    if (keyExpr) {
                        keyValue = keyInfo.keyOf(obj);
                        if (void 0 === keyValue || "object" === typeof keyValue && (0, _type.isEmptyObject)(keyValue)) {
                            if (Array.isArray(keyExpr)) {
                                throw _errors.errors.Error("E4007")
                            }
                            keyValue = obj[keyExpr] = String(new _guid.default)
                        } else if (void 0 !== array[indexByKey(keyInfo, array, keyValue)]) {
                            return getErrorResult(isBatch, logError, "E4008")
                        }
                    } else {
                        keyValue = obj
                    }
                    if (index >= 0) {
                        array.splice(index, 0, obj)
                    } else {
                        array.push(obj)
                    }
                    setDataByKeyMapValue(array, keyValue, obj);
                    if (!isBatch) {
                        return (0, _utils.trivialPromise)((0, _config.default)().useLegacyStoreResult ? data : obj, keyValue)
                    }
                }

                function remove(keyInfo, array, key, isBatch, logError) {
                    const index = indexByKey(keyInfo, array, key);
                    if (index > -1) {
                        array.splice(index, 1);
                        setDataByKeyMapValue(array, key, null)
                    }
                    if (!isBatch) {
                        return (0, _utils.trivialPromise)(key)
                    }
                    if (index < 0) {
                        return getErrorResult(isBatch, logError, "E4009")
                    }
                }

                function indexByKey(keyInfo, array, key) {
                    const keyExpr = keyInfo.key();
                    if (! function(array, key) {
                            if (array._dataByKeyMap) {
                                return array._dataByKeyMap[JSON.stringify(key)]
                            }
                            return true
                        }(array, key)) {
                        return -1
                    }
                    for (let i = 0, arrayLength = array.length; i < arrayLength; i++) {
                        if ((0, _utils.keysEqual)(keyExpr, keyInfo.keyOf(array[i]), key)) {
                            return i
                        }
                    }
                    return -1
                }
            },
        12764:
            /*!*******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/data/m_custom_store.js ***!
              \*******************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _array_query = _interopRequireDefault(__webpack_require__( /*! ../../common/data/array_query */ 65517));
                var _array_utils = __webpack_require__( /*! ../../common/data/array_utils */ 43792);
                var _errors = __webpack_require__( /*! ../../common/data/errors */ 82812);
                var _store_helper = _interopRequireDefault(__webpack_require__( /*! ../../common/data/store_helper */ 66177));
                var _utils = __webpack_require__( /*! ../../common/data/utils */ 89358);
                var _config = _interopRequireDefault(__webpack_require__( /*! ../../core/config */ 66636));
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553));
                var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 87739);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 11528);
                var _abstract_store = _interopRequireDefault(__webpack_require__( /*! ../../data/abstract_store */ 77735));

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }

                function isPromise(obj) {
                    return obj && (0, _type.isFunction)(obj.then)
                }

                function trivialPromise(value) {
                    return (new _deferred.Deferred).resolve(value).promise()
                }

                function ensureRequiredFuncOption(name, obj) {
                    if (!(0, _type.isFunction)(obj)) {
                        throw _errors.errors.Error("E4011", name)
                    }
                }

                function throwInvalidUserFuncResult(name) {
                    throw _errors.errors.Error("E4012", name)
                }

                function createUserFuncFailureHandler(pendingDeferred) {
                    return function(arg) {
                        let error;
                        if (arg instanceof Error) {
                            error = arg
                        } else {
                            error = new Error(function(promiseArguments) {
                                const xhr = promiseArguments[0];
                                const textStatus = promiseArguments[1];
                                if (!xhr || !xhr.getResponseHeader) {
                                    return null
                                }
                                return (0, _utils.errorMessageFromXhr)(xhr, textStatus)
                            }(arguments) || arg && String(arg) || "Unknown error")
                        }
                        if (error.message !== _utils.XHR_ERROR_UNLOAD) {
                            pendingDeferred.reject(error)
                        }
                    }
                }

                function invokeUserLoad(store, options) {
                    const userFunc = store._loadFunc;
                    let userResult;
                    ensureRequiredFuncOption("load", userFunc);
                    userResult = userFunc.apply(store, [options]);
                    if (Array.isArray(userResult)) {
                        userResult = trivialPromise(userResult)
                    } else if (null === userResult || void 0 === userResult) {
                        userResult = trivialPromise([])
                    } else if (!isPromise(userResult)) {
                        throwInvalidUserFuncResult("load")
                    }
                    return (0, _deferred.fromPromise)(userResult)
                }

                function runRawLoad(pendingDeferred, store, userFuncOptions, continuation) {
                    if (store.__rawData) {
                        continuation(store.__rawData)
                    } else {
                        const loadPromise = store.__rawDataPromise || invokeUserLoad(store, userFuncOptions);
                        if (store._cacheRawData) {
                            store.__rawDataPromise = loadPromise
                        }
                        loadPromise.always((() => {
                            delete store.__rawDataPromise
                        })).done((rawData => {
                            if (store._cacheRawData) {
                                store.__rawData = rawData
                            }
                            continuation(rawData)
                        })).fail((error => {
                            var _store$_errorHandler;
                            const userFuncFailureHandler = createUserFuncFailureHandler(pendingDeferred);
                            null === (_store$_errorHandler = store._errorHandler) || void 0 === _store$_errorHandler || _store$_errorHandler.call(store, error);
                            userFuncFailureHandler(error)
                        }))
                    }
                }

                function runRawLoadWithQuery(pendingDeferred, store, options, countOnly) {
                    options = options || {};
                    const userFuncOptions = {};
                    if ("userData" in options) {
                        userFuncOptions.userData = options.userData
                    }
                    runRawLoad(pendingDeferred, store, userFuncOptions, (rawData => {
                        const rawDataQuery = (0, _array_query.default)(rawData, {
                            errorHandler: store._errorHandler
                        });
                        let itemsQuery;
                        let totalCountQuery;
                        const waitList = [];
                        let items;
                        let totalCount;
                        if (!countOnly) {
                            itemsQuery = _store_helper.default.queryByOptions(rawDataQuery, options);
                            if (itemsQuery === rawDataQuery) {
                                items = rawData.slice(0)
                            } else {
                                waitList.push(itemsQuery.enumerate().done((asyncResult => {
                                    items = asyncResult
                                })))
                            }
                        }
                        if (options.requireTotalCount || countOnly) {
                            totalCountQuery = _store_helper.default.queryByOptions(rawDataQuery, options, true);
                            if (totalCountQuery === rawDataQuery) {
                                totalCount = rawData.length
                            } else {
                                waitList.push(totalCountQuery.count().done((asyncResult => {
                                    totalCount = asyncResult
                                })))
                            }
                        }
                        _deferred.when.apply(_renderer.default, waitList).done((() => {
                            if (countOnly) {
                                pendingDeferred.resolve(totalCount)
                            } else if (options.requireTotalCount) {
                                pendingDeferred.resolve(items, {
                                    totalCount: totalCount
                                })
                            } else {
                                pendingDeferred.resolve(items)
                            }
                        })).fail((x => {
                            pendingDeferred.reject(x)
                        }))
                    }))
                }
                const CustomStore = _abstract_store.default.inherit({
                    ctor(options) {
                        options = options || {};
                        this.callBase(options);
                        this._useDefaultSearch = !!options.useDefaultSearch || "raw" === options.loadMode;
                        this._loadMode = options.loadMode;
                        this._cacheRawData = false !== options.cacheRawData;
                        this._loadFunc = options.load;
                        this._totalCountFunc = options.totalCount;
                        this._byKeyFunc = options.byKey;
                        this._insertFunc = options.insert;
                        this._updateFunc = options.update;
                        this._removeFunc = options.remove
                    },
                    _clearCache() {
                        delete this.__rawData
                    },
                    createQuery() {
                        throw _errors.errors.Error("E4010")
                    },
                    clearRawDataCache() {
                        this._clearCache()
                    },
                    _totalCountImpl(options) {
                        let d = new _deferred.Deferred;
                        if ("raw" === this._loadMode && !this._totalCountFunc) {
                            runRawLoadWithQuery(d, this, options, true)
                        } else {
                            (function(store, options) {
                                const userFunc = store._totalCountFunc;
                                let userResult;
                                if (!(0, _type.isFunction)(userFunc)) {
                                    throw _errors.errors.Error("E4021")
                                }
                                userResult = userFunc.apply(store, [options]);
                                if (!isPromise(userResult)) {
                                    userResult = Number(userResult);
                                    if (!isFinite(userResult)) {
                                        throwInvalidUserFuncResult("totalCount")
                                    }
                                    userResult = trivialPromise(userResult)
                                }
                                return (0, _deferred.fromPromise)(userResult)
                            })(this, options).done((count => {
                                d.resolve(Number(count))
                            })).fail(createUserFuncFailureHandler(d));
                            d = this._addFailHandlers(d)
                        }
                        return d.promise()
                    },
                    _pushImpl(changes) {
                        if (this.__rawData) {
                            (0, _array_utils.applyBatch)({
                                keyInfo: this,
                                data: this.__rawData,
                                changes: changes
                            })
                        }
                    },
                    _loadImpl(options) {
                        let d = new _deferred.Deferred;
                        if ("raw" === this._loadMode) {
                            runRawLoadWithQuery(d, this, options, false)
                        } else {
                            invokeUserLoad(this, options).done(((data, extra) => {
                                d.resolve(data, extra)
                            })).fail(createUserFuncFailureHandler(d));
                            d = this._addFailHandlers(d)
                        }
                        return d.promise()
                    },
                    _byKeyImpl(key, extraOptions) {
                        const d = new _deferred.Deferred;
                        if (this._byKeyViaLoad()) {
                            this._requireKey();
                            ! function(pendingDeferred, store, key) {
                                runRawLoad(pendingDeferred, store, {}, (rawData => {
                                    const keyExpr = store.key();
                                    let item;
                                    for (let i = 0, len = rawData.length; i < len; i++) {
                                        item = rawData[i];
                                        if ((0, _utils.keysEqual)(keyExpr, store.keyOf(rawData[i]), key)) {
                                            pendingDeferred.resolve(item);
                                            return
                                        }
                                    }
                                    pendingDeferred.reject(_errors.errors.Error("E4009"))
                                }))
                            }(d, this, key)
                        } else {
                            (function(store, key, extraOptions) {
                                const userFunc = store._byKeyFunc;
                                let userResult;
                                ensureRequiredFuncOption("byKey", userFunc);
                                userResult = userFunc.apply(store, [key, extraOptions]);
                                if (!isPromise(userResult)) {
                                    userResult = trivialPromise(userResult)
                                }
                                return (0, _deferred.fromPromise)(userResult)
                            })(this, key, extraOptions).done((obj => {
                                d.resolve(obj)
                            })).fail(createUserFuncFailureHandler(d))
                        }
                        return d.promise()
                    },
                    _byKeyViaLoad() {
                        return "raw" === this._loadMode && !this._byKeyFunc
                    },
                    _insertImpl(values) {
                        const that = this;
                        const userFunc = that._insertFunc;
                        let userResult;
                        const d = new _deferred.Deferred;
                        ensureRequiredFuncOption("insert", userFunc);
                        userResult = userFunc.apply(that, [values]);
                        if (!isPromise(userResult)) {
                            userResult = trivialPromise(userResult)
                        }(0, _deferred.fromPromise)(userResult).done((serverResponse => {
                            if ((0, _config.default)().useLegacyStoreResult) {
                                d.resolve(values, serverResponse)
                            } else {
                                d.resolve(serverResponse || values, that.keyOf(serverResponse))
                            }
                        })).fail(createUserFuncFailureHandler(d));
                        return d.promise()
                    },
                    _updateImpl(key, values) {
                        const userFunc = this._updateFunc;
                        let userResult;
                        const d = new _deferred.Deferred;
                        ensureRequiredFuncOption("update", userFunc);
                        userResult = userFunc.apply(this, [key, values]);
                        if (!isPromise(userResult)) {
                            userResult = trivialPromise(userResult)
                        }(0, _deferred.fromPromise)(userResult).done((serverResponse => {
                            if ((0, _config.default)().useLegacyStoreResult) {
                                d.resolve(key, values)
                            } else {
                                d.resolve(serverResponse || values, key)
                            }
                        })).fail(createUserFuncFailureHandler(d));
                        return d.promise()
                    },
                    _removeImpl(key) {
                        const userFunc = this._removeFunc;
                        let userResult;
                        const d = new _deferred.Deferred;
                        ensureRequiredFuncOption("remove", userFunc);
                        userResult = userFunc.apply(this, [key]);
                        if (!isPromise(userResult)) {
                            userResult = trivialPromise()
                        }(0, _deferred.fromPromise)(userResult).done((() => {
                            d.resolve(key)
                        })).fail(createUserFuncFailureHandler(d));
                        return d.promise()
                    }
                });
                exports.default = CustomStore
            },
        16780:
            /*!******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/data/m_data_helper.js ***!
              \******************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = exports.DataHelperMixin = void 0;
                var _data_source = __webpack_require__( /*! ../../common/data/data_source/data_source */ 68216);
                var _utils = __webpack_require__( /*! ../../common/data/data_source/utils */ 97169);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576);
                var _m_data_controller = (e = __webpack_require__( /*! ../ui/collection/m_data_controller */ 5285), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                const DataHelperMixin = exports.DataHelperMixin = {
                    postCtor() {
                        this.on("disposing", (() => {
                            this._disposeDataSource()
                        }))
                    },
                    _refreshDataSource() {
                        this._initDataSource();
                        this._loadDataSource()
                    },
                    _initDataSource() {
                        let dataSourceOptions = "_getSpecificDataSourceOption" in this ? this._getSpecificDataSourceOption() : this.option("dataSource");
                        let widgetDataSourceOptions;
                        let dataSourceType;
                        this._disposeDataSource();
                        if (dataSourceOptions) {
                            if (dataSourceOptions instanceof _data_source.DataSource) {
                                this._isSharedDataSource = true;
                                this._dataSource = dataSourceOptions
                            } else {
                                widgetDataSourceOptions = "_dataSourceOptions" in this ? this._dataSourceOptions() : {};
                                dataSourceType = this._dataSourceType ? this._dataSourceType() : _data_source.DataSource;
                                dataSourceOptions = (0, _utils.normalizeDataSourceOptions)(dataSourceOptions, {
                                    fromUrlLoadMode: "_dataSourceFromUrlLoadMode" in this && this._dataSourceFromUrlLoadMode()
                                });
                                this._dataSource = new dataSourceType((0, _extend.extend)(true, {}, widgetDataSourceOptions, dataSourceOptions))
                            }
                            if ("_normalizeDataSource" in this) {
                                this._dataSource = this._normalizeDataSource(this._dataSource)
                            }
                            this._addDataSourceHandlers();
                            this._initDataController()
                        }
                    },
                    _initDataController() {
                        var _this$option;
                        const dataController = null === (_this$option = this.option) || void 0 === _this$option ? void 0 : _this$option.call(this, "_dataController");
                        const dataSource = this._dataSource;
                        if (dataController) {
                            this._dataController = dataController
                        } else {
                            this._dataController = new _m_data_controller.default(dataSource)
                        }
                    },
                    _addDataSourceHandlers() {
                        if ("_dataSourceChangedHandler" in this) {
                            this._addDataSourceChangeHandler()
                        }
                        if ("_dataSourceLoadErrorHandler" in this) {
                            this._addDataSourceLoadErrorHandler()
                        }
                        if ("_dataSourceLoadingChangedHandler" in this) {
                            this._addDataSourceLoadingChangedHandler()
                        }
                        this._addReadyWatcher()
                    },
                    _addReadyWatcher() {
                        this.readyWatcher = function(isLoading) {
                            this._ready && this._ready(!isLoading)
                        }.bind(this);
                        this._dataSource.on("loadingChanged", this.readyWatcher)
                    },
                    _addDataSourceChangeHandler() {
                        const dataSource = this._dataSource;
                        this._proxiedDataSourceChangedHandler = function(e) {
                            this._dataSourceChangedHandler(dataSource.items(), e)
                        }.bind(this);
                        dataSource.on("changed", this._proxiedDataSourceChangedHandler)
                    },
                    _addDataSourceLoadErrorHandler() {
                        this._proxiedDataSourceLoadErrorHandler = this._dataSourceLoadErrorHandler.bind(this);
                        this._dataSource.on("loadError", this._proxiedDataSourceLoadErrorHandler)
                    },
                    _addDataSourceLoadingChangedHandler() {
                        this._proxiedDataSourceLoadingChangedHandler = this._dataSourceLoadingChangedHandler.bind(this);
                        this._dataSource.on("loadingChanged", this._proxiedDataSourceLoadingChangedHandler)
                    },
                    _loadDataSource() {
                        const dataSource = this._dataSource;
                        if (dataSource) {
                            if (dataSource.isLoaded()) {
                                this._proxiedDataSourceChangedHandler && this._proxiedDataSourceChangedHandler()
                            } else {
                                dataSource.load()
                            }
                        }
                    },
                    _loadSingle(key, value) {
                        key = "this" === key ? this._dataSource.key() || "this" : key;
                        return this._dataSource.loadSingle(key, value)
                    },
                    _isLastPage() {
                        return !this._dataSource || this._dataSource.isLastPage() || !this._dataSource._pageSize
                    },
                    _isDataSourceLoading() {
                        return this._dataSource && this._dataSource.isLoading()
                    },
                    _disposeDataSource() {
                        if (this._dataSource) {
                            if (this._isSharedDataSource) {
                                delete this._isSharedDataSource;
                                this._proxiedDataSourceChangedHandler && this._dataSource.off("changed", this._proxiedDataSourceChangedHandler);
                                this._proxiedDataSourceLoadErrorHandler && this._dataSource.off("loadError", this._proxiedDataSourceLoadErrorHandler);
                                this._proxiedDataSourceLoadingChangedHandler && this._dataSource.off("loadingChanged", this._proxiedDataSourceLoadingChangedHandler);
                                if (this._dataSource._eventsStrategy) {
                                    this._dataSource._eventsStrategy.off("loadingChanged", this.readyWatcher)
                                }
                            } else {
                                this._dataSource.dispose()
                            }
                            delete this._dataSource;
                            delete this._proxiedDataSourceChangedHandler;
                            delete this._proxiedDataSourceLoadErrorHandler;
                            delete this._proxiedDataSourceLoadingChangedHandler
                        }
                    },
                    getDataSource() {
                        return this._dataSource || null
                    }
                };
                exports.default = DataHelperMixin
            },
        17410:
            /*!************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/data/m_endpoint_selector.js ***!
              \************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _errors = (e = __webpack_require__( /*! ../../core/errors */ 87129), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                var _window = __webpack_require__( /*! ../../core/utils/window */ 3104);
                const window = (0, _window.getWindow)();
                let IS_WINJS_ORIGIN;
                let IS_LOCAL_ORIGIN;
                const EndpointSelector = function(config) {
                    this.config = config;
                    IS_WINJS_ORIGIN = "ms-appx:" === window.location.protocol;
                    IS_LOCAL_ORIGIN = (url = window.location.hostname, /^(localhost$|127\.)/i.test(url));
                    var url
                };
                EndpointSelector.prototype = {
                    urlFor(key) {
                        const bag = this.config[key];
                        if (!bag) {
                            throw _errors.default.Error("E0006")
                        }
                        if (bag.production) {
                            if (IS_WINJS_ORIGIN && !Debug.debuggerEnabled || !IS_WINJS_ORIGIN && !IS_LOCAL_ORIGIN) {
                                return bag.production
                            }
                        }
                        return bag.local
                    }
                };
                exports.default = EndpointSelector
            },
        5930:
            /*!*************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/data/m_errors.js ***!
              \*************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.setErrorHandler = exports.handleError = exports.errors = exports.errorHandler = void 0;
                var _errors = _interopRequireDefault(__webpack_require__( /*! ../../core/errors */ 87129));
                var _error = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/error */ 67264));

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                exports.errors = (0, _error.default)(_errors.default.ERROR_MESSAGES, {
                    E4000: "[DevExpress.data]: {0}",
                    E4001: "Unknown aggregating function is detected: '{0}'",
                    E4002: "Unsupported OData protocol version is used",
                    E4003: "Unknown filter operation is used: {0}",
                    E4004: "The thenby() method is called before the sortby() method",
                    E4005: "Store requires a key expression for this operation",
                    E4006: "ArrayStore 'data' option must be an array",
                    E4007: "Compound keys cannot be auto-generated",
                    E4008: "Attempt to insert an item with a duplicated key",
                    E4009: "Data item cannot be found",
                    E4010: "CustomStore does not support creating queries",
                    E4011: "Custom Store method is not implemented or is not a function: {0}",
                    E4012: "Custom Store method returns an invalid value: {0}",
                    E4013: "Local Store requires the 'name' configuration option is specified",
                    E4014: "Unknown data type is specified for ODataStore: {0}",
                    E4015: "Unknown entity name or alias is used: {0}",
                    E4016: "The compileSetter(expr) method is called with 'self' passed as a parameter",
                    E4017: "Keys cannot be modified",
                    E4018: "The server has returned a non-numeric value in a response to an item count request",
                    E4019: "Mixing of group operators inside a single group of filter expression is not allowed",
                    E4020: "Unknown store type is detected: {0}",
                    E4021: "The server response does not provide the totalCount value",
                    E4022: "The server response does not provide the groupCount value",
                    E4023: "Could not parse the following XML: {0}",
                    E4024: "String function {0} cannot be used with the data field {1} of type {2}.",
                    W4000: "Data returned from the server has an incorrect structure",
                    W4001: 'The {0} field is listed in both "keyType" and "fieldTypes". The value of "fieldTypes" is used.',
                    W4002: "Data loading has failed for some cells due to the following error: {0}"
                });
                let errorHandler = exports.errorHandler = null;
                exports.handleError = function(error) {
                    var _errorHandler;
                    null === (_errorHandler = errorHandler) || void 0 === _errorHandler || _errorHandler(error)
                };
                exports.setErrorHandler = handler => exports.errorHandler = errorHandler = handler
            },
        33260:
            /*!******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/data/m_local_store.js ***!
              \******************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/core/events_engine */ 92774));
                var _array_store = _interopRequireDefault(__webpack_require__( /*! ../../common/data/array_store */ 80556));
                var _errors = __webpack_require__( /*! ../../common/data/errors */ 82812);
                var _class = _interopRequireDefault(__webpack_require__( /*! ../../core/class */ 55620));
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../core/dom_adapter */ 64960));
                var _window = __webpack_require__( /*! ../../core/utils/window */ 3104);

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const window = (0, _window.getWindow)();
                const {
                    abstract: abstract
                } = _class.default;
                const LocalStoreBackend = _class.default.inherit({
                    ctor(store, storeOptions) {
                        this._store = store;
                        this._dirty = !!storeOptions.data;
                        this.save();
                        const immediate = this._immediate = storeOptions.immediate;
                        const flushInterval = Math.max(100, storeOptions.flushInterval || 1e4);
                        if (!immediate) {
                            const saveProxy = this.save.bind(this);
                            setInterval(saveProxy, flushInterval);
                            _events_engine.default.on(window, "beforeunload", saveProxy);
                            if (window.cordova) {
                                _dom_adapter.default.listen(_dom_adapter.default.getDocument(), "pause", saveProxy, false)
                            }
                        }
                    },
                    notifyChanged() {
                        this._dirty = true;
                        if (this._immediate) {
                            this.save()
                        }
                    },
                    load() {
                        this._store._array = this._loadImpl();
                        this._dirty = false
                    },
                    save() {
                        if (!this._dirty) {
                            return
                        }
                        this._saveImpl(this._store._array);
                        this._dirty = false
                    },
                    _loadImpl: abstract,
                    _saveImpl: abstract
                });
                const DomLocalStoreBackend = LocalStoreBackend.inherit({
                    ctor(store, storeOptions) {
                        const {
                            name: name
                        } = storeOptions;
                        if (!name) {
                            throw _errors.errors.Error("E4013")
                        }
                        this._key = `dx-data-localStore-${name}`;
                        this.callBase(store, storeOptions)
                    },
                    _loadImpl() {
                        const raw = window.localStorage.getItem(this._key);
                        if (raw) {
                            return JSON.parse(raw)
                        }
                        return []
                    },
                    _saveImpl(array) {
                        if (!array.length) {
                            window.localStorage.removeItem(this._key)
                        } else {
                            window.localStorage.setItem(this._key, JSON.stringify(array))
                        }
                    }
                });
                const localStoreBackends = {
                    dom: DomLocalStoreBackend
                };
                const LocalStore = _array_store.default.inherit({
                    ctor(options) {
                        if ("string" === typeof options) {
                            options = {
                                name: options
                            }
                        } else {
                            options = options || {}
                        }
                        this.callBase(options);
                        this._backend = new localStoreBackends[options.backend || "dom"](this, options);
                        this._backend.load()
                    },
                    _clearCache() {
                        this._backend.load()
                    },
                    clear() {
                        this.callBase();
                        this._backend.notifyChanged()
                    },
                    _insertImpl(values) {
                        const b = this._backend;
                        return this.callBase(values).done(b.notifyChanged.bind(b))
                    },
                    _updateImpl(key, values) {
                        const b = this._backend;
                        return this.callBase(key, values).done(b.notifyChanged.bind(b))
                    },
                    _removeImpl(key) {
                        const b = this._backend;
                        return this.callBase(key).done(b.notifyChanged.bind(b))
                    }
                }, "local");
                exports.default = LocalStore
            },
        45149:
            /*!************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/data/m_query.js ***!
              \************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _query_implementation = __webpack_require__( /*! ../../common/data/query_implementation */ 84816);
                exports.default = function() {
                    const impl = Array.isArray(arguments[0]) ? "array" : "remote";
                    return _query_implementation.queryImpl[impl].apply(this, arguments)
                }
            },
        51324:
            /*!*******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/data/m_remote_query.js ***!
              \*******************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _array_query = _interopRequireDefault(__webpack_require__( /*! ../../common/data/array_query */ 65517));
                var _errors = __webpack_require__( /*! ../../common/data/errors */ 82812);
                var _query_adapters = _interopRequireDefault(__webpack_require__( /*! ../../common/data/query_adapters */ 5842));
                var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 87739);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 21274);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 11528);

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const remoteQueryImpl = function(url, queryOptions, tasks) {
                    tasks = tasks || [];
                    queryOptions = queryOptions || {};
                    const createTask = function(name, args) {
                        return {
                            name: name,
                            args: args
                        }
                    };
                    const exec = function(executorTask) {
                        const d = new _deferred.Deferred;
                        let _adapterFactory;
                        let _adapter;
                        let _taskQueue;
                        let _currentTask;
                        let _mergedSortArgs;
                        const rejectWithNotify = function(error) {
                            const handler = queryOptions.errorHandler;
                            if (handler) {
                                handler(error)
                            }(0, _errors.handleError)(error);
                            d.reject(error)
                        };

                        function mergeSortTask(task) {
                            switch (task.name) {
                                case "sortBy":
                                    _mergedSortArgs = [task.args];
                                    return true;
                                case "thenBy":
                                    if (!_mergedSortArgs) {
                                        throw _errors.errors.Error("E4004")
                                    }
                                    _mergedSortArgs.push(task.args);
                                    return true
                            }
                            return false
                        }
                        try {
                            _adapterFactory = queryOptions.adapter;
                            if (!(0, _type.isFunction)(_adapterFactory)) {
                                _adapterFactory = _query_adapters.default[_adapterFactory]
                            }
                            _adapter = _adapterFactory(queryOptions);
                            _taskQueue = [].concat(tasks).concat(executorTask);
                            const {
                                optimize: optimize
                            } = _adapter;
                            if (optimize) {
                                optimize(_taskQueue)
                            }
                            while (_taskQueue.length) {
                                _currentTask = _taskQueue[0];
                                if (!mergeSortTask(_currentTask)) {
                                    if (_mergedSortArgs) {
                                        _taskQueue.unshift(createTask("multiSort", [_mergedSortArgs]));
                                        _mergedSortArgs = null;
                                        continue
                                    }
                                    if ("enumerate" !== String(_currentTask.name)) {
                                        if (!_adapter[_currentTask.name] || false === _adapter[_currentTask.name].apply(_adapter, _currentTask.args)) {
                                            break
                                        }
                                    }
                                }
                                _taskQueue.shift()
                            }! function() {
                                const head = _taskQueue[0];
                                const unmergedTasks = [];
                                if (head && "multiSort" === head.name) {
                                    _taskQueue.shift();
                                    (0, _iterator.each)(head.args[0], (function() {
                                        unmergedTasks.push(createTask(unmergedTasks.length ? "thenBy" : "sortBy", this))
                                    }))
                                }
                                _taskQueue = unmergedTasks.concat(_taskQueue)
                            }();
                            _adapter.exec(url).done(((result, extra) => {
                                if (!_taskQueue.length) {
                                    d.resolve(result, extra)
                                } else {
                                    let clientChain = (0, _array_query.default)(result, {
                                        errorHandler: queryOptions.errorHandler
                                    });
                                    (0, _iterator.each)(_taskQueue, (function() {
                                        clientChain = clientChain[this.name].apply(clientChain, this.args)
                                    }));
                                    clientChain.done(d.resolve).fail(d.reject)
                                }
                            })).fail(rejectWithNotify)
                        } catch (x) {
                            rejectWithNotify(x)
                        }
                        return d.promise()
                    };
                    const query = {};
                    (0, _iterator.each)(["sortBy", "thenBy", "filter", "slice", "select", "groupBy"], (function() {
                        const name = String(this);
                        query[name] = function() {
                            return remoteQueryImpl(url, queryOptions, tasks.concat(createTask(name, arguments)))
                        }
                    }));
                    (0, _iterator.each)(["count", "min", "max", "sum", "avg", "aggregate", "enumerate"], (function() {
                        const name = String(this);
                        query[name] = function() {
                            return exec.call(this, createTask(name, arguments))
                        }
                    }));
                    return query
                };
                exports.default = remoteQueryImpl
            },
        41943:
            /*!*******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/data/m_store_helper.js ***!
              \*******************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _array_query = (e = __webpack_require__( /*! ../../common/data/array_query */ 65517), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                var _utils = __webpack_require__( /*! ../../common/data/utils */ 89358);
                var _common = __webpack_require__( /*! ../../core/utils/common */ 17781);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 21274);

                function multiLevelGroup(query, groupInfo) {
                    query = query.groupBy(groupInfo[0].selector);
                    if (groupInfo.length > 1) {
                        query = query.select((g => (0, _extend.extend)({}, g, {
                            items: multiLevelGroup((0, _array_query.default)(g.items), groupInfo.slice(1)).toArray()
                        })))
                    }
                    return query
                }

                function arrangeSortingInfo(groupInfo, sortInfo) {
                    const filteredGroup = [];
                    (0, _iterator.each)(groupInfo, ((_, group) => {
                        const collision = (0, _common.grep)(sortInfo, (sort => group.selector === sort.selector));
                        if (collision.length < 1) {
                            filteredGroup.push(group)
                        }
                    }));
                    return filteredGroup.concat(sortInfo)
                }
                exports.default = {
                    multiLevelGroup: multiLevelGroup,
                    arrangeSortingInfo: arrangeSortingInfo,
                    queryByOptions: function(query, options, isCountQuery) {
                        var _options;
                        options = options || {};
                        const {
                            filter: filter
                        } = options;
                        if (null !== (_options = options) && void 0 !== _options && _options.langParams) {
                            var _query$setLangParams, _query;
                            null === (_query$setLangParams = (_query = query).setLangParams) || void 0 === _query$setLangParams || _query$setLangParams.call(_query, options.langParams)
                        }
                        if (filter) {
                            query = query.filter(filter)
                        }
                        if (isCountQuery) {
                            return query
                        }
                        let {
                            sort: sort
                        } = options;
                        const {
                            select: select
                        } = options;
                        let {
                            group: group
                        } = options;
                        const {
                            skip: skip
                        } = options;
                        const {
                            take: take
                        } = options;
                        if (group) {
                            group = (0, _utils.normalizeSortingInfo)(group);
                            group.keepInitialKeyOrder = !!options.group.keepInitialKeyOrder
                        }
                        if (sort || group) {
                            sort = (0, _utils.normalizeSortingInfo)(sort || []);
                            if (group && !group.keepInitialKeyOrder) {
                                sort = arrangeSortingInfo(group, sort)
                            }(0, _iterator.each)(sort, (function(index) {
                                query = query[index ? "thenBy" : "sortBy"](this.selector, this.desc, this.compare)
                            }))
                        }
                        if (select) {
                            query = query.select(select)
                        }
                        if (group) {
                            query = multiLevelGroup(query, group)
                        }
                        if (take || skip) {
                            query = query.slice(skip || 0, take)
                        }
                        return query
                    }
                }
            },
        30912:
            /*!************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/data/m_utils.js ***!
              \************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.errorMessageFromXhr = exports.base64_encode = exports.aggregators = exports.XHR_ERROR_UNLOAD = void 0;
                exports.isConjunctiveOperator = function(condition) {
                    return /^(and|&&|&)$/i.test(condition)
                };
                exports.isDisjunctiveOperator = function(condition) {
                    return /^(or|\|\||\|)$/i.test(condition)
                };
                exports.rejectedPromise = exports.processRequestResultLock = exports.normalizeSortingInfo = exports.normalizeBinaryCriterion = exports.keysEqual = exports.isUniformEqualsByOr = exports.isUnaryOperation = exports.isGroupCriterion = void 0;
                exports.throttleChanges = function(func, timeout) {
                    let cache = [];
                    const throttled = function(func, timeout) {
                        let timeoutId;
                        return function() {
                            if (!timeoutId) {
                                timeoutId = setTimeout((() => {
                                    timeoutId = void 0;
                                    func.call(this)
                                }), (0, _type.isFunction)(timeout) ? timeout() : timeout)
                            }
                            return timeoutId
                        }
                    }((function() {
                        func.call(this, cache);
                        cache = []
                    }), timeout);
                    return function(changes) {
                        if (Array.isArray(changes)) {
                            cache.push(...changes)
                        }
                        return throttled.call(this, cache)
                    }
                };
                exports.trivialPromise = void 0;
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../core/dom_adapter */ 64960));
                var _common = __webpack_require__( /*! ../../core/utils/common */ 17781);
                var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 87739);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 21274);
                var _ready_callbacks = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/ready_callbacks */ 3122));
                var _type = __webpack_require__( /*! ../../core/utils/type */ 11528);
                var _window = __webpack_require__( /*! ../../core/utils/window */ 3104);

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const ready = _ready_callbacks.default.add;
                const XHR_ERROR_UNLOAD = exports.XHR_ERROR_UNLOAD = "DEVEXTREME_XHR_ERROR_UNLOAD";
                exports.normalizeBinaryCriterion = function(crit) {
                    return [crit[0], crit.length < 3 ? "=" : String(crit[1]).toLowerCase(), crit.length < 2 ? true : crit[crit.length - 1]]
                };
                exports.normalizeSortingInfo = function(info) {
                    if (!Array.isArray(info)) {
                        info = [info]
                    }
                    return (0, _iterator.map)(info, (i => {
                        const result = {
                            selector: (0, _type.isFunction)(i) || "string" === typeof i ? i : i.getter || i.field || i.selector,
                            desc: !!(i.desc || "d" === String(i.dir).charAt(0).toLowerCase())
                        };
                        if (i.compare) {
                            result.compare = i.compare
                        }
                        return result
                    }))
                };
                exports.errorMessageFromXhr = function() {
                    const textStatusMessages = {
                        timeout: "Network connection timeout",
                        error: "Unspecified network error",
                        parsererror: "Unexpected server response"
                    };
                    let unloading;
                    ready((() => {
                        const window = (0, _window.getWindow)();
                        _dom_adapter.default.listen(window, "beforeunload", (() => {
                            unloading = true
                        }))
                    }));
                    return function(xhr, textStatus) {
                        if (unloading) {
                            return XHR_ERROR_UNLOAD
                        }
                        if (xhr.status < 400) {
                            return function(textStatus) {
                                let result = textStatusMessages[textStatus];
                                if (!result) {
                                    return textStatus
                                }
                                return result
                            }(textStatus)
                        }
                        return xhr.statusText
                    }
                }();
                exports.aggregators = {
                    count: {
                        seed: 0,
                        step: count => 1 + count
                    },
                    sum: {
                        seed: 0,
                        step: (sum, item) => sum + item
                    },
                    min: {
                        step: (min, item) => item < min ? item : min
                    },
                    max: {
                        step: (max, item) => item > max ? item : max
                    },
                    avg: {
                        seed: [0, 0],
                        step: (pair, value) => [pair[0] + value, pair[1] + 1],
                        finalize: pair => pair[1] ? pair[0] / pair[1] : NaN
                    }
                };
                exports.processRequestResultLock = function() {
                    let lockCount = 0;
                    let lockDeferred;
                    return {
                        obtain: function() {
                            if (0 === lockCount) {
                                lockDeferred = new _deferred.Deferred
                            }
                            lockCount++
                        },
                        release: function() {
                            lockCount--;
                            if (lockCount < 1) {
                                lockDeferred.resolve()
                            }
                        },
                        promise: function() {
                            const deferred = 0 === lockCount ? (new _deferred.Deferred).resolve() : lockDeferred;
                            return deferred.promise()
                        },
                        reset: function() {
                            lockCount = 0;
                            if (lockDeferred) {
                                lockDeferred.resolve()
                            }
                        }
                    }
                }();
                exports.keysEqual = function(keyExpr, key1, key2) {
                    if (Array.isArray(keyExpr)) {
                        const names = (0, _iterator.map)(key1, ((v, k) => k));
                        let name;
                        for (let i = 0; i < names.length; i++) {
                            name = names[i];
                            if (!(0, _common.equalByValue)(key1[name], key2[name], {
                                    strict: false
                                })) {
                                return false
                            }
                        }
                        return true
                    }
                    return (0, _common.equalByValue)(key1, key2, {
                        strict: false
                    })
                };
                exports.base64_encode = function(input) {
                    if (!Array.isArray(input)) {
                        input = function(str) {
                            const bytes = [];
                            let code;
                            let i;
                            for (i = 0; i < str.length; i++) {
                                code = str.charCodeAt(i);
                                if (code < 128) {
                                    bytes.push(code)
                                } else if (code < 2048) {
                                    bytes.push(192 + (code >> 6), 128 + (63 & code))
                                } else if (code < 65536) {
                                    bytes.push(224 + (code >> 12), 128 + (code >> 6 & 63), 128 + (63 & code))
                                } else if (code < 2097152) {
                                    bytes.push(240 + (code >> 18), 128 + (code >> 12 & 63), 128 + (code >> 6 & 63), 128 + (63 & code))
                                }
                            }
                            return bytes
                        }(String(input))
                    }
                    let result = "";

                    function getBase64Char(index) {
                        return "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(index)
                    }
                    for (let i = 0; i < input.length; i += 3) {
                        const octet1 = input[i];
                        const octet2 = input[i + 1];
                        const octet3 = input[i + 2];
                        result += (0, _iterator.map)([octet1 >> 2, (3 & octet1) << 4 | octet2 >> 4, isNaN(octet2) ? 64 : (15 & octet2) << 2 | octet3 >> 6, isNaN(octet3) ? 64 : 63 & octet3], getBase64Char).join("")
                    }
                    return result
                };
                exports.isUnaryOperation = function(crit) {
                    return "!" === crit[0] && Array.isArray(crit[1])
                };
                exports.isUniformEqualsByOr = function(crit) {
                    if (crit.length > 2 && Array.isArray(crit[0]) && "or" === crit[1] && "string" === typeof crit[0][0] && "=" === crit[0][1]) {
                        const [prop] = crit[0];
                        return !crit.find(((el, i) => i % 2 !== 0 ? "or" !== el : !Array.isArray(el) || 3 !== el.length || el[0] !== prop || "=" !== el[1]))
                    }
                    return false
                };
                exports.isGroupCriterion = function(crit) {
                    const first = crit[0];
                    const second = crit[1];
                    if (Array.isArray(first)) {
                        return true
                    }
                    if ((0, _type.isFunction)(first)) {
                        if (Array.isArray(second) || (0, _type.isFunction)(second) || (value = second, "and" === value || "or" === value)) {
                            return true
                        }
                    }
                    var value;
                    return false
                };
                exports.trivialPromise = function() {
                    const d = new _deferred.Deferred;
                    return d.resolve.apply(d, arguments).promise()
                };
                exports.rejectedPromise = function() {
                    const d = new _deferred.Deferred;
                    return d.reject.apply(d, arguments).promise()
                }
            },
        58824:
            /*!********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/data/odata/m_context.js ***!
              \********************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                __webpack_require__( /*! ../../../common/data/odata/query_adapter */ 65001);
                var _request_dispatcher = _interopRequireDefault(__webpack_require__( /*! ../../../common/data/odata/request_dispatcher */ 26098));
                var _store = _interopRequireDefault(__webpack_require__( /*! ../../../common/data/odata/store */ 29284));
                var _class = _interopRequireDefault(__webpack_require__( /*! ../../../core/class */ 55620));
                var _deferred = __webpack_require__( /*! ../../../core/utils/deferred */ 87739);
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576);
                var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274);
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528);
                var _m_errors = __webpack_require__( /*! ../m_errors */ 5930);
                var _m_utils = __webpack_require__( /*! ./m_utils */ 14606);

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const ODataContext = _class.default.inherit({
                    ctor(options) {
                        this._requestDispatcher = new _request_dispatcher.default(options);
                        this._errorHandler = options.errorHandler;
                        (0, _iterator.each)(options.entities || [], ((entityAlias, entityOptions) => {
                            this[entityAlias] = new _store.default((0, _extend.extend)({}, options, {
                                url: `${this._requestDispatcher.url}/${encodeURIComponent(entityOptions.name||entityAlias)}`
                            }, entityOptions))
                        }))
                    },
                    get(operationName, params) {
                        return this.invoke(operationName, params, "GET")
                    },
                    invoke(operationName) {
                        let params = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
                        let httpMethod = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : "POST";
                        httpMethod = httpMethod.toLowerCase();
                        const d = new _deferred.Deferred;
                        let url = `${this._requestDispatcher.url}/${encodeURIComponent(operationName)}`;
                        let payload;
                        if (4 === this.version()) {
                            if ("get" === httpMethod) {
                                url = (0, _m_utils.formatFunctionInvocationUrl)(url, (0, _m_utils.escapeServiceOperationParams)(params, this.version()));
                                params = null
                            } else if ("post" === httpMethod) {
                                payload = params;
                                params = null
                            }
                        }(0, _deferred.when)(this._requestDispatcher.sendRequest(url, httpMethod, (0, _m_utils.escapeServiceOperationParams)(params, this.version()), payload)).done((r => {
                            if ((0, _type.isPlainObject)(r) && operationName in r) {
                                r = r[operationName]
                            }
                            d.resolve(r)
                        })).fail(this._errorHandler).fail(_m_errors.handleError).fail(d.reject);
                        return d.promise()
                    },
                    objectLink(entityAlias, key) {
                        const store = this[entityAlias];
                        if (!store) {
                            throw _m_errors.errors.Error("E4015", entityAlias)
                        }
                        if (!(0, _type.isDefined)(key)) {
                            return null
                        }
                        return {
                            __metadata: {
                                uri: store._byKeyUrl(key)
                            }
                        }
                    },
                    version() {
                        return this._requestDispatcher.version
                    }
                });
                exports.default = ODataContext
            },
        61575:
            /*!**************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/data/odata/m_query_adapter.js ***!
              \**************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.odata = void 0;
                var _query_adapters = _interopRequireDefault(__webpack_require__( /*! ../../../common/data/query_adapters */ 5842));
                var _config = _interopRequireDefault(__webpack_require__( /*! ../../../core/config */ 66636));
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576);
                var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274);
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528);
                var _m_errors = __webpack_require__( /*! ../m_errors */ 5930);
                var _m_utils = __webpack_require__( /*! ../m_utils */ 30912);
                var _m_utils2 = __webpack_require__( /*! ./m_utils */ 14606);

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const STRING_FUNCTIONS = ["contains", "notcontains", "startswith", "endswith"];
                const compileCriteria = (() => {
                    let protocolVersion;
                    let forceLowerCase;
                    let fieldTypes;
                    const createBinaryOperationFormatter = op => (prop, val) => `${prop} ${op} ${val}`;
                    const createStringFuncFormatter = (op, reverse) => (prop, val) => {
                        const bag = [op, "("];
                        if (forceLowerCase) {
                            prop = -1 === prop.indexOf("tolower(") ? `tolower(${prop})` : prop;
                            val = val.toLowerCase()
                        }
                        if (reverse) {
                            bag.push(val, ",", prop)
                        } else {
                            bag.push(prop, ",", val)
                        }
                        bag.push(")");
                        return bag.join("")
                    };
                    const formatters = {
                        "=": createBinaryOperationFormatter("eq"),
                        "<>": createBinaryOperationFormatter("ne"),
                        ">": createBinaryOperationFormatter("gt"),
                        ">=": createBinaryOperationFormatter("ge"),
                        "<": createBinaryOperationFormatter("lt"),
                        "<=": createBinaryOperationFormatter("le"),
                        startswith: createStringFuncFormatter("startswith"),
                        endswith: createStringFuncFormatter("endswith")
                    };
                    const formattersV2 = (0, _extend.extend)({}, formatters, {
                        contains: createStringFuncFormatter("substringof", true),
                        notcontains: createStringFuncFormatter("not substringof", true)
                    });
                    const formattersV4 = (0, _extend.extend)({}, formatters, {
                        contains: createStringFuncFormatter("contains"),
                        notcontains: createStringFuncFormatter("not contains")
                    });
                    const compileBinary = criteria => {
                        var _fieldTypes;
                        criteria = (0, _m_utils.normalizeBinaryCriterion)(criteria);
                        const op = criteria[1];
                        const fieldName = criteria[0];
                        const fieldType = fieldTypes && fieldTypes[fieldName];
                        if (fieldType && (name = op, STRING_FUNCTIONS.some((funcName => funcName === name))) && "String" !== fieldType) {
                            throw new _m_errors.errors.Error("E4024", op, fieldName, fieldType)
                        }
                        var name;
                        const formatters = 4 === protocolVersion ? formattersV4 : formattersV2;
                        const formatter = formatters[op.toLowerCase()];
                        if (!formatter) {
                            throw _m_errors.errors.Error("E4003", op)
                        }
                        let value = criteria[2];
                        if (null !== (_fieldTypes = fieldTypes) && void 0 !== _fieldTypes && _fieldTypes[fieldName]) {
                            value = (0, _m_utils2.convertPrimitiveValue)(fieldTypes[fieldName], value)
                        }
                        return formatter((0, _m_utils2.serializePropName)(fieldName), (0, _m_utils2.serializeValue)(value, protocolVersion))
                    };
                    const compileGroup = criteria => {
                        const bag = [];
                        let groupOperator;
                        let nextGroupOperator;
                        (0, _iterator.each)(criteria, (function(index, criterion) {
                            if (Array.isArray(criterion)) {
                                if (bag.length > 1 && groupOperator !== nextGroupOperator) {
                                    throw new _m_errors.errors.Error("E4019")
                                }
                                bag.push(`(${compileCore(criterion)})`);
                                groupOperator = nextGroupOperator;
                                nextGroupOperator = "and"
                            } else {
                                nextGroupOperator = (0, _m_utils.isConjunctiveOperator)(this) ? "and" : "or"
                            }
                        }));
                        return bag.join(` ${groupOperator} `)
                    };
                    const compileCore = criteria => {
                        if (Array.isArray(criteria[0])) {
                            return compileGroup(criteria)
                        }
                        if ((0, _m_utils.isUnaryOperation)(criteria)) {
                            return (criteria => {
                                const op = criteria[0];
                                const crit = compileCore(criteria[1]);
                                if ("!" === op) {
                                    return `not (${crit})`
                                }
                                throw _m_errors.errors.Error("E4003", op)
                            })(criteria)
                        }
                        return compileBinary(criteria)
                    };
                    return (criteria, version, types, filterToLower) => {
                        fieldTypes = types;
                        forceLowerCase = filterToLower ?? (0, _config.default)().oDataFilterToLower;
                        protocolVersion = version;
                        return compileCore(criteria)
                    }
                })();
                const createODataQueryAdapter = queryOptions => {
                    let _sorting = [];
                    const _criteria = [];
                    const _expand = queryOptions.expand;
                    let _select;
                    let _skip;
                    let _take;
                    let _countQuery;
                    const _oDataVersion = queryOptions.version || 4;
                    const hasSlice = () => _skip || void 0 !== _take;
                    const hasFunction = criterion => {
                        for (let i = 0; i < criterion.length; i++) {
                            if ((0, _type.isFunction)(criterion[i])) {
                                return true
                            }
                            if (Array.isArray(criterion[i]) && hasFunction(criterion[i])) {
                                return true
                            }
                        }
                        return false
                    };
                    const requestData = () => {
                        const result = {};
                        if (!_countQuery) {
                            if (_sorting.length) {
                                result.$orderby = _sorting.join(",")
                            }
                            if (_skip) {
                                result.$skip = _skip
                            }
                            if (void 0 !== _take) {
                                result.$top = _take
                            }
                            result.$select = (0, _m_utils2.generateSelect)(_oDataVersion, _select) || void 0;
                            result.$expand = (0, _m_utils2.generateExpand)(_oDataVersion, _expand, _select) || void 0
                        }
                        if (_criteria.length) {
                            const criteria = _criteria.length < 2 ? _criteria[0] : _criteria;
                            const fieldTypes = null === queryOptions || void 0 === queryOptions ? void 0 : queryOptions.fieldTypes;
                            const filterToLower = null === queryOptions || void 0 === queryOptions ? void 0 : queryOptions.filterToLower;
                            result.$filter = compileCriteria(criteria, _oDataVersion, fieldTypes, filterToLower)
                        }
                        if (_countQuery) {
                            result.$top = 0
                        }
                        if (queryOptions.requireTotalCount || _countQuery) {
                            if (4 !== _oDataVersion) {
                                result.$inlinecount = "allpages"
                            } else {
                                result.$count = "true"
                            }
                        }
                        return result
                    };
                    return {
                        optimize: tasks => {
                            let selectIndex = -1;
                            for (let i = 0; i < tasks.length; i++) {
                                if ("select" === tasks[i].name) {
                                    selectIndex = i;
                                    break
                                }
                            }
                            if (selectIndex < 0 || !(0, _type.isFunction)(tasks[selectIndex].args[0])) {
                                return
                            }
                            const nextTask = tasks[1 + selectIndex];
                            if (!nextTask || "slice" !== nextTask.name) {
                                return
                            }
                            tasks[1 + selectIndex] = tasks[selectIndex];
                            tasks[selectIndex] = nextTask
                        },
                        exec: url => (0, _m_utils2.sendRequest)(_oDataVersion, {
                            url: url,
                            params: (0, _extend.extend)(requestData(), null === queryOptions || void 0 === queryOptions ? void 0 : queryOptions.params)
                        }, {
                            beforeSend: queryOptions.beforeSend,
                            jsonp: queryOptions.jsonp,
                            withCredentials: queryOptions.withCredentials,
                            countOnly: _countQuery,
                            deserializeDates: queryOptions.deserializeDates,
                            fieldTypes: queryOptions.fieldTypes,
                            isPaged: isFinite(_take)
                        }),
                        multiSort(args) {
                            let rules;
                            if (hasSlice()) {
                                return false
                            }
                            for (let i = 0; i < args.length; i++) {
                                const getter = args[i][0];
                                const desc = !!args[i][1];
                                let rule;
                                if ("string" !== typeof getter) {
                                    return false
                                }
                                rule = (0, _m_utils2.serializePropName)(getter);
                                if (desc) {
                                    rule += " desc"
                                }
                                rules = rules || [];
                                rules.push(rule)
                            }
                            _sorting = rules
                        },
                        slice(skipCount, takeCount) {
                            if (hasSlice()) {
                                return false
                            }
                            _skip = skipCount;
                            _take = takeCount
                        },
                        filter(criterion) {
                            if (hasSlice()) {
                                return false
                            }
                            if (!Array.isArray(criterion)) {
                                criterion = [].slice.call(arguments)
                            }
                            if (hasFunction(criterion)) {
                                return false
                            }
                            if (_criteria.length) {
                                _criteria.push("and")
                            }
                            _criteria.push(criterion)
                        },
                        select(expr) {
                            if (_select || (0, _type.isFunction)(expr)) {
                                return false
                            }
                            if (!Array.isArray(expr)) {
                                expr = [].slice.call(arguments)
                            }
                            _select = expr
                        },
                        count: () => _countQuery = true
                    }
                };
                _query_adapters.default.odata = createODataQueryAdapter;
                exports.odata = createODataQueryAdapter
            },
        8920:
            /*!*******************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/data/odata/m_request_dispatcher.js ***!
              \*******************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                __webpack_require__( /*! ../../../common/data/odata/query_adapter */ 65001);
                var _utils = __webpack_require__( /*! ../../../common/data/odata/utils */ 8056);
                exports.default = class {
                    constructor(options) {
                        options = options || {};
                        this._url = String(options.url).replace(/\/+$/, "");
                        this._beforeSend = options.beforeSend;
                        this._jsonp = options.jsonp;
                        this._version = options.version || 4;
                        this._withCredentials = options.withCredentials;
                        this._deserializeDates = options.deserializeDates;
                        this._filterToLower = options.filterToLower
                    }
                    sendRequest(url, method, params, payload) {
                        return (0, _utils.sendRequest)(this.version, {
                            url: url,
                            method: method,
                            params: params || {},
                            payload: payload
                        }, {
                            beforeSend: this._beforeSend,
                            jsonp: this._jsonp,
                            withCredentials: this._withCredentials,
                            deserializeDates: this._deserializeDates
                        })
                    }
                    get version() {
                        return this._version
                    }
                    get beforeSend() {
                        return this._beforeSend
                    }
                    get url() {
                        return this._url
                    }
                    get jsonp() {
                        return this._jsonp
                    }
                    get filterToLower() {
                        return this._filterToLower
                    }
                }
            },
        17594:
            /*!******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/data/odata/m_store.js ***!
              \******************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                __webpack_require__( /*! ../../../common/data/odata/query_adapter */ 65001);
                var _errors = __webpack_require__( /*! ../../../common/data/errors */ 82812);
                var _request_dispatcher = _interopRequireDefault(__webpack_require__( /*! ../../../common/data/odata/request_dispatcher */ 26098));
                var _query = _interopRequireDefault(__webpack_require__( /*! ../../../common/data/query */ 30771));
                var _config = _interopRequireDefault(__webpack_require__( /*! ../../../core/config */ 66636));
                var _deferred = __webpack_require__( /*! ../../../core/utils/deferred */ 87739);
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528);
                var _abstract_store = _interopRequireDefault(__webpack_require__( /*! ../../../data/abstract_store */ 77735));
                var _m_utils = __webpack_require__( /*! ./m_utils */ 14606);

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const ODataStore = _abstract_store.default.inherit({
                    ctor(options) {
                        this.callBase(options);
                        this._requestDispatcher = new _request_dispatcher.default(options);
                        let key = this.key();
                        let {
                            fieldTypes: fieldTypes
                        } = options;
                        let {
                            keyType: keyType
                        } = options;
                        if (keyType) {
                            const keyTypeIsString = "string" === typeof keyType;
                            if (!key) {
                                key = keyTypeIsString ? "5d46402c-7899-4ea9-bd81-8b73c47c7683" : Object.keys(keyType);
                                this._legacyAnonymousKey = key
                            }
                            if (keyTypeIsString) {
                                keyType = ((key, keyType) => ({
                                    [key]: keyType
                                }))(key, keyType)
                            }
                            fieldTypes = ((fieldTypes, keyType) => {
                                const result = {};
                                for (const field in fieldTypes) {
                                    result[field] = fieldTypes[field]
                                }
                                for (const keyName in keyType) {
                                    if (keyName in result) {
                                        if (result[keyName] !== keyType[keyName]) {
                                            _errors.errors.log("W4001", keyName)
                                        }
                                    } else {
                                        result[keyName] = keyType[keyName]
                                    }
                                }
                                return result
                            })(fieldTypes, keyType)
                        }
                        this._fieldTypes = fieldTypes || {};
                        if (2 === this.version()) {
                            this._updateMethod = "MERGE"
                        } else {
                            this._updateMethod = "PATCH"
                        }
                    },
                    _customLoadOptions: () => ["expand", "customQueryParams"],
                    _byKeyImpl(key, extraOptions) {
                        const params = {};
                        if (extraOptions) {
                            params.$expand = (0, _m_utils.generateExpand)(this.version(), extraOptions.expand, extraOptions.select) || void 0;
                            params.$select = (0, _m_utils.generateSelect)(this.version(), extraOptions.select) || void 0
                        }
                        return this._requestDispatcher.sendRequest(this._byKeyUrl(key), "GET", params)
                    },
                    createQuery(loadOptions) {
                        let url;
                        const queryOptions = {
                            adapter: "odata",
                            beforeSend: this._requestDispatcher.beforeSend,
                            errorHandler: this._errorHandler,
                            jsonp: this._requestDispatcher.jsonp,
                            version: this._requestDispatcher.version,
                            withCredentials: this._requestDispatcher._withCredentials,
                            expand: null === loadOptions || void 0 === loadOptions ? void 0 : loadOptions.expand,
                            requireTotalCount: null === loadOptions || void 0 === loadOptions ? void 0 : loadOptions.requireTotalCount,
                            deserializeDates: this._requestDispatcher._deserializeDates,
                            fieldTypes: this._fieldTypes
                        };
                        url = (null === loadOptions || void 0 === loadOptions ? void 0 : loadOptions.urlOverride) ?? this._requestDispatcher.url;
                        if ((0, _type.isDefined)(this._requestDispatcher.filterToLower)) {
                            queryOptions.filterToLower = this._requestDispatcher.filterToLower
                        }
                        if (null !== loadOptions && void 0 !== loadOptions && loadOptions.customQueryParams) {
                            const params = (0, _m_utils.escapeServiceOperationParams)(null === loadOptions || void 0 === loadOptions ? void 0 : loadOptions.customQueryParams, this.version());
                            if (4 === this.version()) {
                                url = (0, _m_utils.formatFunctionInvocationUrl)(url, params)
                            } else {
                                queryOptions.params = params
                            }
                        }
                        return (0, _query.default)(url, queryOptions)
                    },
                    _insertImpl(values) {
                        this._requireKey();
                        const d = new _deferred.Deferred;
                        (0, _deferred.when)(this._requestDispatcher.sendRequest(this._requestDispatcher.url, "POST", null, values)).done((serverResponse => d.resolve(serverResponse && !(0, _config.default)().useLegacyStoreResult ? serverResponse : values, this.keyOf(serverResponse)))).fail(d.reject);
                        return d.promise()
                    },
                    _updateImpl(key, values) {
                        const d = new _deferred.Deferred;
                        (0, _deferred.when)(this._requestDispatcher.sendRequest(this._byKeyUrl(key), this._updateMethod, null, values)).done((serverResponse => (0, _config.default)().useLegacyStoreResult ? d.resolve(key, values) : d.resolve(serverResponse || values, key))).fail(d.reject);
                        return d.promise()
                    },
                    _removeImpl(key) {
                        const d = new _deferred.Deferred;
                        (0, _deferred.when)(this._requestDispatcher.sendRequest(this._byKeyUrl(key), "DELETE")).done((() => d.resolve(key))).fail(d.reject);
                        return d.promise()
                    },
                    _convertKey(value) {
                        let result = value;
                        const fieldTypes = this._fieldTypes;
                        const key = this.key() || this._legacyAnonymousKey;
                        if (Array.isArray(key)) {
                            result = {};
                            for (let i = 0; i < key.length; i++) {
                                const keyName = key[i];
                                result[keyName] = (0, _m_utils.convertPrimitiveValue)(fieldTypes[keyName], value[keyName])
                            }
                        } else if (fieldTypes[key]) {
                            result = (0, _m_utils.convertPrimitiveValue)(fieldTypes[key], value)
                        }
                        return result
                    },
                    _byKeyUrl(value) {
                        const baseUrl = this._requestDispatcher.url;
                        const convertedKey = this._convertKey(value);
                        return `${baseUrl}(${encodeURIComponent((0,_m_utils.serializeKey)(convertedKey,this.version()))})`
                    },
                    version() {
                        return this._requestDispatcher.version
                    }
                }, "odata");
                exports.default = ODataStore
            },
        14606:
            /*!******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/data/odata/m_utils.js ***!
              \******************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.serializeValue = exports.serializePropName = exports.serializeKey = exports.sendRequest = exports.keyConverters = exports.generateSelect = exports.generateExpand = exports.formatFunctionInvocationUrl = exports.escapeServiceOperationParams = exports.convertPrimitiveValue = exports.EdmLiteral = void 0;
                var _errors = __webpack_require__( /*! ../../../common/data/errors */ 82812);
                var _utils = __webpack_require__( /*! ../../../common/data/utils */ 89358);
                var _class = _interopRequireDefault(__webpack_require__( /*! ../../../core/class */ 55620));
                var _guid = _interopRequireDefault(__webpack_require__( /*! ../../../core/guid */ 19427));
                var _ajax = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/ajax */ 78670));
                var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781);
                var _deferred = __webpack_require__( /*! ../../../core/utils/deferred */ 87739);
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576);
                var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274);
                var _string = __webpack_require__( /*! ../../../core/utils/string */ 54497);
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528);

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const GUID_REGEX = /^(\{{0,1}([0-9a-fA-F]){8}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){12}\}{0,1})$/;
                const VERBOSE_DATE_REGEX = /^\/Date\((-?\d+)((\+|-)?(\d+)?)\)\/$/;
                const ISO8601_DATE_REGEX = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?(Z|[-+]{1}\d{2}(:?)(\d{2})?)?$/;
                const JSON_VERBOSE_MIME_TYPE = "application/json;odata=verbose";
                const makeArray = value => "string" === (0, _type.type)(value) ? value.split() : value;
                const hasDot = x => /\./.test(x);
                const pad = (text, length, right) => {
                    text = String(text);
                    while (text.length < length) {
                        text = right ? `${text}0` : `0${text}`
                    }
                    return text
                };
                const formatISO8601 = (date, skipZeroTime, skipTimezone) => {
                    const bag = [];
                    const padLeft2 = text => pad(text, 2);
                    bag.push(date.getFullYear());
                    bag.push("-");
                    bag.push(padLeft2(date.getMonth() + 1));
                    bag.push("-");
                    bag.push(padLeft2(date.getDate()));
                    if (!(skipZeroTime && date.getHours() + date.getMinutes() + date.getSeconds() + date.getMilliseconds() < 1)) {
                        bag.push("T");
                        bag.push(padLeft2(date.getHours()));
                        bag.push(":");
                        bag.push(padLeft2(date.getMinutes()));
                        bag.push(":");
                        bag.push(padLeft2(date.getSeconds()));
                        if (date.getMilliseconds()) {
                            bag.push(".");
                            bag.push(pad(date.getMilliseconds(), 3))
                        }
                        if (!skipTimezone) {
                            bag.push("Z")
                        }
                    }
                    return bag.join("")
                };
                const sendRequest = (protocolVersion, request, options) => {
                    const {
                        deserializeDates: deserializeDates,
                        fieldTypes: fieldTypes,
                        countOnly: countOnly,
                        isPaged: isPaged
                    } = options;
                    const d = new _deferred.Deferred;
                    const ajaxOptions = function(protocolVersion, request) {
                        var _options$beforeSend;
                        let options = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};
                        request = (0, _extend.extend)({
                            async: true,
                            method: "get",
                            url: "",
                            params: {},
                            payload: null,
                            headers: {},
                            timeout: 3e4
                        }, request);
                        null === (_options$beforeSend = options.beforeSend) || void 0 === _options$beforeSend || _options$beforeSend.call(options, request);
                        const {
                            async: async,
                            timeout: timeout,
                            headers: headers
                        } = request;
                        let {
                            url: url,
                            method: method
                        } = request;
                        const {
                            jsonp: jsonp,
                            withCredentials: withCredentials
                        } = options;
                        method = (method || "get").toLowerCase();
                        const isGet = "get" === method;
                        const useJsonp = isGet && jsonp;
                        const params = (0, _extend.extend)({}, request.params);
                        const ajaxData = isGet ? params : (payload = request.payload, JSON.stringify(payload, (function(key, value) {
                            if (!(this[key] instanceof Date)) {
                                return value
                            }
                            value = formatISO8601(this[key]);
                            switch (protocolVersion) {
                                case 2:
                                    return value.substr(0, value.length - 1);
                                case 3:
                                case 4:
                                    return value;
                                default:
                                    throw _errors.errors.Error("E4002")
                            }
                        })));
                        var payload;
                        const qs = !isGet && (params => {
                            const result = [];
                            for (const name in params) {
                                result.push(`${name}=${params[name]}`)
                            }
                            return result.join("&")
                        })(params);
                        const contentType = !isGet && JSON_VERBOSE_MIME_TYPE;
                        if (qs) {
                            url += (url.indexOf("?") > -1 ? "&" : "?") + qs
                        }
                        if (useJsonp) {
                            ajaxData.$format = "json"
                        }
                        return {
                            url: url,
                            data: ajaxData,
                            dataType: useJsonp ? "jsonp" : "json",
                            jsonp: useJsonp && "$callback",
                            method: method,
                            async: async,
                            timeout: timeout,
                            headers: headers,
                            contentType: contentType,
                            accepts: {
                                json: [JSON_VERBOSE_MIME_TYPE, "text/plain"].join()
                            },
                            xhrFields: {
                                withCredentials: withCredentials
                            }
                        }
                    }(protocolVersion, request, options);
                    _ajax.default.sendRequest(ajaxOptions).always(((obj, textStatus) => {
                        const transformOptions = {
                            deserializeDates: deserializeDates,
                            fieldTypes: fieldTypes
                        };
                        const tuple = interpretJsonFormat(obj, textStatus, transformOptions, ajaxOptions);
                        const {
                            error: error,
                            data: data,
                            count: count
                        } = tuple;
                        let {
                            nextUrl: nextUrl
                        } = tuple;
                        if (error) {
                            if (error.message !== _utils.XHR_ERROR_UNLOAD) {
                                d.reject(error)
                            }
                        } else if (countOnly) {
                            if (isFinite(count)) {
                                d.resolve(count)
                            } else {
                                d.reject(_errors.errors.Error("E4018"))
                            }
                        } else if (nextUrl && !isPaged) {
                            if (!(url = nextUrl, /^(?:[a-z]+:)?\/{2,2}/i.test(url))) {
                                nextUrl = ((basePath, relativePath) => {
                                    let part;
                                    const baseParts = (url => {
                                        const index = url.indexOf("?");
                                        if (index > -1) {
                                            return url.substr(0, index)
                                        }
                                        return url
                                    })(basePath).split("/");
                                    const relativeParts = relativePath.split("/");
                                    baseParts.pop();
                                    while (relativeParts.length) {
                                        part = relativeParts.shift();
                                        if (".." === part) {
                                            baseParts.pop()
                                        } else {
                                            baseParts.push(part)
                                        }
                                    }
                                    return baseParts.join("/")
                                })(ajaxOptions.url, nextUrl)
                            }
                            sendRequest(protocolVersion, {
                                url: nextUrl
                            }, options).fail(d.reject).done((nextData => d.resolve(data.concat(nextData))))
                        } else {
                            const extra = isFinite(count) ? {
                                totalCount: count
                            } : void 0;
                            d.resolve(data, extra)
                        }
                        var url
                    }));
                    return d.promise()
                };
                exports.sendRequest = sendRequest;
                const interpretJsonFormat = (obj, textStatus, transformOptions, ajaxOptions) => {
                    const error = ((obj, textStatus, ajaxOptions) => {
                        var _response, _response2, _response3, _response4;
                        if ("nocontent" === textStatus) {
                            return null
                        }
                        let message = "Unknown error";
                        let response = obj;
                        let httpStatus = 200;
                        const errorData = {
                            requestOptions: ajaxOptions
                        };
                        if ("success" !== textStatus) {
                            const {
                                status: status,
                                responseText: responseText
                            } = obj;
                            httpStatus = status;
                            message = (0, _utils.errorMessageFromXhr)(obj, textStatus);
                            try {
                                response = JSON.parse(responseText)
                            } catch (x) {}
                        }
                        const errorObj = (null === (_response = response) || void 0 === _response ? void 0 : _response.then) || (null === (_response2 = response) || void 0 === _response2 ? void 0 : _response2.error) || (null === (_response3 = response) || void 0 === _response3 ? void 0 : _response3["odata.error"]) || (null === (_response4 = response) || void 0 === _response4 ? void 0 : _response4["@odata.error"]);
                        if (errorObj) {
                            message = (errorObj => {
                                let message;
                                let currentMessage;
                                let currentError = errorObj;
                                if ("message" in errorObj) {
                                    var _errorObj$message;
                                    message = (null === (_errorObj$message = errorObj.message) || void 0 === _errorObj$message ? void 0 : _errorObj$message.value) || errorObj.message
                                }
                                while (currentError = currentError.innererror || currentError.internalexception) {
                                    currentMessage = currentError.message;
                                    message = currentMessage ?? message;
                                    if (currentError.internalexception && -1 === message.indexOf("inner exception")) {
                                        break
                                    }
                                }
                                return message
                            })(errorObj) || message;
                            errorData.errorDetails = errorObj;
                            if (200 === httpStatus) {
                                httpStatus = 500
                            }
                            const customCode = Number(errorObj.code);
                            if (isFinite(customCode) && customCode >= 400) {
                                httpStatus = customCode
                            }
                        }
                        if (httpStatus >= 400 || 0 === httpStatus) {
                            errorData.httpStatus = httpStatus;
                            return (0, _extend.extend)(Error(message), errorData)
                        }
                        return null
                    })(obj, textStatus, ajaxOptions);
                    if (error) {
                        return {
                            error: error
                        }
                    }
                    if (!(0, _type.isPlainObject)(obj)) {
                        return {
                            data: obj
                        }
                    }
                    const value = "d" in obj && (Array.isArray(obj.d) || (0, _type.isObject)(obj.d)) ? interpretVerboseJsonFormat(obj) : interpretLightJsonFormat(obj);
                    transformTypes(value, transformOptions);
                    return value
                };
                const interpretVerboseJsonFormat = _ref => {
                    let {
                        d: data
                    } = _ref;
                    if (!(0, _type.isDefined)(data)) {
                        return {
                            error: Error("Malformed or unsupported JSON response received")
                        }
                    }
                    return {
                        data: data.results ?? data,
                        nextUrl: data.__next,
                        count: parseInt(data.__count, 10)
                    }
                };
                const interpretLightJsonFormat = obj => ({
                    data: obj.value ?? obj,
                    nextUrl: obj["@odata.nextLink"],
                    count: parseInt(obj["@odata.count"], 10)
                });
                const EdmLiteral = exports.EdmLiteral = _class.default.inherit({
                    ctor(value) {
                        this._value = value
                    },
                    valueOf() {
                        return this._value
                    }
                });
                const transformTypes = function(obj) {
                    let options = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
                    (0, _iterator.each)(obj, ((key, value) => {
                        if (null !== value && "object" === typeof value) {
                            if ("results" in value) {
                                obj[key] = value.results
                            }
                            transformTypes(obj[key], options)
                        } else if ("string" === typeof value) {
                            const {
                                fieldTypes: fieldTypes,
                                deserializeDates: deserializeDates
                            } = options;
                            const canBeGuid = !fieldTypes || "String" !== fieldTypes[key];
                            if (canBeGuid && GUID_REGEX.test(value)) {
                                obj[key] = new _guid.default(value)
                            }
                            if (false !== deserializeDates) {
                                if (VERBOSE_DATE_REGEX.exec(value)) {
                                    const date = new Date(Number(RegExp.$1) + 60 * RegExp.$2 * 1e3);
                                    obj[key] = new Date(date.valueOf() + 60 * date.getTimezoneOffset() * 1e3)
                                } else if (ISO8601_DATE_REGEX.test(value)) {
                                    obj[key] = new Date((isoString => {
                                        const result = new Date(60 * new Date(0).getTimezoneOffset() * 1e3);
                                        const chunks = isoString.replace("Z", "").split("T");
                                        const date = /(\d{4})-(\d{2})-(\d{2})/.exec(chunks[0]);
                                        const time = /(\d{2}):(\d{2}):(\d{2})\.?(\d{0,7})?/.exec(chunks[1]);
                                        result.setFullYear(Number(date[1]));
                                        result.setMonth(Number(date[2]) - 1);
                                        result.setDate(Number(date[3]));
                                        if (Array.isArray(time) && time.length) {
                                            result.setHours(Number(time[1]));
                                            result.setMinutes(Number(time[2]));
                                            result.setSeconds(Number(time[3]));
                                            let fractional = (time[4] || "").slice(0, 3);
                                            fractional = pad(fractional, 3, true);
                                            result.setMilliseconds(Number(fractional))
                                        }
                                        return result
                                    })(obj[key]).valueOf())
                                }
                            }
                        }
                    }))
                };
                const serializePropName = propName => propName instanceof EdmLiteral ? propName.valueOf() : propName.replace(/\./g, "/");
                exports.serializePropName = serializePropName;
                const serializeValueV4 = value => {
                    if (value instanceof Date) {
                        return formatISO8601(value, false, false)
                    }
                    if (value instanceof _guid.default) {
                        return value.valueOf()
                    }
                    if (Array.isArray(value)) {
                        return `[${value.map((item=>serializeValueV4(item))).join(",")}]`
                    }
                    return serializeValueV2(value)
                };
                const serializeValueV2 = value => {
                    if (value instanceof Date) {
                        return date = value, `datetime'${formatISO8601(date,true,true)}'`
                    }
                    var date;
                    if (value instanceof _guid.default) {
                        return `guid'${value}'`
                    }
                    if (value instanceof EdmLiteral) {
                        return value.valueOf()
                    }
                    if ("string" === typeof value) {
                        return (value => `'${value.replace(/'/g,"''")}'`)(value)
                    }
                    return String(value)
                };
                const serializeValue = (value, protocolVersion) => {
                    switch (protocolVersion) {
                        case 2:
                        case 3:
                            return serializeValueV2(value);
                        case 4:
                            return serializeValueV4(value);
                        default:
                            throw _errors.errors.Error("E4002")
                    }
                };
                exports.serializeValue = serializeValue;
                exports.serializeKey = (key, protocolVersion) => {
                    if ((0, _type.isPlainObject)(key)) {
                        const parts = [];
                        (0, _iterator.each)(key, ((k, v) => parts.push(`${serializePropName(k)}=${serializeValue(v,protocolVersion)}`)));
                        return parts.join()
                    }
                    return serializeValue(key, protocolVersion)
                };
                const keyConverters = exports.keyConverters = {
                    String: value => `${value}`,
                    Int32: value => Math.floor(value),
                    Int64: value => value instanceof EdmLiteral ? value : new EdmLiteral(`${value}L`),
                    Guid: value => value instanceof _guid.default ? value : new _guid.default(value),
                    Boolean: value => !!value,
                    Single: value => value instanceof EdmLiteral ? value : new EdmLiteral(`${value}f`),
                    Decimal: value => value instanceof EdmLiteral ? value : new EdmLiteral(`${value}m`)
                };
                exports.convertPrimitiveValue = (type, value) => {
                    if (null === value) {
                        return null
                    }
                    const converter = keyConverters[type];
                    if (!converter) {
                        throw _errors.errors.Error("E4014", type)
                    }
                    return converter(value)
                };
                exports.generateSelect = (oDataVersion, select) => {
                    if (!select) {
                        return
                    }
                    return oDataVersion < 4 ? serializePropName(select.join()) : (0, _common.grep)(select, hasDot, true).join()
                };
                const formatCore = hash => {
                    let result = "";
                    const selectValue = [];
                    const expandValue = [];
                    (0, _iterator.each)(hash, ((key, value) => {
                        if (Array.isArray(value)) {
                            [].push.apply(selectValue, value)
                        }
                        if ((0, _type.isPlainObject)(value)) {
                            expandValue.push(`${key}${formatCore(value)}`)
                        }
                    }));
                    if (selectValue.length || expandValue.length) {
                        result += "(";
                        if (selectValue.length) {
                            result += `$select=${(0,_iterator.map)(selectValue,serializePropName).join()}`
                        }
                        if (expandValue.length) {
                            if (selectValue.length) {
                                result += ";"
                            }
                            result += `$expand=${(0,_iterator.map)(expandValue,serializePropName).join()}`
                        }
                        result += ")"
                    }
                    return result
                };
                const parseCore = (exprParts, root, stepper) => {
                    const result = stepper(root, exprParts.shift(), exprParts);
                    if (false === result) {
                        return
                    }
                    parseCore(exprParts, result, stepper)
                };
                const parseTree = (exprs, root, stepper) => (0, _iterator.each)(exprs, ((_, x) => parseCore(x.split("."), root, stepper)));
                const generatorV2 = (expand, select) => {
                    const hash = {};
                    if (expand) {
                        (0, _iterator.each)(makeArray(expand), (function() {
                            hash[serializePropName(this)] = 1
                        }))
                    }
                    if (select) {
                        (0, _iterator.each)(makeArray(select), (function() {
                            const path = this.split(".");
                            if (path.length < 2) {
                                return
                            }
                            path.pop();
                            hash[serializePropName(path.join("."))] = 1
                        }))
                    }
                    return (0, _iterator.map)(hash, ((_, v) => v)).join()
                };
                const generatorV4 = (expand, select) => {
                    const hash = {};
                    if (expand || select) {
                        if (expand) {
                            parseTree(makeArray(expand), hash, ((node, key, path) => {
                                node[key] = node[key] || {};
                                return !path.length ? false : node[key]
                            }))
                        }
                        if (select) {
                            parseTree((0, _common.grep)(makeArray(select), hasDot), hash, ((node, key, path) => {
                                if (!path.length) {
                                    node[key] = node[key] || [];
                                    node[key].push(key);
                                    return false
                                }
                                return node[key] = node[key] || {}
                            }))
                        }
                        return (hash => {
                            const result = [];
                            (0, _iterator.each)(hash, ((key, value) => result.push(`${key}${formatCore(value)}`)));
                            return result.join()
                        })(hash)
                    }
                };
                exports.generateExpand = (oDataVersion, expand, select) => oDataVersion < 4 ? generatorV2(expand, select) : generatorV4(expand, select);
                exports.formatFunctionInvocationUrl = (baseUrl, args) => (0, _string.format)("{0}({1})", baseUrl, (0, _iterator.map)(args || {}, ((value, key) => (0, _string.format)("{0}={1}", key, value))).join(","));
                exports.escapeServiceOperationParams = (params, version) => {
                    if (!params) {
                        return params
                    }
                    const result = {};
                    (0, _iterator.each)(params, ((k, v) => {
                        result[k] = serializeValue(v, version)
                    }));
                    return result
                }
            },
        14911:
            /*!******************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/events/core/m_emitter.feedback.js ***!
              \******************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.lock = exports.inactive = exports.active = void 0;
                var _emitter = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/emitter */ 59e3));
                var _emitter_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/emitter_registrator */ 81411));
                var _pointer = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/pointer */ 89797));
                var _index = __webpack_require__( /*! ../../../common/core/events/utils/index */ 98834);
                var _class = _interopRequireDefault(__webpack_require__( /*! ../../../core/class */ 55620));
                var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781);
                var _dom = __webpack_require__( /*! ../../../core/utils/dom */ 86858);
                var _m_devices = _interopRequireDefault(__webpack_require__( /*! ../../core/m_devices */ 98905));

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const ACTIVE_EVENT_NAME = exports.active = "dxactive";
                const INACTIVE_EVENT_NAME = exports.inactive = "dxinactive";
                const FeedbackEvent = _class.default.inherit({
                    ctor(timeout, fire) {
                        this._timeout = timeout;
                        this._fire = fire
                    },
                    start() {
                        const that = this;
                        this._schedule((() => {
                            that.force()
                        }))
                    },
                    _schedule(fn) {
                        this.stop();
                        this._timer = setTimeout(fn, this._timeout)
                    },
                    stop() {
                        clearTimeout(this._timer)
                    },
                    force() {
                        if (this._fired) {
                            return
                        }
                        this.stop();
                        this._fire();
                        this._fired = true
                    },
                    fired() {
                        return this._fired
                    }
                });
                let activeFeedback;
                const FeedbackEmitter = _emitter.default.inherit({
                    ctor() {
                        this.callBase.apply(this, arguments);
                        this._active = new FeedbackEvent(0, _common.noop);
                        this._inactive = new FeedbackEvent(0, _common.noop)
                    },
                    configure(data, eventName) {
                        switch (eventName) {
                            case ACTIVE_EVENT_NAME:
                                data.activeTimeout = data.timeout;
                                break;
                            case INACTIVE_EVENT_NAME:
                                data.inactiveTimeout = data.timeout
                        }
                        this.callBase(data)
                    },
                    start(e) {
                        if (activeFeedback) {
                            const activeChildExists = (0, _dom.contains)(this.getElement().get(0), activeFeedback.getElement().get(0));
                            const childJustActivated = !activeFeedback._active.fired();
                            if (activeChildExists && childJustActivated) {
                                this._cancel();
                                return
                            }
                            activeFeedback._inactive.force()
                        }
                        activeFeedback = this;
                        this._initEvents(e);
                        this._active.start()
                    },
                    _initEvents(e) {
                        const that = this;
                        const eventTarget = this._getEmitterTarget(e);
                        const mouseEvent = (0, _index.isMouseEvent)(e);
                        const isSimulator = _m_devices.default.isSimulator();
                        const deferFeedback = isSimulator || !mouseEvent;
                        const activeTimeout = (0, _common.ensureDefined)(this.activeTimeout, 30);
                        const inactiveTimeout = (0, _common.ensureDefined)(this.inactiveTimeout, 400);
                        this._active = new FeedbackEvent(deferFeedback ? activeTimeout : 0, (() => {
                            that._fireEvent(ACTIVE_EVENT_NAME, e, {
                                target: eventTarget
                            })
                        }));
                        this._inactive = new FeedbackEvent(deferFeedback ? inactiveTimeout : 0, (() => {
                            that._fireEvent(INACTIVE_EVENT_NAME, e, {
                                target: eventTarget
                            });
                            activeFeedback = null
                        }))
                    },
                    cancel(e) {
                        this.end(e)
                    },
                    end(e) {
                        const skipTimers = e.type !== _pointer.default.up;
                        if (skipTimers) {
                            this._active.stop()
                        } else {
                            this._active.force()
                        }
                        this._inactive.start();
                        if (skipTimers) {
                            this._inactive.force()
                        }
                    },
                    dispose() {
                        this._active.stop();
                        this._inactive.stop();
                        if (activeFeedback === this) {
                            activeFeedback = null
                        }
                        this.callBase()
                    },
                    lockInactive() {
                        this._active.force();
                        this._inactive.stop();
                        activeFeedback = null;
                        this._cancel();
                        return this._inactive.force.bind(this._inactive)
                    }
                });
                FeedbackEmitter.lock = function(deferred) {
                    const lockInactive = activeFeedback ? activeFeedback.lockInactive() : _common.noop;
                    deferred.done(lockInactive)
                };
                (0, _emitter_registrator.default)({
                    emitter: FeedbackEmitter,
                    events: [ACTIVE_EVENT_NAME, INACTIVE_EVENT_NAME]
                });
                const {
                    lock: lock
                } = FeedbackEmitter;
                exports.lock = lock
            },
        96292:
            /*!*********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/events/core/m_emitter.js ***!
              \*********************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _index = __webpack_require__( /*! ../../../common/core/events/utils/index */ 98834);
                var _class = _interopRequireDefault(__webpack_require__( /*! ../../../core/class */ 55620));
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553));
                var _callbacks = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/callbacks */ 84718));
                var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781);
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576);

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const Emitter = _class.default.inherit({
                    ctor(element) {
                        this._$element = (0, _renderer.default)(element);
                        this._cancelCallback = (0, _callbacks.default)();
                        this._acceptCallback = (0, _callbacks.default)()
                    },
                    getElement() {
                        return this._$element
                    },
                    validate: e => !(0, _index.isDxMouseWheelEvent)(e),
                    validatePointers: e => 1 === (0, _index.hasTouches)(e),
                    allowInterruptionByMouseWheel: () => true,
                    configure(data) {
                        (0, _extend.extend)(this, data)
                    },
                    addCancelCallback(callback) {
                        this._cancelCallback.add(callback)
                    },
                    removeCancelCallback() {
                        this._cancelCallback.empty()
                    },
                    _cancel(e) {
                        this._cancelCallback.fire(this, e)
                    },
                    addAcceptCallback(callback) {
                        this._acceptCallback.add(callback)
                    },
                    removeAcceptCallback() {
                        this._acceptCallback.empty()
                    },
                    _accept(e) {
                        this._acceptCallback.fire(this, e)
                    },
                    _requestAccept(e) {
                        this._acceptRequestEvent = e
                    },
                    _forgetAccept() {
                        this._accept(this._acceptRequestEvent);
                        this._acceptRequestEvent = null
                    },
                    start: _common.noop,
                    move: _common.noop,
                    end: _common.noop,
                    cancel: _common.noop,
                    reset() {
                        if (this._acceptRequestEvent) {
                            this._accept(this._acceptRequestEvent)
                        }
                    },
                    _fireEvent(eventName, e, params) {
                        const eventData = (0, _extend.extend)({
                            type: eventName,
                            originalEvent: e,
                            target: this._getEmitterTarget(e),
                            delegateTarget: this.getElement().get(0)
                        }, params);
                        e = (0, _index.fireEvent)(eventData);
                        if (e.cancel) {
                            this._cancel(e)
                        }
                        return e
                    },
                    _getEmitterTarget(e) {
                        return (this.delegateSelector ? (0, _renderer.default)(e.target).closest(this.delegateSelector) : this.getElement()).get(0)
                    },
                    dispose: _common.noop
                });
                exports.default = Emitter
            },
        58063:
            /*!*********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/events/core/m_emitter_registrator.js ***!
              \*********************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _event_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/event_registrator */ 15273));
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774));
                var _wheel = __webpack_require__( /*! ../../../common/core/events/core/wheel */ 37373);
                var _pointer = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/pointer */ 89797));
                var _index = __webpack_require__( /*! ../../../common/core/events/utils/index */ 98834);
                var _class = _interopRequireDefault(__webpack_require__( /*! ../../../core/class */ 55620));
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../core/dom_adapter */ 64960));
                var _element_data = __webpack_require__( /*! ../../../core/element_data */ 74663);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553));
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576);
                var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274);
                var _ready_callbacks = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/ready_callbacks */ 3122));

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const EventManager = _class.default.inherit({
                    ctor() {
                        this._attachHandlers();
                        this.reset();
                        this._proxiedCancelHandler = this._cancelHandler.bind(this);
                        this._proxiedAcceptHandler = this._acceptHandler.bind(this)
                    },
                    _attachHandlers() {
                        _ready_callbacks.default.add((() => {
                            const document = _dom_adapter.default.getDocument();
                            _events_engine.default.subscribeGlobal(document, (0, _index.addNamespace)(_pointer.default.down, "dxEventManager"), this._pointerDownHandler.bind(this));
                            _events_engine.default.subscribeGlobal(document, (0, _index.addNamespace)(_pointer.default.move, "dxEventManager"), this._pointerMoveHandler.bind(this));
                            _events_engine.default.subscribeGlobal(document, (0, _index.addNamespace)([_pointer.default.up, _pointer.default.cancel].join(" "), "dxEventManager"), this._pointerUpHandler.bind(this));
                            _events_engine.default.subscribeGlobal(document, (0, _index.addNamespace)(_wheel.name, "dxEventManager"), this._mouseWheelHandler.bind(this))
                        }))
                    },
                    _eachEmitter(callback) {
                        const activeEmitters = this._activeEmitters || [];
                        let i = 0;
                        while (activeEmitters.length > i) {
                            const emitter = activeEmitters[i];
                            if (false === callback(emitter)) {
                                break
                            }
                            if (activeEmitters[i] === emitter) {
                                i++
                            }
                        }
                    },
                    _applyToEmitters(method, arg) {
                        this._eachEmitter((emitter => {
                            emitter[method].call(emitter, arg)
                        }))
                    },
                    reset() {
                        this._eachEmitter(this._proxiedCancelHandler);
                        this._activeEmitters = []
                    },
                    resetEmitter(emitter) {
                        this._proxiedCancelHandler(emitter)
                    },
                    _pointerDownHandler(e) {
                        if ((0, _index.isMouseEvent)(e) && e.which > 1) {
                            return
                        }
                        this._updateEmitters(e)
                    },
                    _updateEmitters(e) {
                        if (!this._isSetChanged(e)) {
                            return
                        }
                        this._cleanEmitters(e);
                        this._fetchEmitters(e)
                    },
                    _isSetChanged(e) {
                        const currentSet = this._closestEmitter(e);
                        const previousSet = this._emittersSet || [];
                        let setChanged = currentSet.length !== previousSet.length;
                        (0, _iterator.each)(currentSet, ((index, emitter) => {
                            setChanged = setChanged || previousSet[index] !== emitter;
                            return !setChanged
                        }));
                        this._emittersSet = currentSet;
                        return setChanged
                    },
                    _closestEmitter(e) {
                        const that = this;
                        const result = [];
                        let $element = (0, _renderer.default)(e.target);

                        function handleEmitter(_, emitter) {
                            if (!!emitter && emitter.validatePointers(e) && emitter.validate(e)) {
                                emitter.addCancelCallback(that._proxiedCancelHandler);
                                emitter.addAcceptCallback(that._proxiedAcceptHandler);
                                result.push(emitter)
                            }
                        }
                        while ($element.length) {
                            const emitters = (0, _element_data.data)($element.get(0), "dxEmitter") || [];
                            (0, _iterator.each)(emitters, handleEmitter);
                            $element = $element.parent()
                        }
                        return result
                    },
                    _acceptHandler(acceptedEmitter, e) {
                        this._eachEmitter((emitter => {
                            if (emitter !== acceptedEmitter) {
                                this._cancelEmitter(emitter, e)
                            }
                        }))
                    },
                    _cancelHandler(canceledEmitter, e) {
                        this._cancelEmitter(canceledEmitter, e)
                    },
                    _cancelEmitter(emitter, e) {
                        const activeEmitters = this._activeEmitters;
                        if (e) {
                            emitter.cancel(e)
                        } else {
                            emitter.reset()
                        }
                        emitter.removeCancelCallback();
                        emitter.removeAcceptCallback();
                        const emitterIndex = activeEmitters.indexOf(emitter);
                        if (emitterIndex > -1) {
                            activeEmitters.splice(emitterIndex, 1)
                        }
                    },
                    _cleanEmitters(e) {
                        this._applyToEmitters("end", e);
                        this.reset(e)
                    },
                    _fetchEmitters(e) {
                        this._activeEmitters = this._emittersSet.slice();
                        this._applyToEmitters("start", e)
                    },
                    _pointerMoveHandler(e) {
                        this._applyToEmitters("move", e)
                    },
                    _pointerUpHandler(e) {
                        this._updateEmitters(e)
                    },
                    _mouseWheelHandler(e) {
                        if (!this._allowInterruptionByMouseWheel()) {
                            return
                        }
                        e.pointers = [null];
                        this._pointerDownHandler(e);
                        this._adjustWheelEvent(e);
                        this._pointerMoveHandler(e);
                        e.pointers = [];
                        this._pointerUpHandler(e)
                    },
                    _allowInterruptionByMouseWheel() {
                        let allowInterruption = true;
                        this._eachEmitter((emitter => {
                            allowInterruption = emitter.allowInterruptionByMouseWheel() && allowInterruption;
                            return allowInterruption
                        }));
                        return allowInterruption
                    },
                    _adjustWheelEvent(e) {
                        let closestGestureEmitter = null;
                        this._eachEmitter((emitter => {
                            if (!emitter.gesture) {
                                return
                            }
                            const direction = emitter.getDirection(e);
                            if ("horizontal" !== direction && !e.shiftKey || "vertical" !== direction && e.shiftKey) {
                                closestGestureEmitter = emitter;
                                return false
                            }
                        }));
                        if (!closestGestureEmitter) {
                            return
                        }
                        const direction = closestGestureEmitter.getDirection(e);
                        const verticalGestureDirection = "both" === direction && !e.shiftKey || "vertical" === direction;
                        const prop = verticalGestureDirection ? "pageY" : "pageX";
                        e[prop] += e.delta
                    },
                    isActive(element) {
                        let result = false;
                        this._eachEmitter((emitter => {
                            result = result || emitter.getElement().is(element)
                        }));
                        return result
                    }
                });
                const eventManager = new EventManager;
                exports.default = function(emitterConfig) {
                    const EmitterClass = emitterConfig.emitter;
                    const emitterName = emitterConfig.events[0];
                    const emitterEvents = emitterConfig.events;
                    (0, _iterator.each)(emitterEvents, ((_, eventName) => {
                        (0, _event_registrator.default)(eventName, {
                            noBubble: !emitterConfig.bubble,
                            setup(element) {
                                const subscriptions = (0, _element_data.data)(element, "dxEmitterSubscription") || {};
                                const emitters = (0, _element_data.data)(element, "dxEmitter") || {};
                                const emitter = emitters[emitterName] || new EmitterClass(element);
                                subscriptions[eventName] = true;
                                emitters[emitterName] = emitter;
                                (0, _element_data.data)(element, "dxEmitter", emitters);
                                (0, _element_data.data)(element, "dxEmitterSubscription", subscriptions)
                            },
                            add(element, handleObj) {
                                const emitters = (0, _element_data.data)(element, "dxEmitter");
                                const emitter = emitters[emitterName];
                                emitter.configure((0, _extend.extend)({
                                    delegateSelector: handleObj.selector
                                }, handleObj.data), handleObj.type)
                            },
                            teardown(element) {
                                const subscriptions = (0, _element_data.data)(element, "dxEmitterSubscription");
                                const emitters = (0, _element_data.data)(element, "dxEmitter");
                                const emitter = emitters[emitterName];
                                delete subscriptions[eventName];
                                let disposeEmitter = true;
                                (0, _iterator.each)(emitterEvents, ((_, eventName) => {
                                    disposeEmitter = disposeEmitter && !subscriptions[eventName];
                                    return disposeEmitter
                                }));
                                if (disposeEmitter) {
                                    if (eventManager.isActive(element)) {
                                        eventManager.resetEmitter(emitter)
                                    }
                                    emitter && emitter.dispose();
                                    delete emitters[emitterName]
                                }
                            }
                        })
                    }))
                }
            },
        65381:
            /*!*******************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/events/core/m_event_registrator.js ***!
              \*******************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _event_registrator_callbacks = (e = __webpack_require__( /*! ../../../common/core/events/core/event_registrator_callbacks */ 85030), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274);
                const registerEvent = function(name, eventObject) {
                    const strategy = {};
                    if ("noBubble" in eventObject) {
                        strategy.noBubble = eventObject.noBubble
                    }
                    if ("bindType" in eventObject) {
                        strategy.bindType = eventObject.bindType
                    }
                    if ("delegateType" in eventObject) {
                        strategy.delegateType = eventObject.delegateType
                    }(0, _iterator.each)(["setup", "teardown", "add", "remove", "trigger", "handle", "_default", "dispose"], ((_, methodName) => {
                        if (!eventObject[methodName]) {
                            return
                        }
                        strategy[methodName] = function() {
                            const args = [].slice.call(arguments);
                            args.unshift(this);
                            return eventObject[methodName].apply(eventObject, args)
                        }
                    }));
                    _event_registrator_callbacks.default.fire(name, strategy)
                };
                registerEvent.callbacks = _event_registrator_callbacks.default;
                exports.default = registerEvent
            },
        36306:
            /*!***************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/events/core/m_events_engine.js ***!
              \***************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _event_registrator_callbacks = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/event_registrator_callbacks */ 85030));
                var _hook_touch_props = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/hook_touch_props */ 65462));
                var _event_target = __webpack_require__( /*! ../../../common/core/events/utils/event_target */ 45280);
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../core/dom_adapter */ 64960));
                var _errors = _interopRequireDefault(__webpack_require__( /*! ../../../core/errors */ 87129));
                var _call_once = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/call_once */ 13630));
                var _callbacks = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/callbacks */ 84718));
                var _dependency_injector = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/dependency_injector */ 89656));
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576);
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528);
                var _window = __webpack_require__( /*! ../../../core/utils/window */ 3104);

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const window = (0, _window.getWindow)();
                const NATIVE_EVENTS_TO_SUBSCRIBE = {
                    mouseenter: "mouseover",
                    mouseleave: "mouseout",
                    pointerenter: "pointerover",
                    pointerleave: "pointerout"
                };
                const NATIVE_EVENTS_TO_TRIGGER = {
                    focusin: "focus",
                    focusout: "blur"
                };
                const NO_BUBBLE_EVENTS = ["blur", "focus", "load"];
                const forcePassiveFalseEventNames = ["touchmove", "wheel", "mousewheel", "touchstart"];

                function matchesSafe(target, selector) {
                    return !(0, _type.isWindow)(target) && "#document" !== target.nodeName && _dom_adapter.default.elementMatches(target, selector)
                }
                const elementDataMap = new WeakMap;
                let guid = 0;
                let skipEvent;
                const special = function() {
                    const specialData = {};
                    _event_registrator_callbacks.default.add(((eventName, eventObject) => {
                        specialData[eventName] = eventObject
                    }));
                    return {
                        getField: (eventName, field) => specialData[eventName] && specialData[eventName][field],
                        callMethod: (eventName, methodName, context, args) => specialData[eventName] && specialData[eventName][methodName] && specialData[eventName][methodName].apply(context, args)
                    }
                }();
                const eventsEngine = (0, _dependency_injector.default)({
                    on: getHandler(normalizeOnArguments(iterate(((element, eventName, selector, data, handler) => {
                        const handlersController = getHandlersController(element, eventName);
                        handlersController.addHandler(handler, selector, data)
                    })))),
                    one: getHandler(normalizeOnArguments(((element, eventName, selector, data, handler) => {
                        const oneTimeHandler = function() {
                            eventsEngine.off(element, eventName, selector, oneTimeHandler);
                            handler.apply(this, arguments)
                        };
                        eventsEngine.on(element, eventName, selector, data, oneTimeHandler)
                    }))),
                    off: getHandler((callback = iterate(((element, eventName, selector, handler) => {
                        const handlersController = getHandlersController(element, eventName);
                        handlersController.removeHandler(handler, selector)
                    })), function(element, eventName, selector, handler) {
                        if ("function" === typeof selector) {
                            handler = selector;
                            selector = void 0
                        }
                        callback(element, eventName, selector, handler)
                    })),
                    trigger: getHandler(normalizeTriggerArguments(((element, event, extraParameters) => {
                        const eventName = event.type;
                        const handlersController = getHandlersController(element, event.type);
                        special.callMethod(eventName, "trigger", element, [event, extraParameters]);
                        handlersController.callHandlers(event, extraParameters);
                        const noBubble = special.getField(eventName, "noBubble") || event.isPropagationStopped() || NO_BUBBLE_EVENTS.includes(eventName);
                        if (!noBubble) {
                            const parents = [];
                            const getParents = function(element) {
                                const parent = element.parentNode ?? ((0, _type.isObject)(element.host) ? element.host : null);
                                if (parent) {
                                    parents.push(parent);
                                    getParents(parent)
                                }
                            };
                            getParents(element);
                            parents.push(window);
                            let i = 0;
                            while (parents[i] && !event.isPropagationStopped()) {
                                const parentDataByEvent = getHandlersController(parents[i], event.type);
                                parentDataByEvent.callHandlers((0, _extend.extend)(event, {
                                    currentTarget: parents[i]
                                }), extraParameters);
                                i++
                            }
                        }
                        if (element.nodeType || (0, _type.isWindow)(element)) {
                            special.callMethod(eventName, "_default", element, [event, extraParameters]);
                            ! function(eventName, element) {
                                const nativeMethodName = NATIVE_EVENTS_TO_TRIGGER[eventName] || eventName;
                                const isLinkClickEvent = function(eventName, element) {
                                    return "click" === eventName && "a" === element.localName
                                };
                                if (isLinkClickEvent(eventName, element)) {
                                    return
                                }
                                if ((0, _type.isFunction)(element[nativeMethodName])) {
                                    skipEvent = eventName;
                                    element[nativeMethodName]();
                                    skipEvent = void 0
                                }
                            }(eventName, element)
                        }
                    }))),
                    triggerHandler: getHandler(normalizeTriggerArguments(((element, event, extraParameters) => {
                        const handlersController = getHandlersController(element, event.type);
                        handlersController.callHandlers(event, extraParameters)
                    })))
                });
                var callback;

                function applyForEach(args, method) {
                    const element = args[0];
                    if (!element) {
                        return
                    }
                    if (_dom_adapter.default.isNode(element) || (0, _type.isWindow)(element)) {
                        method.apply(eventsEngine, args)
                    } else if (!(0, _type.isString)(element) && "length" in element) {
                        const itemArgs = Array.prototype.slice.call(args, 0);
                        Array.prototype.forEach.call(element, (itemElement => {
                            itemArgs[0] = itemElement;
                            applyForEach(itemArgs, method)
                        }))
                    } else {
                        throw _errors.default.Error("E0025")
                    }
                }

                function getHandler(method) {
                    return function() {
                        applyForEach(arguments, method)
                    }
                }
                const passiveEventHandlersSupported = (0, _call_once.default)((function() {
                    let isSupported = false;
                    try {
                        const options = Object.defineProperty({}, "passive", {
                            get() {
                                isSupported = true;
                                return true
                            }
                        });
                        window.addEventListener("test", null, options)
                    } catch (e) {}
                    return isSupported
                }));
                const contains = (container, element) => {
                    if ((0, _type.isWindow)(container)) {
                        return contains(container.document, element)
                    }
                    return container.contains ? container.contains(element) : !!(element.compareDocumentPosition(container) & element.DOCUMENT_POSITION_CONTAINS)
                };

                function getHandlersController(element, eventName) {
                    let elementData = elementDataMap.get(element);
                    eventName = eventName || "";
                    const eventNameParts = eventName.split(".");
                    const namespaces = eventNameParts.slice(1);
                    const eventNameIsDefined = !!eventNameParts[0];
                    eventName = eventNameParts[0] || "dxEmptyEventType";
                    if (!elementData) {
                        elementData = {};
                        elementDataMap.set(element, elementData)
                    }
                    if (!elementData[eventName]) {
                        elementData[eventName] = {
                            handleObjects: [],
                            nativeHandler: null
                        }
                    }
                    const eventData = elementData[eventName];
                    return {
                        addHandler(handler, selector, data) {
                            const callHandler = function(e, extraParameters) {
                                const handlerArgs = [e];
                                const target = e.currentTarget;
                                const {
                                    relatedTarget: relatedTarget
                                } = e;
                                let secondaryTargetIsInside;
                                let result;
                                if (eventName in NATIVE_EVENTS_TO_SUBSCRIBE) {
                                    secondaryTargetIsInside = relatedTarget && target && (relatedTarget === target || contains(target, relatedTarget))
                                }
                                if (void 0 !== extraParameters) {
                                    handlerArgs.push(extraParameters)
                                }
                                special.callMethod(eventName, "handle", element, [e, data]);
                                if (!secondaryTargetIsInside) {
                                    result = handler.apply(target, handlerArgs)
                                }
                                if (false === result) {
                                    e.preventDefault();
                                    e.stopPropagation()
                                }
                            };
                            const handleObject = {
                                handler: handler,
                                wrappedHandler: function(e, extraParameters) {
                                    if (skipEvent && e.type === skipEvent) {
                                        return
                                    }
                                    e.data = data;
                                    e.delegateTarget = element;
                                    if (selector) {
                                        let currentTarget = e.target;
                                        while (currentTarget && currentTarget !== element) {
                                            if (matchesSafe(currentTarget, selector)) {
                                                e.currentTarget = currentTarget;
                                                callHandler(e, extraParameters)
                                            }
                                            currentTarget = currentTarget.parentNode
                                        }
                                    } else {
                                        var _e$target;
                                        e.currentTarget = e.delegateTarget || e.target;
                                        const isTargetInShadowDOM = Boolean(null === (_e$target = e.target) || void 0 === _e$target ? void 0 : _e$target.shadowRoot);
                                        if (isTargetInShadowDOM) {
                                            const target = (0, _event_target.getEventTarget)(e);
                                            e.target = target
                                        }
                                        callHandler(e, extraParameters)
                                    }
                                },
                                selector: selector,
                                type: eventName,
                                data: data,
                                namespace: namespaces.join("."),
                                namespaces: namespaces,
                                guid: ++guid
                            };
                            eventData.handleObjects.push(handleObject);
                            const firstHandlerForTheType = 1 === eventData.handleObjects.length;
                            let shouldAddNativeListener = firstHandlerForTheType && eventNameIsDefined;
                            let nativeListenerOptions;
                            if (shouldAddNativeListener) {
                                shouldAddNativeListener = !special.callMethod(eventName, "setup", element, [data, namespaces, handler])
                            }
                            if (shouldAddNativeListener) {
                                eventData.nativeHandler = (subscribeName = eventName, function(event, extraParameters) {
                                    const handlersController = getHandlersController(this, subscribeName);
                                    event = eventsEngine.Event(event);
                                    handlersController.callHandlers(event, extraParameters)
                                });
                                if (passiveEventHandlersSupported() && forcePassiveFalseEventNames.includes(eventName)) {
                                    nativeListenerOptions = {
                                        passive: false
                                    }
                                }
                                eventData.removeListener = _dom_adapter.default.listen(element, NATIVE_EVENTS_TO_SUBSCRIBE[eventName] || eventName, eventData.nativeHandler, nativeListenerOptions)
                            }
                            var subscribeName;
                            special.callMethod(eventName, "add", element, [handleObject])
                        },
                        removeHandler(handler, selector) {
                            const removeByEventName = function(eventName) {
                                const eventData = elementData[eventName];
                                if (!eventData.handleObjects.length) {
                                    delete elementData[eventName];
                                    return
                                }
                                let removedHandler;
                                eventData.handleObjects = eventData.handleObjects.filter((handleObject => {
                                    const skip = namespaces.length && !isSubset(handleObject.namespaces, namespaces) || handler && handleObject.handler !== handler || selector && handleObject.selector !== selector;
                                    if (!skip) {
                                        removedHandler = handleObject.handler;
                                        special.callMethod(eventName, "remove", element, [handleObject])
                                    }
                                    return skip
                                }));
                                const lastHandlerForTheType = !eventData.handleObjects.length;
                                const shouldRemoveNativeListener = lastHandlerForTheType && "dxEmptyEventType" !== eventName;
                                if (shouldRemoveNativeListener) {
                                    special.callMethod(eventName, "teardown", element, [namespaces, removedHandler]);
                                    if (eventData.nativeHandler) {
                                        eventData.removeListener()
                                    }
                                    delete elementData[eventName]
                                }
                            };
                            if (eventNameIsDefined) {
                                removeByEventName(eventName)
                            } else {
                                for (const name in elementData) {
                                    removeByEventName(name)
                                }
                            }
                            const elementDataIsEmpty = 0 === Object.keys(elementData).length;
                            if (elementDataIsEmpty) {
                                elementDataMap.delete(element)
                            }
                        },
                        callHandlers(event, extraParameters) {
                            let forceStop = false;
                            const handleCallback = function(handleObject) {
                                if (forceStop) {
                                    return
                                }
                                if (!namespaces.length || isSubset(handleObject.namespaces, namespaces)) {
                                    handleObject.wrappedHandler(event, extraParameters);
                                    forceStop = event.isImmediatePropagationStopped()
                                }
                            };
                            eventData.handleObjects.forEach(handleCallback);
                            if (namespaces.length && elementData.dxEmptyEventType) {
                                elementData.dxEmptyEventType.handleObjects.forEach(handleCallback)
                            }
                        }
                    }
                }

                function isSubset(original, checked) {
                    for (let i = 0; i < checked.length; i++) {
                        if (original.indexOf(checked[i]) < 0) {
                            return false
                        }
                    }
                    return true
                }

                function normalizeOnArguments(callback) {
                    return function(element, eventName, selector, data, handler) {
                        if (!handler) {
                            handler = data;
                            data = void 0
                        }
                        if ("string" !== typeof selector) {
                            data = selector;
                            selector = void 0
                        }
                        if (!handler && "string" === typeof eventName) {
                            handler = data || selector;
                            selector = void 0;
                            data = void 0
                        }
                        callback(element, eventName, selector, data, handler)
                    }
                }

                function normalizeTriggerArguments(callback) {
                    return function(element, src, extraParameters) {
                        if ("string" === typeof src) {
                            src = {
                                type: src
                            }
                        }
                        if (!src.target) {
                            src.target = element
                        }
                        src.currentTarget = element;
                        if (!src.delegateTarget) {
                            src.delegateTarget = element
                        }
                        if (!src.type && src.originalEvent) {
                            src.type = src.originalEvent.type
                        }
                        callback(element, src instanceof eventsEngine.Event ? src : eventsEngine.Event(src), extraParameters)
                    }
                }

                function iterate(callback) {
                    const iterateEventNames = function(element, eventName) {
                        if (eventName && eventName.indexOf(" ") > -1) {
                            const args = Array.prototype.slice.call(arguments, 0);
                            eventName.split(" ").forEach((function(eventName) {
                                args[1] = eventName;
                                callback.apply(this, args)
                            }))
                        } else {
                            callback.apply(this, arguments)
                        }
                    };
                    return function(element, eventName) {
                        if ("object" === typeof eventName) {
                            const args = Array.prototype.slice.call(arguments, 0);
                            for (const name in eventName) {
                                args[1] = name;
                                args[args.length - 1] = eventName[name];
                                iterateEventNames.apply(this, args)
                            }
                        } else {
                            iterateEventNames.apply(this, arguments)
                        }
                    }
                }

                function calculateWhich(event) {
                    if (function(event) {
                            return null == event.which && 0 === event.type.indexOf("key")
                        }(event)) {
                        return null != event.charCode ? event.charCode : event.keyCode
                    }
                    if (function(event) {
                            return !event.which && void 0 !== event.button && /^(?:mouse|pointer|contextmenu|drag|drop)|click/.test(event.type)
                        }(event)) {
                        const whichByButton = {
                            1: 1,
                            2: 3,
                            3: 1,
                            4: 2
                        };
                        return whichByButton[event.button]
                    }
                    return event.which
                }

                function initEvent(EventClass) {
                    if (EventClass) {
                        eventsEngine.Event = EventClass;
                        eventsEngine.Event.prototype = EventClass.prototype
                    }
                }
                initEvent(function(callback) {
                    eventsEngine.Event = function(src, config) {
                        if (!(this instanceof eventsEngine.Event)) {
                            return new eventsEngine.Event(src, config)
                        }
                        if (!src) {
                            src = {}
                        }
                        if ("string" === typeof src) {
                            src = {
                                type: src
                            }
                        }
                        if (!config) {
                            config = {}
                        }
                        callback.call(this, src, config)
                    };
                    Object.assign(eventsEngine.Event.prototype, {
                        _propagationStopped: false,
                        _immediatePropagationStopped: false,
                        _defaultPrevented: false,
                        isPropagationStopped() {
                            return !!(this._propagationStopped || this.originalEvent && this.originalEvent.propagationStopped)
                        },
                        stopPropagation() {
                            this._propagationStopped = true;
                            this.originalEvent && this.originalEvent.stopPropagation()
                        },
                        isImmediatePropagationStopped() {
                            return this._immediatePropagationStopped
                        },
                        stopImmediatePropagation() {
                            this.stopPropagation();
                            this._immediatePropagationStopped = true;
                            this.originalEvent && this.originalEvent.stopImmediatePropagation()
                        },
                        isDefaultPrevented() {
                            return !!(this._defaultPrevented || this.originalEvent && this.originalEvent.defaultPrevented)
                        },
                        preventDefault() {
                            this._defaultPrevented = true;
                            this.originalEvent && this.originalEvent.preventDefault()
                        }
                    });
                    return eventsEngine.Event
                }((function(src, config) {
                    var _src$view;
                    const srcIsEvent = src instanceof eventsEngine.Event || (0, _window.hasWindow)() && src instanceof window.Event || (null === (_src$view = src.view) || void 0 === _src$view ? void 0 : _src$view.Event) && src instanceof src.view.Event;
                    if (srcIsEvent) {
                        this.originalEvent = src;
                        this.type = src.type;
                        this.currentTarget = void 0;
                        if (Object.prototype.hasOwnProperty.call(src, "isTrusted")) {
                            this.isTrusted = src.isTrusted
                        }
                        this.timeStamp = src.timeStamp || Date.now()
                    } else {
                        Object.assign(this, src)
                    }
                    addProperty("which", calculateWhich, this);
                    if (0 === src.type.indexOf("touch")) {
                        delete config.pageX;
                        delete config.pageY
                    }
                    Object.assign(this, config);
                    this.guid = ++guid
                })));

                function addProperty(propName, hook, eventInstance) {
                    Object.defineProperty(eventInstance || eventsEngine.Event.prototype, propName, {
                        enumerable: true,
                        configurable: true,
                        get() {
                            return this.originalEvent && hook(this.originalEvent)
                        },
                        set(value) {
                            Object.defineProperty(this, propName, {
                                enumerable: true,
                                configurable: true,
                                writable: true,
                                value: value
                            })
                        }
                    })
                } ["target", "relatedTarget", "delegateTarget", "altKey", "bubbles", "cancelable", "changedTouches", "ctrlKey", "detail", "eventPhase", "metaKey", "shiftKey", "view", "char", "code", "charCode", "key", "keyCode", "button", "buttons", "offsetX", "offsetY", "pointerId", "pointerType", "targetTouches", "toElement", "touches"].forEach((prop => addProperty(prop, (event => event[prop]))));
                (0, _hook_touch_props.default)(addProperty);
                const beforeSetStrategy = (0, _callbacks.default)();
                const afterSetStrategy = (0, _callbacks.default)();
                eventsEngine.set = function(engine) {
                    beforeSetStrategy.fire();
                    eventsEngine.inject(engine);
                    initEvent(engine.Event);
                    afterSetStrategy.fire()
                };
                eventsEngine.subscribeGlobal = function() {
                    applyForEach(arguments, normalizeOnArguments((function() {
                        const args = arguments;
                        eventsEngine.on.apply(this, args);
                        beforeSetStrategy.add((function() {
                            const offArgs = Array.prototype.slice.call(args, 0);
                            offArgs.splice(3, 1);
                            eventsEngine.off.apply(this, offArgs)
                        }));
                        afterSetStrategy.add((function() {
                            eventsEngine.on.apply(this, args)
                        }))
                    })))
                };
                eventsEngine.forcePassiveFalseEventNames = forcePassiveFalseEventNames;
                eventsEngine.passiveEventHandlersSupported = passiveEventHandlersSupported;
                exports.default = eventsEngine
            },
        40866:
            /*!******************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/events/core/m_hook_touch_props.js ***!
              \******************************************************************************************/
            function(__unused_webpack_module, exports) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = function(callback) {
                    touchPropsToHook.forEach((name => {
                        callback(name, (event => touchPropHook(name, event)))
                    }), this)
                };
                const touchPropsToHook = ["pageX", "pageY", "screenX", "screenY", "clientX", "clientY"];
                const touchPropHook = function(name, event) {
                    if (event[name] && !event.touches || !event.touches) {
                        return event[name]
                    }
                    const touches = event.touches.length ? event.touches : event.changedTouches;
                    if (!touches.length) {
                        return
                    }
                    return touches[0][name]
                }
            },
        34422:
            /*!********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/events/core/m_keyboard_processor.js ***!
              \********************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774));
                var _index = __webpack_require__( /*! ../../../common/core/events/utils/index */ 98834);
                var _class = _interopRequireDefault(__webpack_require__( /*! ../../../core/class */ 55620));
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553));

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const createKeyDownOptions = e => ({
                    keyName: (0, _index.normalizeKeyName)(e),
                    key: e.key,
                    code: e.code,
                    ctrl: e.ctrlKey,
                    location: e.location,
                    metaKey: e.metaKey,
                    shift: e.shiftKey,
                    alt: e.altKey,
                    which: e.which,
                    originalEvent: e
                });
                const KeyboardProcessor = _class.default.inherit({
                    _keydown: (0, _index.addNamespace)("keydown", "KeyboardProcessor"),
                    _compositionStart: (0, _index.addNamespace)("compositionstart", "KeyboardProcessor"),
                    _compositionEnd: (0, _index.addNamespace)("compositionend", "KeyboardProcessor"),
                    ctor(options) {
                        options = options || {};
                        if (options.element) {
                            this._element = (0, _renderer.default)(options.element)
                        }
                        if (options.focusTarget) {
                            this._focusTarget = options.focusTarget
                        }
                        this._handler = options.handler;
                        if (this._element) {
                            this._processFunction = e => {
                                const focusTargets = (0, _renderer.default)(this._focusTarget).toArray();
                                const isNotFocusTarget = this._focusTarget && this._focusTarget !== e.target && !focusTargets.includes(e.target);
                                const shouldSkipProcessing = this._isComposingJustFinished && 229 === e.which || this._isComposing || isNotFocusTarget;
                                this._isComposingJustFinished = false;
                                if (!shouldSkipProcessing) {
                                    this.process(e)
                                }
                            };
                            this._toggleProcessingWithContext = this.toggleProcessing.bind(this);
                            _events_engine.default.on(this._element, this._keydown, this._processFunction);
                            _events_engine.default.on(this._element, this._compositionStart, this._toggleProcessingWithContext);
                            _events_engine.default.on(this._element, this._compositionEnd, this._toggleProcessingWithContext)
                        }
                    },
                    dispose() {
                        if (this._element) {
                            _events_engine.default.off(this._element, this._keydown, this._processFunction);
                            _events_engine.default.off(this._element, this._compositionStart, this._toggleProcessingWithContext);
                            _events_engine.default.off(this._element, this._compositionEnd, this._toggleProcessingWithContext)
                        }
                        this._element = void 0;
                        this._handler = void 0
                    },
                    process(e) {
                        this._handler(createKeyDownOptions(e))
                    },
                    toggleProcessing(_ref) {
                        let {
                            type: type
                        } = _ref;
                        this._isComposing = "compositionstart" === type;
                        this._isComposingJustFinished = !this._isComposing
                    }
                });
                KeyboardProcessor.createKeyDownOptions = createKeyDownOptions;
                exports.default = KeyboardProcessor
            },
        58065:
            /*!*******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/events/core/m_wheel.js ***!
              \*******************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.name = void 0;
                var _event_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/event_registrator */ 15273));
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774));
                var _index = __webpack_require__( /*! ../../../common/core/events/utils/index */ 98834);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553));

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const EVENT_NAME = exports.name = "dxmousewheel";
                const wheel = {
                    setup(element) {
                        const $element = (0, _renderer.default)(element);
                        _events_engine.default.on($element, (0, _index.addNamespace)("wheel", "dxWheel"), wheel._wheelHandler.bind(wheel))
                    },
                    teardown(element) {
                        _events_engine.default.off(element, ".dxWheel")
                    },
                    _wheelHandler(e) {
                        const {
                            deltaMode: deltaMode,
                            deltaY: deltaY,
                            deltaX: deltaX,
                            deltaZ: deltaZ
                        } = e.originalEvent;
                        (0, _index.fireEvent)({
                            type: EVENT_NAME,
                            originalEvent: e,
                            delta: this._normalizeDelta(deltaY, deltaMode),
                            deltaX: deltaX,
                            deltaY: deltaY,
                            deltaZ: deltaZ,
                            deltaMode: deltaMode,
                            pointerType: "mouse"
                        });
                        e.stopPropagation()
                    },
                    _normalizeDelta(delta) {
                        let deltaMode = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0;
                        if (0 === deltaMode) {
                            return -delta
                        }
                        return -30 * delta
                    }
                };
                (0, _event_registrator.default)(EVENT_NAME, wheel)
            },
        77859:
            /*!********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/events/gesture/m_emitter.gesture.js ***!
              \********************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _emitter = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/emitter */ 59e3));
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774));
                var _index = __webpack_require__( /*! ../../../common/core/events/utils/index */ 98834);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553));
                var _call_once = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/call_once */ 13630));
                var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781);
                var _math = __webpack_require__( /*! ../../../core/utils/math */ 50254);
                var _ready_callbacks = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/ready_callbacks */ 3122));
                var _style = __webpack_require__( /*! ../../../core/utils/style */ 58515);
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528);
                var _m_devices = _interopRequireDefault(__webpack_require__( /*! ../../core/m_devices */ 98905));
                var _m_dom = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/m_dom */ 76400));

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const ready = _ready_callbacks.default.add;
                const {
                    abs: abs
                } = Math;
                let TOUCH_BOUNDARY = 10;
                const setGestureCover = (0, _call_once.default)((() => {
                    const isDesktop = "desktop" === _m_devices.default.real().deviceType;
                    if (!(0, _style.styleProp)("pointer-events") || !isDesktop) {
                        return _common.noop
                    }
                    const $cover = (0, _renderer.default)("<div>").addClass("dx-gesture-cover").css("pointerEvents", "none");
                    _events_engine.default.subscribeGlobal($cover, "dxmousewheel", (e => {
                        e.preventDefault()
                    }));
                    ready((() => {
                        $cover.appendTo("body")
                    }));
                    return function(toggle, cursor) {
                        $cover.css("pointerEvents", toggle ? "all" : "none");
                        toggle && $cover.css("cursor", cursor)
                    }
                }));
                const GestureEmitter = _emitter.default.inherit({
                    gesture: true,
                    configure(data) {
                        this.getElement().css("msTouchAction", data.immediate ? "pinch-zoom" : "");
                        this.callBase(data)
                    },
                    allowInterruptionByMouseWheel() {
                        return 2 !== this._stage
                    },
                    getDirection() {
                        return this.direction
                    },
                    _cancel() {
                        this.callBase.apply(this, arguments);
                        this._toggleGestureCover(false);
                        this._stage = 0
                    },
                    start(e) {
                        if (e._needSkipEvent || (0, _index.needSkipEvent)(e)) {
                            this._cancel(e);
                            return
                        }
                        this._startEvent = (0, _index.createEvent)(e);
                        this._startEventData = (0, _index.eventData)(e);
                        this._stage = 1;
                        this._init(e);
                        this._setupImmediateTimer()
                    },
                    _setupImmediateTimer() {
                        clearTimeout(this._immediateTimer);
                        this._immediateAccepted = false;
                        if (!this.immediate) {
                            return
                        }
                        if (0 === this.immediateTimeout) {
                            this._immediateAccepted = true;
                            return
                        }
                        this._immediateTimer = setTimeout((() => {
                            this._immediateAccepted = true
                        }), this.immediateTimeout ?? 180)
                    },
                    move(e) {
                        if (1 === this._stage && this._directionConfirmed(e)) {
                            this._stage = 2;
                            this._resetActiveElement();
                            this._toggleGestureCover(true);
                            this._clearSelection(e);
                            this._adjustStartEvent(e);
                            this._start(this._startEvent);
                            if (0 === this._stage) {
                                return
                            }
                            this._requestAccept(e);
                            this._move(e);
                            this._forgetAccept()
                        } else if (2 === this._stage) {
                            this._clearSelection(e);
                            this._move(e)
                        }
                    },
                    _directionConfirmed(e) {
                        const touchBoundary = this._getTouchBoundary(e);
                        const delta = (0, _index.eventDelta)(this._startEventData, (0, _index.eventData)(e));
                        const deltaX = abs(delta.x);
                        const deltaY = abs(delta.y);
                        const horizontalMove = this._validateMove(touchBoundary, deltaX, deltaY);
                        const verticalMove = this._validateMove(touchBoundary, deltaY, deltaX);
                        const direction = this.getDirection(e);
                        const bothAccepted = "both" === direction && (horizontalMove || verticalMove);
                        const horizontalAccepted = "horizontal" === direction && horizontalMove;
                        const verticalAccepted = "vertical" === direction && verticalMove;
                        return bothAccepted || horizontalAccepted || verticalAccepted || this._immediateAccepted
                    },
                    _validateMove(touchBoundary, mainAxis, crossAxis) {
                        return mainAxis && mainAxis >= touchBoundary && (this.immediate ? mainAxis >= crossAxis : true)
                    },
                    _getTouchBoundary(e) {
                        return this.immediate || (0, _index.isDxMouseWheelEvent)(e) ? 0 : TOUCH_BOUNDARY
                    },
                    _adjustStartEvent(e) {
                        const touchBoundary = this._getTouchBoundary(e);
                        const delta = (0, _index.eventDelta)(this._startEventData, (0, _index.eventData)(e));
                        this._startEvent.pageX += (0, _math.sign)(delta.x) * touchBoundary;
                        this._startEvent.pageY += (0, _math.sign)(delta.y) * touchBoundary
                    },
                    _resetActiveElement() {
                        if ("ios" === _m_devices.default.real().platform && this.getElement().find(":focus").length) {
                            _m_dom.default.resetActiveElement()
                        }
                    },
                    _toggleGestureCover(toggle) {
                        this._toggleGestureCoverImpl(toggle)
                    },
                    _toggleGestureCoverImpl(toggle) {
                        const isStarted = 2 === this._stage;
                        if (isStarted) {
                            ! function(toggle, cursor) {
                                const gestureCoverStrategy = setGestureCover();
                                gestureCoverStrategy(toggle, cursor)
                            }(toggle, this.getElement().css("cursor"))
                        }
                    },
                    _clearSelection(e) {
                        if ((0, _index.isDxMouseWheelEvent)(e) || (0, _index.isTouchEvent)(e)) {
                            return
                        }
                        _m_dom.default.clearSelection()
                    },
                    end(e) {
                        this._toggleGestureCover(false);
                        if (2 === this._stage) {
                            this._end(e)
                        } else if (1 === this._stage) {
                            this._stop(e)
                        }
                        this._stage = 0
                    },
                    dispose() {
                        clearTimeout(this._immediateTimer);
                        this.callBase.apply(this, arguments);
                        this._toggleGestureCover(false)
                    },
                    _init: _common.noop,
                    _start: _common.noop,
                    _move: _common.noop,
                    _stop: _common.noop,
                    _end: _common.noop
                });
                GestureEmitter.initialTouchBoundary = TOUCH_BOUNDARY;
                GestureEmitter.touchBoundary = function(newBoundary) {
                    if ((0, _type.isDefined)(newBoundary)) {
                        TOUCH_BOUNDARY = newBoundary;
                        return
                    }
                    return TOUCH_BOUNDARY
                };
                exports.default = GestureEmitter
            },
        18572:
            /*!***************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/events/gesture/m_emitter.gesture.scroll.js ***!
              \***************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _frame = __webpack_require__( /*! ../../../common/core/animation/frame */ 84096);
                var _emitter_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/emitter_registrator */ 81411));
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774));
                var _emitter = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/gesture/emitter.gesture */ 85915));
                var _index = __webpack_require__( /*! ../../../common/core/events/utils/index */ 98834);
                var _class = _interopRequireDefault(__webpack_require__( /*! ../../../core/class */ 55620));
                var _m_devices = _interopRequireDefault(__webpack_require__( /*! ../../core/m_devices */ 98905));

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const {
                    abstract: abstract
                } = _class.default;
                const realDevice = _m_devices.default.real();
                const Locker = _class.default.inherit(function() {
                    const NAMESPACED_SCROLL_EVENT = (0, _index.addNamespace)("scroll", "dxScrollEmitter");
                    return {
                        ctor(element) {
                            this._element = element;
                            this._locked = false;
                            this._proxiedScroll = e => {
                                if (!this._disposed) {
                                    this._scroll(e)
                                }
                            };
                            _events_engine.default.on(this._element, NAMESPACED_SCROLL_EVENT, this._proxiedScroll)
                        },
                        _scroll: abstract,
                        check(e, callback) {
                            if (this._locked) {
                                callback()
                            }
                        },
                        dispose() {
                            this._disposed = true;
                            _events_engine.default.off(this._element, NAMESPACED_SCROLL_EVENT, this._proxiedScroll)
                        }
                    }
                }());
                const TimeoutLocker = Locker.inherit({
                    ctor(element, timeout) {
                        this.callBase(element);
                        this._timeout = timeout
                    },
                    _scroll() {
                        this._prepare();
                        this._forget()
                    },
                    _prepare() {
                        if (this._timer) {
                            this._clearTimer()
                        }
                        this._locked = true
                    },
                    _clearTimer() {
                        clearTimeout(this._timer);
                        this._locked = false;
                        this._timer = null
                    },
                    _forget() {
                        const that = this;
                        this._timer = setTimeout((() => {
                            that._clearTimer()
                        }), this._timeout)
                    },
                    dispose() {
                        this.callBase();
                        this._clearTimer()
                    }
                });
                const WheelLocker = TimeoutLocker.inherit({
                    ctor(element) {
                        this.callBase(element, 400);
                        this._lastWheelDirection = null
                    },
                    check(e, callback) {
                        this._checkDirectionChanged(e);
                        this.callBase(e, callback)
                    },
                    _checkDirectionChanged(e) {
                        if (!(0, _index.isDxMouseWheelEvent)(e)) {
                            this._lastWheelDirection = null;
                            return
                        }
                        const direction = e.shiftKey || false;
                        const directionChange = null !== this._lastWheelDirection && direction !== this._lastWheelDirection;
                        this._lastWheelDirection = direction;
                        this._locked = this._locked && !directionChange
                    }
                });
                let PointerLocker = TimeoutLocker.inherit({
                    ctor(element) {
                        this.callBase(element, 400)
                    }
                });
                ! function() {
                    const {
                        ios: isIos,
                        android: isAndroid
                    } = realDevice;
                    if (!(isIos || isAndroid)) {
                        return
                    }
                    PointerLocker = Locker.inherit({
                        _scroll() {
                            this._locked = true;
                            const that = this;
                            (0, _frame.cancelAnimationFrame)(this._scrollFrame);
                            this._scrollFrame = (0, _frame.requestAnimationFrame)((() => {
                                that._locked = false
                            }))
                        },
                        check(e, callback) {
                            (0, _frame.cancelAnimationFrame)(this._scrollFrame);
                            (0, _frame.cancelAnimationFrame)(this._checkFrame);
                            const that = this;
                            const {
                                callBase: callBase
                            } = this;
                            this._checkFrame = (0, _frame.requestAnimationFrame)((() => {
                                callBase.call(that, e, callback);
                                that._locked = false
                            }))
                        },
                        dispose() {
                            this.callBase();
                            (0, _frame.cancelAnimationFrame)(this._scrollFrame);
                            (0, _frame.cancelAnimationFrame)(this._checkFrame)
                        }
                    })
                }();
                const ScrollEmitter = _emitter.default.inherit(function() {
                    const FRAME_DURATION = Math.round(1e3 / 60);
                    return {
                        ctor(element) {
                            this.callBase.apply(this, arguments);
                            this.direction = "both";
                            this._pointerLocker = new PointerLocker(element);
                            this._wheelLocker = new WheelLocker(element)
                        },
                        validate: () => true,
                        configure(data) {
                            if (data.scrollTarget) {
                                this._pointerLocker.dispose();
                                this._wheelLocker.dispose();
                                this._pointerLocker = new PointerLocker(data.scrollTarget);
                                this._wheelLocker = new WheelLocker(data.scrollTarget)
                            }
                            this.callBase(data)
                        },
                        _init(e) {
                            this._wheelLocker.check(e, (() => {
                                if ((0, _index.isDxMouseWheelEvent)(e)) {
                                    this._accept(e)
                                }
                            }));
                            this._pointerLocker.check(e, (() => {
                                const skipCheck = this.isNative && (0, _index.isMouseEvent)(e);
                                if (!(0, _index.isDxMouseWheelEvent)(e) && !skipCheck) {
                                    this._accept(e)
                                }
                            }));
                            this._fireEvent("dxscrollinit", e);
                            this._prevEventData = (0, _index.eventData)(e)
                        },
                        move(e) {
                            this.callBase.apply(this, arguments);
                            e.isScrollingEvent = this.isNative || e.isScrollingEvent
                        },
                        _start(e) {
                            this._savedEventData = (0, _index.eventData)(e);
                            this._fireEvent("dxscrollstart", e);
                            this._prevEventData = (0, _index.eventData)(e)
                        },
                        _move(e) {
                            const currentEventData = (0, _index.eventData)(e);
                            this._fireEvent("dxscroll", e, {
                                delta: (0, _index.eventDelta)(this._prevEventData, currentEventData)
                            });
                            const delta = (0, _index.eventDelta)(this._savedEventData, currentEventData);
                            if (delta.time > 200) {
                                this._savedEventData = this._prevEventData
                            }
                            this._prevEventData = (0, _index.eventData)(e)
                        },
                        _end(e) {
                            const endEventDelta = (0, _index.eventDelta)(this._prevEventData, (0, _index.eventData)(e));
                            let velocity = {
                                x: 0,
                                y: 0
                            };
                            if (!(0, _index.isDxMouseWheelEvent)(e) && endEventDelta.time < 100) {
                                const delta = (0, _index.eventDelta)(this._savedEventData, this._prevEventData);
                                const velocityMultiplier = FRAME_DURATION / delta.time;
                                velocity = {
                                    x: delta.x * velocityMultiplier,
                                    y: delta.y * velocityMultiplier
                                }
                            }
                            this._fireEvent("dxscrollend", e, {
                                velocity: velocity
                            })
                        },
                        _stop(e) {
                            this._fireEvent("dxscrollstop", e)
                        },
                        cancel(e) {
                            this.callBase.apply(this, arguments);
                            this._fireEvent("dxscrollcancel", e)
                        },
                        dispose() {
                            this.callBase.apply(this, arguments);
                            this._pointerLocker.dispose();
                            this._wheelLocker.dispose()
                        },
                        _clearSelection() {
                            if (this.isNative) {
                                return
                            }
                            return this.callBase.apply(this, arguments)
                        },
                        _toggleGestureCover() {
                            if (this.isNative) {
                                return
                            }
                            return this.callBase.apply(this, arguments)
                        }
                    }
                }());
                (0, _emitter_registrator.default)({
                    emitter: ScrollEmitter,
                    events: ["dxscrollinit", "dxscrollstart", "dxscroll", "dxscrollend", "dxscrollstop", "dxscrollcancel"]
                });
                exports.default = {
                    init: "dxscrollinit",
                    start: "dxscrollstart",
                    move: "dxscroll",
                    end: "dxscrollend",
                    stop: "dxscrollstop",
                    cancel: "dxscrollcancel",
                    scroll: "scroll"
                }
            },
        28356:
            /*!**************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/events/m_click.js ***!
              \**************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.name = void 0;
                var _frame = __webpack_require__( /*! ../../animation/frame */ 81578);
                var _emitter = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/core/emitter */ 59e3));
                var _emitter_registrator = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/core/emitter_registrator */ 81411));
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/core/events_engine */ 92774));
                var _pointer = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/pointer */ 89797));
                var _event_nodes_disposing = __webpack_require__( /*! ../../common/core/events/utils/event_nodes_disposing */ 47413);
                var _event_target = __webpack_require__( /*! ../../common/core/events/utils/event_target */ 45280);
                var _index = __webpack_require__( /*! ../../common/core/events/utils/index */ 98834);
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../core/dom_adapter */ 64960));
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553));
                var _m_devices = _interopRequireDefault(__webpack_require__( /*! ../core/m_devices */ 98905));
                var _m_dom = _interopRequireDefault(__webpack_require__( /*! ../core/utils/m_dom */ 76400));

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const CLICK_EVENT_NAME = exports.name = "dxclick";
                _frame.requestAnimationFrame, _frame.cancelAnimationFrame;
                let prevented = null;
                let lastFiredEvent = null;
                const onNodeRemove = () => {
                    lastFiredEvent = null
                };
                const clickHandler = function(e) {
                    const {
                        originalEvent: originalEvent
                    } = e;
                    const eventAlreadyFired = lastFiredEvent === originalEvent || originalEvent && originalEvent.DXCLICK_FIRED;
                    const leftButton = !e.which || 1 === e.which;
                    if (leftButton && !prevented && !eventAlreadyFired) {
                        if (originalEvent) {
                            originalEvent.DXCLICK_FIRED = true
                        }(0, _event_nodes_disposing.unsubscribeNodesDisposing)(lastFiredEvent, onNodeRemove);
                        lastFiredEvent = originalEvent;
                        (0, _event_nodes_disposing.subscribeNodesDisposing)(lastFiredEvent, onNodeRemove);
                        (0, _index.fireEvent)({
                            type: CLICK_EVENT_NAME,
                            originalEvent: e
                        })
                    }
                };
                const ClickEmitter = _emitter.default.inherit({
                    ctor(element) {
                        this.callBase(element);
                        _events_engine.default.on(this.getElement(), "click", clickHandler)
                    },
                    start() {
                        prevented = null
                    },
                    cancel() {
                        prevented = true
                    },
                    dispose() {
                        _events_engine.default.off(this.getElement(), "click", clickHandler)
                    }
                });
                ! function() {
                    const desktopDevice = _m_devices.default.real().generic;
                    if (!desktopDevice) {
                        let startTarget = null;
                        let blurPrevented = false;
                        const isInput = function(element) {
                            return (0, _renderer.default)(element).is("input, textarea, select, button ,:focus, :focus *")
                        };
                        const pointerDownHandler = function(e) {
                            startTarget = e.target;
                            blurPrevented = e.isDefaultPrevented()
                        };
                        const getTarget = function(e) {
                            const target = (0, _event_target.getEventTarget)(e);
                            return (0, _renderer.default)(target)
                        };
                        const clickHandler = function(e) {
                            const $target = getTarget(e);
                            if (!blurPrevented && startTarget && !$target.is(startTarget) && !(0, _renderer.default)(startTarget).is("label") && isInput($target)) {
                                _m_dom.default.resetActiveElement()
                            }
                            startTarget = null;
                            blurPrevented = false
                        };
                        const NATIVE_CLICK_FIXER_NAMESPACE = "NATIVE_CLICK_FIXER";
                        const document = _dom_adapter.default.getDocument();
                        _events_engine.default.subscribeGlobal(document, (0, _index.addNamespace)(_pointer.default.down, NATIVE_CLICK_FIXER_NAMESPACE), pointerDownHandler);
                        _events_engine.default.subscribeGlobal(document, (0, _index.addNamespace)("click", NATIVE_CLICK_FIXER_NAMESPACE), clickHandler)
                    }
                }();
                (0, _emitter_registrator.default)({
                    emitter: ClickEmitter,
                    bubble: true,
                    events: [CLICK_EVENT_NAME]
                })
            },
        90096:
            /*!********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/events/m_contextmenu.js ***!
              \********************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.name = void 0;
                var _event_registrator = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/core/event_registrator */ 15273));
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/core/events_engine */ 92774));
                var _hold = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/hold */ 68095));
                var _index = __webpack_require__( /*! ../../common/core/events/utils/index */ 98834);
                var _class = _interopRequireDefault(__webpack_require__( /*! ../../core/class */ 55620));
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553));
                var _m_devices = _interopRequireDefault(__webpack_require__( /*! ../core/m_devices */ 98905));
                var _m_support = _interopRequireDefault(__webpack_require__( /*! ../core/utils/m_support */ 85991));

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const CONTEXTMENU_NAMESPACED_EVENT_NAME = (0, _index.addNamespace)("contextmenu", "dxContexMenu");
                const HOLD_NAMESPACED_EVENT_NAME = (0, _index.addNamespace)(_hold.default.name, "dxContexMenu");
                const ContextMenu = _class.default.inherit({
                    setup(element) {
                        const $element = (0, _renderer.default)(element);
                        _events_engine.default.on($element, CONTEXTMENU_NAMESPACED_EVENT_NAME, this._contextMenuHandler.bind(this));
                        if (_m_support.default.touch || _m_devices.default.isSimulator()) {
                            _events_engine.default.on($element, HOLD_NAMESPACED_EVENT_NAME, this._holdHandler.bind(this))
                        }
                    },
                    _holdHandler(e) {
                        if ((0, _index.isMouseEvent)(e) && !_m_devices.default.isSimulator()) {
                            return
                        }
                        this._fireContextMenu(e)
                    },
                    _contextMenuHandler(e) {
                        this._fireContextMenu(e)
                    },
                    _fireContextMenu: e => (0, _index.fireEvent)({
                        type: "dxcontextmenu",
                        originalEvent: e
                    }),
                    teardown(element) {
                        _events_engine.default.off(element, ".dxContexMenu")
                    }
                });
                (0, _event_registrator.default)("dxcontextmenu", new ContextMenu);
                exports.name = "dxcontextmenu"
            },
        36212:
            /*!*****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/events/m_dblclick.js ***!
              \*****************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.name = exports.dblClick = void 0;
                var _click = __webpack_require__( /*! ../../common/core/events/click */ 64044);
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/core/events_engine */ 92774));
                var _index = __webpack_require__( /*! ../../common/core/events/utils/index */ 98834);
                var _class = _interopRequireDefault(__webpack_require__( /*! ../../core/class */ 55620));
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../core/dom_adapter */ 64960));
                var _dom = __webpack_require__( /*! ../../core/utils/dom */ 86858);

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const DBLCLICK_EVENT_NAME = exports.name = "dxdblclick";
                const NAMESPACED_CLICK_EVENT = (0, _index.addNamespace)(_click.name, "dxDblClick");
                const DblClick = _class.default.inherit({
                    ctor() {
                        this._handlerCount = 0;
                        this._forgetLastClick()
                    },
                    _forgetLastClick() {
                        this._firstClickTarget = null;
                        this._lastClickTimeStamp = -300
                    },
                    add() {
                        if (this._handlerCount <= 0) {
                            _events_engine.default.on(_dom_adapter.default.getDocument(), NAMESPACED_CLICK_EVENT, this._clickHandler.bind(this))
                        }
                        this._handlerCount += 1
                    },
                    _clickHandler(e) {
                        const timeStamp = e.timeStamp || Date.now();
                        const timeBetweenClicks = timeStamp - this._lastClickTimeStamp;
                        const isSimulated = timeBetweenClicks < 0;
                        const isDouble = !isSimulated && timeBetweenClicks < 300;
                        if (isDouble) {
                            (0, _index.fireEvent)({
                                type: DBLCLICK_EVENT_NAME,
                                target: (0, _dom.closestCommonParent)(this._firstClickTarget, e.target),
                                originalEvent: e
                            });
                            this._forgetLastClick()
                        } else {
                            this._firstClickTarget = e.target;
                            this._lastClickTimeStamp = timeStamp;
                            clearTimeout(this._lastClickClearTimeout);
                            this._lastClickClearTimeout = setTimeout((() => {
                                this._forgetLastClick()
                            }), 600)
                        }
                    },
                    remove() {
                        this._handlerCount -= 1;
                        if (this._handlerCount <= 0) {
                            this._forgetLastClick();
                            _events_engine.default.off(_dom_adapter.default.getDocument(), NAMESPACED_CLICK_EVENT, void 0);
                            clearTimeout(this._lastClickClearTimeout);
                            this._handlerCount = 0
                        }
                    }
                });
                exports.dblClick = new DblClick
            },
        88480:
            /*!*************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/events/m_drag.js ***!
              \*************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.start = exports.move = exports.leave = exports.enter = exports.end = exports.drop = void 0;
                var _emitter_registrator = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/core/emitter_registrator */ 81411));
                var _event_registrator = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/core/event_registrator */ 15273));
                var _emitter = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/gesture/emitter.gesture */ 85915));
                var _index = __webpack_require__( /*! ../../common/core/events/utils/index */ 98834);
                var _element_data = __webpack_require__( /*! ../../core/element_data */ 74663);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553));
                var _array = __webpack_require__( /*! ../../core/utils/array */ 94487);
                var _dom = __webpack_require__( /*! ../../core/utils/dom */ 86858);
                var iteratorUtils = function(e, r) {
                    if (!r && e && e.__esModule) {
                        return e
                    }
                    if (null === e || "object" != typeof e && "function" != typeof e) {
                        return {
                            default: e
                        }
                    }
                    var t = _getRequireWildcardCache(r);
                    if (t && t.has(e)) {
                        return t.get(e)
                    }
                    var n = {
                            __proto__: null
                        },
                        a = Object.defineProperty && Object.getOwnPropertyDescriptor;
                    for (var u in e) {
                        if ("default" !== u && {}.hasOwnProperty.call(e, u)) {
                            var i = a ? Object.getOwnPropertyDescriptor(e, u) : null;
                            i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]
                        }
                    }
                    return n.default = e, t && t.set(e, n), n
                }(__webpack_require__( /*! ../../core/utils/iterator */ 21274));

                function _getRequireWildcardCache(e) {
                    if ("function" != typeof WeakMap) {
                        return null
                    }
                    var r = new WeakMap,
                        t = new WeakMap;
                    return (_getRequireWildcardCache = function(e) {
                        return e ? t : r
                    })(e)
                }

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const DRAG_START_EVENT = exports.start = "dxdragstart";
                const DRAG_EVENT = exports.move = "dxdrag";
                const DRAG_END_EVENT = exports.end = "dxdragend";
                const DRAG_ENTER_EVENT = exports.enter = "dxdragenter";
                const DRAG_LEAVE_EVENT = exports.leave = "dxdragleave";
                const DROP_EVENT = exports.drop = "dxdrop";
                const knownDropTargets = [];
                const knownDropTargetSelectors = [];
                const knownDropTargetConfigs = [];
                const dropTargetRegistration = {
                    setup(element, data) {
                        const knownDropTarget = knownDropTargets.includes(element);
                        if (!knownDropTarget) {
                            knownDropTargets.push(element);
                            knownDropTargetSelectors.push([]);
                            knownDropTargetConfigs.push(data || {})
                        }
                    },
                    add(element, handleObj) {
                        const index = knownDropTargets.indexOf(element);
                        this.updateEventsCounter(element, handleObj.type, 1);
                        const {
                            selector: selector
                        } = handleObj;
                        if (!knownDropTargetSelectors[index].includes(selector)) {
                            knownDropTargetSelectors[index].push(selector)
                        }
                    },
                    updateEventsCounter(element, event, value) {
                        if ([DRAG_ENTER_EVENT, DRAG_LEAVE_EVENT, DROP_EVENT].includes(event)) {
                            const eventsCount = (0, _element_data.data)(element, "dxDragEventsCount") || 0;
                            (0, _element_data.data)(element, "dxDragEventsCount", Math.max(0, eventsCount + value))
                        }
                    },
                    remove(element, handleObj) {
                        this.updateEventsCounter(element, handleObj.type, -1)
                    },
                    teardown(element) {
                        const handlersCount = (0, _element_data.data)(element, "dxDragEventsCount");
                        if (!handlersCount) {
                            const index = knownDropTargets.indexOf(element);
                            knownDropTargets.splice(index, 1);
                            knownDropTargetSelectors.splice(index, 1);
                            knownDropTargetConfigs.splice(index, 1);
                            (0, _element_data.removeData)(element, "dxDragEventsCount")
                        }
                    }
                };
                (0, _event_registrator.default)(DRAG_ENTER_EVENT, dropTargetRegistration);
                (0, _event_registrator.default)(DRAG_LEAVE_EVENT, dropTargetRegistration);
                (0, _event_registrator.default)(DROP_EVENT, dropTargetRegistration);
                const DragEmitter = _emitter.default.inherit({
                    ctor(element) {
                        this.callBase(element);
                        this.direction = "both"
                    },
                    _init(e) {
                        this._initEvent = e
                    },
                    _start(e) {
                        e = this._fireEvent(DRAG_START_EVENT, this._initEvent);
                        this._maxLeftOffset = e.maxLeftOffset;
                        this._maxRightOffset = e.maxRightOffset;
                        this._maxTopOffset = e.maxTopOffset;
                        this._maxBottomOffset = e.maxBottomOffset;
                        if (e.targetElements || null === e.targetElements) {
                            const dropTargets = (0, _array.wrapToArray)(e.targetElements || []);
                            this._dropTargets = iteratorUtils.map(dropTargets, (element => (0, _renderer.default)(element).get(0)))
                        } else {
                            this._dropTargets = knownDropTargets
                        }
                    },
                    _move(e) {
                        const eventData = (0, _index.eventData)(e);
                        const dragOffset = this._calculateOffset(eventData);
                        e = this._fireEvent(DRAG_EVENT, e, {
                            offset: dragOffset
                        });
                        this._processDropTargets(e);
                        if (!e._cancelPreventDefault) {
                            e.preventDefault()
                        }
                    },
                    _calculateOffset(eventData) {
                        return {
                            x: this._calculateXOffset(eventData),
                            y: this._calculateYOffset(eventData)
                        }
                    },
                    _calculateXOffset(eventData) {
                        if ("vertical" !== this.direction) {
                            const offset = eventData.x - this._startEventData.x;
                            return this._fitOffset(offset, this._maxLeftOffset, this._maxRightOffset)
                        }
                        return 0
                    },
                    _calculateYOffset(eventData) {
                        if ("horizontal" !== this.direction) {
                            const offset = eventData.y - this._startEventData.y;
                            return this._fitOffset(offset, this._maxTopOffset, this._maxBottomOffset)
                        }
                        return 0
                    },
                    _fitOffset(offset, minOffset, maxOffset) {
                        if (null != minOffset) {
                            offset = Math.max(offset, -minOffset)
                        }
                        if (null != maxOffset) {
                            offset = Math.min(offset, maxOffset)
                        }
                        return offset
                    },
                    _processDropTargets(e) {
                        const target = this._findDropTarget(e);
                        const sameTarget = target === this._currentDropTarget;
                        if (!sameTarget) {
                            this._fireDropTargetEvent(e, DRAG_LEAVE_EVENT);
                            this._currentDropTarget = target;
                            this._fireDropTargetEvent(e, DRAG_ENTER_EVENT)
                        }
                    },
                    _fireDropTargetEvent(event, eventName) {
                        if (!this._currentDropTarget) {
                            return
                        }
                        const eventData = {
                            type: eventName,
                            originalEvent: event,
                            draggingElement: this._$element.get(0),
                            target: this._currentDropTarget
                        };
                        (0, _index.fireEvent)(eventData)
                    },
                    _findDropTarget(e) {
                        const that = this;
                        let result;
                        iteratorUtils.each(knownDropTargets, ((_, target) => {
                            if (!that._checkDropTargetActive(target)) {
                                return
                            }
                            const $target = (0, _renderer.default)(target);
                            iteratorUtils.each(function($element) {
                                const dropTargetIndex = knownDropTargets.indexOf($element.get(0));
                                const dropTargetSelectors = knownDropTargetSelectors[dropTargetIndex].filter((selector => selector));
                                let $delegatedTargets = $element.find(dropTargetSelectors.join(", "));
                                if (knownDropTargetSelectors[dropTargetIndex].includes(void 0)) {
                                    $delegatedTargets = $delegatedTargets.add($element)
                                }
                                return $delegatedTargets
                            }($target), ((_, delegatedTarget) => {
                                const $delegatedTarget = (0, _renderer.default)(delegatedTarget);
                                if (that._checkDropTarget(function($element) {
                                        const dropTargetIndex = knownDropTargets.indexOf($element.get(0));
                                        return knownDropTargetConfigs[dropTargetIndex]
                                    }($target), $delegatedTarget, (0, _renderer.default)(result), e)) {
                                    result = delegatedTarget
                                }
                            }))
                        }));
                        return result
                    },
                    _checkDropTargetActive(target) {
                        let active = false;
                        iteratorUtils.each(this._dropTargets, ((_, activeTarget) => {
                            active = active || activeTarget === target || (0, _dom.contains)(activeTarget, target);
                            return !active
                        }));
                        return active
                    },
                    _checkDropTarget(config, $target, $prevTarget, e) {
                        const isDraggingElement = $target.get(0) === (0, _renderer.default)(e.target).get(0);
                        if (isDraggingElement) {
                            return false
                        }
                        const targetPosition = function(dropTargetConfig, $element) {
                            if (dropTargetConfig.itemPositionFunc) {
                                return dropTargetConfig.itemPositionFunc($element)
                            }
                            return $element.offset()
                        }(config, $target);
                        if (e.pageX < targetPosition.left) {
                            return false
                        }
                        if (e.pageY < targetPosition.top) {
                            return false
                        }
                        const targetSize = function(dropTargetConfig, $element) {
                            if (dropTargetConfig.itemSizeFunc) {
                                return dropTargetConfig.itemSizeFunc($element)
                            }
                            return {
                                width: $element.get(0).getBoundingClientRect().width,
                                height: $element.get(0).getBoundingClientRect().height
                            }
                        }(config, $target);
                        if (e.pageX > targetPosition.left + targetSize.width) {
                            return false
                        }
                        if (e.pageY > targetPosition.top + targetSize.height) {
                            return false
                        }
                        if ($prevTarget.length && $prevTarget.closest($target).length) {
                            return false
                        }
                        if (config.checkDropTarget && !config.checkDropTarget($target, e)) {
                            return false
                        }
                        return $target
                    },
                    _end(e) {
                        const eventData = (0, _index.eventData)(e);
                        this._fireEvent(DRAG_END_EVENT, e, {
                            offset: this._calculateOffset(eventData)
                        });
                        this._fireDropTargetEvent(e, DROP_EVENT);
                        delete this._currentDropTarget
                    }
                });
                (0, _emitter_registrator.default)({
                    emitter: DragEmitter,
                    events: [DRAG_START_EVENT, DRAG_EVENT, DRAG_END_EVENT]
                })
            },
        3111:
            /*!*************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/events/m_hold.js ***!
              \*************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _emitter = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/core/emitter */ 59e3));
                var _emitter_registrator = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/core/emitter_registrator */ 81411));
                var _index = __webpack_require__( /*! ../../common/core/events/utils/index */ 98834);

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const {
                    abs: abs
                } = Math;
                const HoldEmitter = _emitter.default.inherit({
                    start(e) {
                        this._startEventData = (0, _index.eventData)(e);
                        this._startTimer(e)
                    },
                    _startTimer(e) {
                        const holdTimeout = "timeout" in this ? this.timeout : 750;
                        this._holdTimer = setTimeout((() => {
                            this._requestAccept(e);
                            this._fireEvent("dxhold", e, {
                                target: e.target
                            });
                            this._forgetAccept()
                        }), holdTimeout)
                    },
                    move(e) {
                        if (this._touchWasMoved(e)) {
                            this._cancel(e)
                        }
                    },
                    _touchWasMoved(e) {
                        const delta = (0, _index.eventDelta)(this._startEventData, (0, _index.eventData)(e));
                        return abs(delta.x) > 5 || abs(delta.y) > 5
                    },
                    end() {
                        this._stopTimer()
                    },
                    _stopTimer() {
                        clearTimeout(this._holdTimer)
                    },
                    cancel() {
                        this._stopTimer()
                    },
                    dispose() {
                        this._stopTimer()
                    }
                });
                (0, _emitter_registrator.default)({
                    emitter: HoldEmitter,
                    bubble: true,
                    events: ["dxhold"]
                });
                exports.default = {
                    name: "dxhold"
                }
            },
        57798:
            /*!**************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/events/m_hover.js ***!
              \**************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.start = exports.end = void 0;
                var _event_registrator = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/core/event_registrator */ 15273));
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/core/events_engine */ 92774));
                var _pointer = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/pointer */ 89797));
                var _index = __webpack_require__( /*! ../../common/core/events/utils/index */ 98834);
                var _class = _interopRequireDefault(__webpack_require__( /*! ../../core/class */ 55620));
                var _element_data = __webpack_require__( /*! ../../core/element_data */ 74663);
                var _m_devices = _interopRequireDefault(__webpack_require__( /*! ../core/m_devices */ 98905));

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const HOVERSTART = exports.start = "dxhoverstart";
                const POINTERENTER_NAMESPACED_EVENT_NAME = (0, _index.addNamespace)(_pointer.default.enter, "dxHoverStart");
                const HOVEREND = exports.end = "dxhoverend";
                const POINTERLEAVE_NAMESPACED_EVENT_NAME = (0, _index.addNamespace)(_pointer.default.leave, "dxHoverEnd");
                const Hover = _class.default.inherit({
                    noBubble: true,
                    ctor() {
                        this._handlerArrayKeyPath = `${this._eventNamespace}_HandlerStore`
                    },
                    setup(element) {
                        (0, _element_data.data)(element, this._handlerArrayKeyPath, {})
                    },
                    add(element, handleObj) {
                        const that = this;
                        const handler = function(e) {
                            that._handler(e)
                        };
                        _events_engine.default.on(element, this._originalEventName, handleObj.selector, handler);
                        (0, _element_data.data)(element, this._handlerArrayKeyPath)[handleObj.guid] = handler
                    },
                    _handler(e) {
                        if ((0, _index.isTouchEvent)(e) || _m_devices.default.isSimulator()) {
                            return
                        }(0, _index.fireEvent)({
                            type: this._eventName,
                            originalEvent: e,
                            delegateTarget: e.delegateTarget
                        })
                    },
                    remove(element, handleObj) {
                        const handler = (0, _element_data.data)(element, this._handlerArrayKeyPath)[handleObj.guid];
                        _events_engine.default.off(element, this._originalEventName, handleObj.selector, handler)
                    },
                    teardown(element) {
                        (0, _element_data.removeData)(element, this._handlerArrayKeyPath)
                    }
                });
                const HoverStart = Hover.inherit({
                    ctor() {
                        this._eventNamespace = "dxHoverStart";
                        this._eventName = HOVERSTART;
                        this._originalEventName = POINTERENTER_NAMESPACED_EVENT_NAME;
                        this.callBase()
                    },
                    _handler(e) {
                        const pointers = e.pointers || [];
                        if (!pointers.length) {
                            this.callBase(e)
                        }
                    }
                });
                const HoverEnd = Hover.inherit({
                    ctor() {
                        this._eventNamespace = "dxHoverEnd";
                        this._eventName = HOVEREND;
                        this._originalEventName = POINTERLEAVE_NAMESPACED_EVENT_NAME;
                        this.callBase()
                    }
                });
                (0, _event_registrator.default)(HOVERSTART, new HoverStart);
                (0, _event_registrator.default)(HOVEREND, new HoverEnd)
            },
        24381:
            /*!****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/events/m_pointer.js ***!
              \****************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _event_registrator = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/core/event_registrator */ 15273));
                var _mouse = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/pointer/mouse */ 5949));
                var _mouse_and_touch = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/pointer/mouse_and_touch */ 71887));
                var _touch = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/pointer/touch */ 71017));
                var _config = _interopRequireDefault(__webpack_require__( /*! ../../core/config */ 66636));
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 21274);
                var _m_devices = _interopRequireDefault(__webpack_require__( /*! ../core/m_devices */ 98905));
                var _m_support = _interopRequireDefault(__webpack_require__( /*! ../core/utils/m_support */ 85991));

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const EventStrategy = ((support, _ref) => {
                    let {
                        tablet: tablet,
                        phone: phone
                    } = _ref;
                    const pointerEventStrategy = function() {
                        const eventStrategyName = (0, _config.default)().pointerEventStrategy;
                        return {
                            "mouse-and-touch": _mouse_and_touch.default,
                            touch: _touch.default,
                            mouse: _mouse.default
                        } [eventStrategyName]
                    }();
                    if (pointerEventStrategy) {
                        return pointerEventStrategy
                    }
                    if (support.touch && !(tablet || phone)) {
                        return _mouse_and_touch.default
                    }
                    if (support.touch) {
                        return _touch.default
                    }
                    return _mouse.default
                })(_m_support.default, _m_devices.default.real());
                (0, _iterator.each)(EventStrategy.map, ((pointerEvent, originalEvents) => {
                    (0, _event_registrator.default)(pointerEvent, new EventStrategy(pointerEvent, originalEvents))
                }));
                exports.default = {
                    down: "dxpointerdown",
                    up: "dxpointerup",
                    move: "dxpointermove",
                    cancel: "dxpointercancel",
                    enter: "dxpointerenter",
                    leave: "dxpointerleave",
                    over: "dxpointerover",
                    out: "dxpointerout"
                }
            },
        92686:
            /*!***************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/events/m_remove.js ***!
              \***************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.removeEvent = void 0;
                var _event_registrator = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/core/event_registrator */ 15273));
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/core/events_engine */ 92774));
                var _element_data = __webpack_require__( /*! ../../core/element_data */ 74663);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553));

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const removeEvent = exports.removeEvent = "dxremove";
                (0, _element_data.beforeCleanData)((elements => {
                    elements = [].slice.call(elements);
                    for (let i = 0; i < elements.length; i++) {
                        const $element = (0, _renderer.default)(elements[i]);
                        if ($element.prop("dxRemoveEvent")) {
                            $element[0].dxRemoveEvent = null;
                            _events_engine.default.triggerHandler($element, removeEvent)
                        }
                    }
                }));
                (0, _event_registrator.default)(removeEvent, {
                    noBubble: true,
                    setup(element) {
                        (0, _renderer.default)(element).prop("dxRemoveEvent", true)
                    }
                })
            },
        43926:
            /*!**************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/events/m_short.js ***!
              \**************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.visibility = exports.resize = exports.keyboard = exports.hover = exports.focus = exports.dxClick = exports.click = exports.active = void 0;
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/core/events_engine */ 92774));
                var _keyboard_processor = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/core/keyboard_processor */ 52818));
                var _index = __webpack_require__( /*! ../../common/core/events/utils/index */ 98834);

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }

                function addNamespace(event, namespace) {
                    return namespace ? (0, _index.addNamespace)(event, namespace) : event
                }

                function executeAction(action, args) {
                    return "function" === typeof action ? action(args) : action.execute(args)
                }
                exports.active = {
                    on: ($el, active, inactive, opts) => {
                        const {
                            selector: selector,
                            showTimeout: showTimeout,
                            hideTimeout: hideTimeout,
                            namespace: namespace
                        } = opts;
                        _events_engine.default.on($el, addNamespace("dxactive", namespace), selector, {
                            timeout: showTimeout
                        }, (event => executeAction(active, {
                            event: event,
                            element: event.currentTarget
                        })));
                        _events_engine.default.on($el, addNamespace("dxinactive", namespace), selector, {
                            timeout: hideTimeout
                        }, (event => executeAction(inactive, {
                            event: event,
                            element: event.currentTarget
                        })))
                    },
                    off: ($el, _ref) => {
                        let {
                            namespace: namespace,
                            selector: selector
                        } = _ref;
                        _events_engine.default.off($el, addNamespace("dxactive", namespace), selector);
                        _events_engine.default.off($el, addNamespace("dxinactive", namespace), selector)
                    }
                };
                exports.resize = {
                    on: function($el, resize) {
                        let {
                            namespace: namespace
                        } = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};
                        _events_engine.default.on($el, addNamespace("dxresize", namespace), resize)
                    },
                    off: function($el) {
                        let {
                            namespace: namespace
                        } = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
                        _events_engine.default.off($el, addNamespace("dxresize", namespace))
                    }
                };
                exports.hover = {
                    on: ($el, start, end, _ref2) => {
                        let {
                            selector: selector,
                            namespace: namespace
                        } = _ref2;
                        _events_engine.default.on($el, addNamespace("dxhoverend", namespace), selector, (event => end(event)));
                        _events_engine.default.on($el, addNamespace("dxhoverstart", namespace), selector, (event => executeAction(start, {
                            element: event.target,
                            event: event
                        })))
                    },
                    off: ($el, _ref3) => {
                        let {
                            selector: selector,
                            namespace: namespace
                        } = _ref3;
                        _events_engine.default.off($el, addNamespace("dxhoverstart", namespace), selector);
                        _events_engine.default.off($el, addNamespace("dxhoverend", namespace), selector)
                    }
                };
                exports.visibility = {
                    on: ($el, shown, hiding, _ref4) => {
                        let {
                            namespace: namespace
                        } = _ref4;
                        _events_engine.default.on($el, addNamespace("dxhiding", namespace), hiding);
                        _events_engine.default.on($el, addNamespace("dxshown", namespace), shown)
                    },
                    off: ($el, _ref5) => {
                        let {
                            namespace: namespace
                        } = _ref5;
                        _events_engine.default.off($el, addNamespace("dxhiding", namespace));
                        _events_engine.default.off($el, addNamespace("dxshown", namespace))
                    }
                };
                exports.focus = {
                    on: ($el, focusIn, focusOut, _ref6) => {
                        let {
                            namespace: namespace
                        } = _ref6;
                        _events_engine.default.on($el, addNamespace("focusin", namespace), focusIn);
                        _events_engine.default.on($el, addNamespace("focusout", namespace), focusOut)
                    },
                    off: ($el, _ref7) => {
                        let {
                            namespace: namespace
                        } = _ref7;
                        _events_engine.default.off($el, addNamespace("focusin", namespace));
                        _events_engine.default.off($el, addNamespace("focusout", namespace))
                    },
                    trigger: $el => _events_engine.default.trigger($el, "focus")
                };
                exports.dxClick = {
                    on: function($el, click) {
                        let {
                            namespace: namespace
                        } = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};
                        _events_engine.default.on($el, addNamespace("dxclick", namespace), click)
                    },
                    off: function($el) {
                        let {
                            namespace: namespace
                        } = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
                        _events_engine.default.off($el, addNamespace("dxclick", namespace))
                    }
                };
                exports.click = {
                    on: function($el, click) {
                        let {
                            namespace: namespace
                        } = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};
                        _events_engine.default.on($el, addNamespace("click", namespace), click)
                    },
                    off: function($el) {
                        let {
                            namespace: namespace
                        } = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
                        _events_engine.default.off($el, addNamespace("click", namespace))
                    }
                };
                let index = 0;
                const keyboardProcessors = {};
                exports.keyboard = {
                    on: (element, focusTarget, handler) => {
                        const listenerId = "keyboardProcessorId" + index++;
                        keyboardProcessors[listenerId] = new _keyboard_processor.default({
                            element: element,
                            focusTarget: focusTarget,
                            handler: handler
                        });
                        return listenerId
                    },
                    off: listenerId => {
                        if (listenerId && keyboardProcessors[listenerId]) {
                            keyboardProcessors[listenerId].dispose();
                            delete keyboardProcessors[listenerId]
                        }
                    },
                    _getProcessor: listenerId => keyboardProcessors[listenerId]
                }
            },
        6066:
            /*!**************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/events/m_swipe.js ***!
              \**************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.swipe = exports.start = exports.end = void 0;
                var _emitter_registrator = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/core/emitter_registrator */ 81411));
                var _emitter = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/gesture/emitter.gesture */ 85915));
                var _index = __webpack_require__( /*! ../../common/core/events/utils/index */ 98834);
                var _size = __webpack_require__( /*! ../../core/utils/size */ 57653);

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const SWIPE_START_EVENT = exports.start = "dxswipestart";
                const SWIPE_EVENT = exports.swipe = "dxswipe";
                const SWIPE_END_EVENT = exports.end = "dxswipeend";
                const HorizontalStrategy = {
                    defaultItemSizeFunc() {
                        return (0, _size.getWidth)(this.getElement())
                    },
                    getBounds() {
                        return [this._maxLeftOffset, this._maxRightOffset]
                    },
                    calcOffsetRatio(e) {
                        const endEventData = (0, _index.eventData)(e);
                        return (endEventData.x - (this._savedEventData && this._savedEventData.x || 0)) / this._itemSizeFunc().call(this, e)
                    },
                    isFastSwipe(e) {
                        const endEventData = (0, _index.eventData)(e);
                        return this.FAST_SWIPE_SPEED_LIMIT * Math.abs(endEventData.x - this._tickData.x) >= endEventData.time - this._tickData.time
                    }
                };
                const VerticalStrategy = {
                    defaultItemSizeFunc() {
                        return (0, _size.getHeight)(this.getElement())
                    },
                    getBounds() {
                        return [this._maxTopOffset, this._maxBottomOffset]
                    },
                    calcOffsetRatio(e) {
                        const endEventData = (0, _index.eventData)(e);
                        return (endEventData.y - (this._savedEventData && this._savedEventData.y || 0)) / this._itemSizeFunc().call(this, e)
                    },
                    isFastSwipe(e) {
                        const endEventData = (0, _index.eventData)(e);
                        return this.FAST_SWIPE_SPEED_LIMIT * Math.abs(endEventData.y - this._tickData.y) >= endEventData.time - this._tickData.time
                    }
                };
                const STRATEGIES = {
                    horizontal: HorizontalStrategy,
                    vertical: VerticalStrategy
                };
                const SwipeEmitter = _emitter.default.inherit({
                    TICK_INTERVAL: 300,
                    FAST_SWIPE_SPEED_LIMIT: 10,
                    ctor(element) {
                        this.callBase(element);
                        this.direction = "horizontal";
                        this.elastic = true
                    },
                    _getStrategy() {
                        return STRATEGIES[this.direction]
                    },
                    _defaultItemSizeFunc() {
                        return this._getStrategy().defaultItemSizeFunc.call(this)
                    },
                    _itemSizeFunc() {
                        return this.itemSizeFunc || this._defaultItemSizeFunc
                    },
                    _init(e) {
                        this._tickData = (0, _index.eventData)(e)
                    },
                    _start(e) {
                        this._savedEventData = (0, _index.eventData)(e);
                        e = this._fireEvent(SWIPE_START_EVENT, e);
                        if (!e.cancel) {
                            this._maxLeftOffset = e.maxLeftOffset;
                            this._maxRightOffset = e.maxRightOffset;
                            this._maxTopOffset = e.maxTopOffset;
                            this._maxBottomOffset = e.maxBottomOffset
                        }
                    },
                    _move(e) {
                        const strategy = this._getStrategy();
                        const moveEventData = (0, _index.eventData)(e);
                        let offset = strategy.calcOffsetRatio.call(this, e);
                        offset = this._fitOffset(offset, this.elastic);
                        if (moveEventData.time - this._tickData.time > this.TICK_INTERVAL) {
                            this._tickData = moveEventData
                        }
                        this._fireEvent(SWIPE_EVENT, e, {
                            offset: offset
                        });
                        if (false !== e.cancelable) {
                            e.preventDefault()
                        }
                    },
                    _end(e) {
                        const strategy = this._getStrategy();
                        const offsetRatio = strategy.calcOffsetRatio.call(this, e);
                        const isFast = strategy.isFastSwipe.call(this, e);
                        let startOffset = offsetRatio;
                        let targetOffset = this._calcTargetOffset(offsetRatio, isFast);
                        startOffset = this._fitOffset(startOffset, this.elastic);
                        targetOffset = this._fitOffset(targetOffset, false);
                        this._fireEvent(SWIPE_END_EVENT, e, {
                            offset: startOffset,
                            targetOffset: targetOffset
                        })
                    },
                    _fitOffset(offset, elastic) {
                        const strategy = this._getStrategy();
                        const bounds = strategy.getBounds.call(this);
                        if (offset < -bounds[0]) {
                            return elastic ? (-2 * bounds[0] + offset) / 3 : -bounds[0]
                        }
                        if (offset > bounds[1]) {
                            return elastic ? (2 * bounds[1] + offset) / 3 : bounds[1]
                        }
                        return offset
                    },
                    _calcTargetOffset(offsetRatio, isFast) {
                        let result;
                        if (isFast) {
                            result = Math.ceil(Math.abs(offsetRatio));
                            if (offsetRatio < 0) {
                                result = -result
                            }
                        } else {
                            result = Math.round(offsetRatio)
                        }
                        return result
                    }
                });
                (0, _emitter_registrator.default)({
                    emitter: SwipeEmitter,
                    events: [SWIPE_START_EVENT, SWIPE_EVENT, SWIPE_END_EVENT]
                })
            },
        68264:
            /*!******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/events/m_transform.js ***!
              \******************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.exportNames = void 0;
                var _emitter = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/core/emitter */ 59e3));
                var _emitter_registrator = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/core/emitter_registrator */ 81411));
                var _index = __webpack_require__( /*! ../../common/core/events/utils/index */ 98834);
                var iteratorUtils = function(e, r) {
                    if (!r && e && e.__esModule) {
                        return e
                    }
                    if (null === e || "object" != typeof e && "function" != typeof e) {
                        return {
                            default: e
                        }
                    }
                    var t = _getRequireWildcardCache(r);
                    if (t && t.has(e)) {
                        return t.get(e)
                    }
                    var n = {
                            __proto__: null
                        },
                        a = Object.defineProperty && Object.getOwnPropertyDescriptor;
                    for (var u in e) {
                        if ("default" !== u && {}.hasOwnProperty.call(e, u)) {
                            var i = a ? Object.getOwnPropertyDescriptor(e, u) : null;
                            i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]
                        }
                    }
                    return n.default = e, t && t.set(e, n), n
                }(__webpack_require__( /*! ../../core/utils/iterator */ 21274));
                var _math = __webpack_require__( /*! ../../core/utils/math */ 50254);

                function _getRequireWildcardCache(e) {
                    if ("function" != typeof WeakMap) {
                        return null
                    }
                    var r = new WeakMap,
                        t = new WeakMap;
                    return (_getRequireWildcardCache = function(e) {
                        return e ? t : r
                    })(e)
                }

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const START_POSTFIX = "start";
                const UPDATE_POSTFIX = "";
                const END_POSTFIX = "end";
                const eventAliases = [];
                const addAlias = function(eventName, eventArgs) {
                    eventAliases.push({
                        name: eventName,
                        args: eventArgs
                    })
                };
                addAlias("transform", {
                    scale: true,
                    deltaScale: true,
                    rotation: true,
                    deltaRotation: true,
                    translation: true,
                    deltaTranslation: true
                });
                addAlias("translate", {
                    translation: true,
                    deltaTranslation: true
                });
                addAlias("pinch", {
                    scale: true,
                    deltaScale: true
                });
                addAlias("rotate", {
                    rotation: true,
                    deltaRotation: true
                });
                const getEventVector = function(e) {
                    const {
                        pointers: pointers
                    } = e;
                    return first = pointers[0], second = pointers[1], {
                        x: second.pageX - first.pageX,
                        y: -second.pageY + first.pageY,
                        centerX: .5 * (second.pageX + first.pageX),
                        centerY: .5 * (second.pageY + first.pageY)
                    };
                    var first, second
                };
                const getDistance = function(vector) {
                    return Math.sqrt(vector.x * vector.x + vector.y * vector.y)
                };
                const getScale = function(firstVector, secondVector) {
                    return getDistance(firstVector) / getDistance(secondVector)
                };
                const getRotation = function(firstVector, secondVector) {
                    const scalarProduct = firstVector.x * secondVector.x + firstVector.y * secondVector.y;
                    const distanceProduct = getDistance(firstVector) * getDistance(secondVector);
                    if (0 === distanceProduct) {
                        return 0
                    }
                    const sign = (0, _math.sign)(firstVector.x * secondVector.y - secondVector.x * firstVector.y);
                    const angle = Math.acos((0, _math.fitIntoRange)(scalarProduct / distanceProduct, -1, 1));
                    return sign * angle
                };
                const getTranslation = function(firstVector, secondVector) {
                    return {
                        x: firstVector.centerX - secondVector.centerX,
                        y: firstVector.centerY - secondVector.centerY
                    }
                };
                const TransformEmitter = _emitter.default.inherit({
                    validatePointers: e => (0, _index.hasTouches)(e) > 1,
                    start(e) {
                        this._accept(e);
                        const startVector = getEventVector(e);
                        this._startVector = startVector;
                        this._prevVector = startVector;
                        this._fireEventAliases(START_POSTFIX, e)
                    },
                    move(e) {
                        const currentVector = getEventVector(e);
                        const eventArgs = this._getEventArgs(currentVector);
                        this._fireEventAliases(UPDATE_POSTFIX, e, eventArgs);
                        this._prevVector = currentVector
                    },
                    end(e) {
                        const eventArgs = this._getEventArgs(this._prevVector);
                        this._fireEventAliases(END_POSTFIX, e, eventArgs)
                    },
                    _getEventArgs(vector) {
                        return {
                            scale: getScale(vector, this._startVector),
                            deltaScale: getScale(vector, this._prevVector),
                            rotation: getRotation(vector, this._startVector),
                            deltaRotation: getRotation(vector, this._prevVector),
                            translation: getTranslation(vector, this._startVector),
                            deltaTranslation: getTranslation(vector, this._prevVector)
                        }
                    },
                    _fireEventAliases(eventPostfix, originalEvent, eventArgs) {
                        eventArgs = eventArgs || {};
                        iteratorUtils.each(eventAliases, ((_, eventAlias) => {
                            const args = {};
                            iteratorUtils.each(eventAlias.args, (name => {
                                if (name in eventArgs) {
                                    args[name] = eventArgs[name]
                                }
                            }));
                            this._fireEvent("dx" + eventAlias.name + eventPostfix, originalEvent, args)
                        }))
                    }
                });
                const eventNames = eventAliases.reduce(((result, eventAlias) => {
                    [START_POSTFIX, UPDATE_POSTFIX, END_POSTFIX].forEach((eventPostfix => {
                        result.push("dx" + eventAlias.name + eventPostfix)
                    }));
                    return result
                }), []);
                (0, _emitter_registrator.default)({
                    emitter: TransformEmitter,
                    events: eventNames
                });
                const exportNames = exports.exportNames = {};
                iteratorUtils.each(eventNames, ((_, eventName) => {
                    exportNames[eventName.substring(2)] = eventName
                }))
            },
        52997:
            /*!**************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/events/m_visibility_change.js ***!
              \**************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.triggerShownEvent = exports.triggerResizeEvent = exports.triggerHidingEvent = exports.default = void 0;
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/core/events_engine */ 92774));
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553));

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const triggerVisibilityChangeEvent = function(eventName) {
                    return function(element) {
                        const $element = (0, _renderer.default)(element || "body");
                        const changeHandlers = $element.filter(".dx-visibility-change-handler").add($element.find(".dx-visibility-change-handler"));
                        for (let i = 0; i < changeHandlers.length; i++) {
                            _events_engine.default.triggerHandler(changeHandlers[i], eventName)
                        }
                    }
                };
                const triggerShownEvent = exports.triggerShownEvent = triggerVisibilityChangeEvent("dxshown");
                const triggerHidingEvent = exports.triggerHidingEvent = triggerVisibilityChangeEvent("dxhiding");
                const triggerResizeEvent = exports.triggerResizeEvent = triggerVisibilityChangeEvent("dxresize");
                exports.default = {
                    triggerHidingEvent: triggerHidingEvent,
                    triggerResizeEvent: triggerResizeEvent,
                    triggerShownEvent: triggerShownEvent
                }
            },
        37321:
            /*!*********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/events/pointer/m_base.js ***!
              \*********************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774));
                var _event_target = __webpack_require__( /*! ../../../common/core/events/utils/event_target */ 45280);
                var _index = __webpack_require__( /*! ../../../common/core/events/utils/index */ 98834);
                var _class = _interopRequireDefault(__webpack_require__( /*! ../../../core/class */ 55620));
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../core/dom_adapter */ 64960));
                var _browser = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/browser */ 48314));

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const BaseStrategy = _class.default.inherit({
                    ctor(eventName, originalEvents) {
                        this._eventName = eventName;
                        this._originalEvents = (0, _index.addNamespace)(originalEvents, "dxPointerEvents");
                        this._handlerCount = 0;
                        this.noBubble = this._isNoBubble()
                    },
                    _isNoBubble() {
                        const eventName = this._eventName;
                        return "dxpointerenter" === eventName || "dxpointerleave" === eventName
                    },
                    _handler(e) {
                        const delegateTarget = this._getDelegateTarget(e);
                        const event = {
                            type: this._eventName,
                            pointerType: e.pointerType || (0, _index.eventSource)(e),
                            originalEvent: e,
                            delegateTarget: delegateTarget,
                            timeStamp: _browser.default.mozilla ? (new Date).getTime() : e.timeStamp
                        };
                        const target = (0, _event_target.getEventTarget)(e);
                        event.target = target;
                        return this._fireEvent(event)
                    },
                    _getDelegateTarget(e) {
                        let delegateTarget;
                        if (this.noBubble) {
                            delegateTarget = e.delegateTarget
                        }
                        return delegateTarget
                    },
                    _fireEvent: args => (0, _index.fireEvent)(args),
                    _setSelector(handleObj) {
                        this._selector = this.noBubble && handleObj ? handleObj.selector : null
                    },
                    _getSelector() {
                        return this._selector
                    },
                    setup: () => true,
                    add(element, handleObj) {
                        if (this._handlerCount <= 0 || this.noBubble) {
                            element = this.noBubble ? element : _dom_adapter.default.getDocument();
                            this._setSelector(handleObj);
                            const that = this;
                            _events_engine.default.on(element, this._originalEvents, this._getSelector(), (e => {
                                that._handler(e)
                            }))
                        }
                        if (!this.noBubble) {
                            this._handlerCount++
                        }
                    },
                    remove(handleObj) {
                        this._setSelector(handleObj);
                        if (!this.noBubble) {
                            this._handlerCount--
                        }
                    },
                    teardown(element) {
                        if (this._handlerCount && !this.noBubble) {
                            return
                        }
                        element = this.noBubble ? element : _dom_adapter.default.getDocument();
                        if (".dxPointerEvents" !== this._originalEvents) {
                            _events_engine.default.off(element, this._originalEvents, this._getSelector())
                        }
                    },
                    dispose(element) {
                        element = this.noBubble ? element : _dom_adapter.default.getDocument();
                        _events_engine.default.off(element, this._originalEvents)
                    }
                });
                exports.default = BaseStrategy
            },
        45841:
            /*!**********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/events/pointer/m_mouse.js ***!
              \**********************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _base = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/pointer/base */ 725));
                var _observer = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/pointer/observer */ 38242));
                var _browser = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/browser */ 48314));
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576);

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const eventMap = {
                    dxpointerdown: "mousedown",
                    dxpointermove: "mousemove",
                    dxpointerup: "mouseup",
                    dxpointercancel: "pointercancel",
                    dxpointerover: "mouseover",
                    dxpointerout: "mouseout",
                    dxpointerenter: "mouseenter",
                    dxpointerleave: "mouseleave"
                };
                if (_browser.default.safari) {
                    eventMap.dxpointercancel += " dragstart"
                }
                const normalizeMouseEvent = function(e) {
                    e.pointerId = 1;
                    return {
                        pointers: observer.pointers(),
                        pointerId: 1
                    }
                };
                let observer;
                let activated = false;
                const activateStrategy = function() {
                    if (activated) {
                        return
                    }
                    observer = new _observer.default(eventMap, (() => true));
                    activated = true
                };
                const MouseStrategy = _base.default.inherit({
                    ctor() {
                        this.callBase.apply(this, arguments);
                        activateStrategy()
                    },
                    _fireEvent(args) {
                        return this.callBase((0, _extend.extend)(normalizeMouseEvent(args.originalEvent), args))
                    }
                });
                MouseStrategy.map = eventMap;
                MouseStrategy.normalize = normalizeMouseEvent;
                MouseStrategy.activate = activateStrategy;
                MouseStrategy.resetObserver = function() {
                    observer.reset()
                };
                exports.default = MouseStrategy
            },
        60699:
            /*!********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/events/pointer/m_mouse_and_touch.js ***!
              \********************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _base = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/pointer/base */ 725));
                var _mouse = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/pointer/mouse */ 5949));
                var _touch = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/pointer/touch */ 71017));
                var _index = __webpack_require__( /*! ../../../common/core/events/utils/index */ 98834);
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576);

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                let activated = false;
                const MouseAndTouchStrategy = _base.default.inherit({
                    EVENT_LOCK_TIMEOUT: 100,
                    ctor() {
                        this.callBase.apply(this, arguments);
                        ! function() {
                            if (activated) {
                                return
                            }
                            _mouse.default.activate();
                            activated = true
                        }()
                    },
                    _handler(e) {
                        const isMouse = (0, _index.isMouseEvent)(e);
                        if (!isMouse) {
                            this._skipNextEvents = true
                        }
                        if (isMouse && this._mouseLocked) {
                            return
                        }
                        if (isMouse && this._skipNextEvents) {
                            this._skipNextEvents = false;
                            this._mouseLocked = true;
                            clearTimeout(this._unlockMouseTimer);
                            const that = this;
                            this._unlockMouseTimer = setTimeout((() => {
                                that._mouseLocked = false
                            }), this.EVENT_LOCK_TIMEOUT);
                            return
                        }
                        return this.callBase(e)
                    },
                    _fireEvent(args) {
                        const normalizer = (0, _index.isMouseEvent)(args.originalEvent) ? _mouse.default.normalize : _touch.default.normalize;
                        return this.callBase((0, _extend.extend)(normalizer(args.originalEvent), args))
                    },
                    dispose() {
                        this.callBase();
                        this._skipNextEvents = false;
                        this._mouseLocked = false;
                        clearTimeout(this._unlockMouseTimer)
                    }
                });
                MouseAndTouchStrategy.map = {
                    dxpointerdown: "touchstart mousedown",
                    dxpointermove: "touchmove mousemove",
                    dxpointerup: "touchend mouseup",
                    dxpointercancel: "touchcancel",
                    dxpointerover: "mouseover",
                    dxpointerout: "mouseout",
                    dxpointerenter: "mouseenter",
                    dxpointerleave: "mouseleave"
                };
                MouseAndTouchStrategy.resetObserver = _mouse.default.resetObserver;
                exports.default = MouseAndTouchStrategy
            },
        62814:
            /*!*************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/events/pointer/m_observer.js ***!
              \*************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../core/dom_adapter */ 64960));
                var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274);
                var _ready_callbacks = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/ready_callbacks */ 3122));

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const addEventsListener = function(events, handler) {
                    _ready_callbacks.default.add((() => {
                        events.split(" ").forEach((event => {
                            _dom_adapter.default.listen(_dom_adapter.default.getDocument(), event, handler, true)
                        }))
                    }))
                };
                exports.default = function(eventMap, pointerEquals, onPointerAdding) {
                    onPointerAdding = onPointerAdding || function() {};
                    let pointers = [];
                    const getPointerIndex = function(e) {
                        let index = -1;
                        (0, _iterator.each)(pointers, ((i, pointer) => {
                            if (!pointerEquals(e, pointer)) {
                                return true
                            }
                            index = i;
                            return false
                        }));
                        return index
                    };
                    const removePointer = function(e) {
                        const index = getPointerIndex(e);
                        if (index > -1) {
                            pointers.splice(index, 1)
                        }
                    };
                    addEventsListener(eventMap.dxpointerdown, (function(e) {
                        if (-1 === getPointerIndex(e)) {
                            onPointerAdding(e);
                            pointers.push(e)
                        }
                    }));
                    addEventsListener(eventMap.dxpointermove, (function(e) {
                        pointers[getPointerIndex(e)] = e
                    }));
                    addEventsListener(eventMap.dxpointerup, removePointer);
                    addEventsListener(eventMap.dxpointercancel, removePointer);
                    this.pointers = function() {
                        return pointers
                    };
                    this.reset = function() {
                        pointers = []
                    }
                }
            },
        95253:
            /*!**********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/events/pointer/m_touch.js ***!
              \**********************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _base = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/pointer/base */ 725));
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576);
                var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274);
                var _m_devices = _interopRequireDefault(__webpack_require__( /*! ../../core/m_devices */ 98905));

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const normalizeTouchEvent = function(e) {
                    const pointers = [];
                    (0, _iterator.each)(e.touches, ((_, touch) => {
                        pointers.push((0, _extend.extend)({
                            pointerId: touch.identifier
                        }, touch))
                    }));
                    return {
                        pointers: pointers,
                        pointerId: e.changedTouches[0].identifier
                    }
                };
                const TouchStrategy = _base.default.inherit({
                    ctor() {
                        this.callBase.apply(this, arguments);
                        this._pointerId = 0
                    },
                    _handler(e) {
                        if (pointerEvent = this._eventName, "ios" === _m_devices.default.real().platform && ("dxpointerdown" === pointerEvent || "dxpointerup" === pointerEvent)) {
                            const touch = e.changedTouches[0];
                            if (this._pointerId === touch.identifier && 0 !== this._pointerId) {
                                return
                            }
                            this._pointerId = touch.identifier
                        }
                        var pointerEvent;
                        return this.callBase.apply(this, arguments)
                    },
                    _fireEvent(args) {
                        return this.callBase((0, _extend.extend)(normalizeTouchEvent(args.originalEvent), args))
                    }
                });
                TouchStrategy.map = {
                    dxpointerdown: "touchstart",
                    dxpointermove: "touchmove",
                    dxpointerup: "touchend",
                    dxpointercancel: "touchcancel",
                    dxpointerover: "",
                    dxpointerout: "",
                    dxpointerenter: "",
                    dxpointerleave: ""
                };
                TouchStrategy.normalize = normalizeTouchEvent;
                exports.default = TouchStrategy
            },
        61210:
            /*!******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/events/utils/index.js ***!
              \******************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.stopEventsSkipping = exports.setEventFixMethod = exports.normalizeKeyName = exports.needSkipEvent = exports.isTouchEvent = exports.isPointerEvent = exports.isMouseEvent = exports.isKeyboardEvent = exports.isFakeClickEvent = exports.isDxMouseWheelEvent = exports.isCommandKeyPressed = exports.hasTouches = exports.getChar = exports.forceSkipEvents = exports.fireEvent = exports.eventSource = exports.eventDelta = exports.eventData = exports.createEvent = exports.addNamespace = void 0;
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774));
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553));
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576);
                var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274);
                var _selectors = __webpack_require__( /*! ../../../ui/widget/selectors */ 35944);
                var _m_add_namespace = _interopRequireDefault(__webpack_require__( /*! ./m_add_namespace */ 91293));

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const KEY_MAP = {
                    backspace: "backspace",
                    tab: "tab",
                    enter: "enter",
                    escape: "escape",
                    pageup: "pageUp",
                    pagedown: "pageDown",
                    end: "end",
                    home: "home",
                    arrowleft: "leftArrow",
                    arrowup: "upArrow",
                    arrowright: "rightArrow",
                    arrowdown: "downArrow",
                    delete: "del",
                    " ": "space",
                    f: "F",
                    a: "A",
                    "*": "asterisk",
                    "-": "minus",
                    alt: "alt",
                    control: "control",
                    shift: "shift"
                };
                const LEGACY_KEY_CODES = {
                    8: "backspace",
                    9: "tab",
                    13: "enter",
                    27: "escape",
                    33: "pageUp",
                    34: "pageDown",
                    35: "end",
                    36: "home",
                    37: "leftArrow",
                    38: "upArrow",
                    39: "rightArrow",
                    40: "downArrow",
                    46: "del",
                    32: "space",
                    70: "F",
                    65: "A",
                    106: "asterisk",
                    109: "minus",
                    189: "minus",
                    173: "minus",
                    16: "shift",
                    17: "control",
                    18: "alt"
                };
                const EVENT_SOURCES_REGEX = {
                    dx: /^dx/i,
                    mouse: /(mouse|wheel)/i,
                    touch: /^touch/i,
                    keyboard: /^key/i,
                    pointer: /^(ms)?pointer/i
                };
                const eventSource = _ref => {
                    let {
                        type: type
                    } = _ref;
                    let result = "other";
                    (0, _iterator.each)(EVENT_SOURCES_REGEX, (function(key) {
                        if (this.test(type)) {
                            result = key;
                            return false
                        }
                    }));
                    return result
                };
                exports.eventSource = eventSource;
                let fixMethod = e => e;
                const copyEvent = originalEvent => fixMethod((originalEvent => _events_engine.default.Event(originalEvent, originalEvent))(originalEvent), originalEvent);
                const isDxEvent = e => "dx" === eventSource(e);
                const isNativeTouchEvent = e => "touch" === eventSource(e);
                const isPointerEvent = e => "pointer" === eventSource(e);
                exports.isPointerEvent = isPointerEvent;
                const isMouseEvent = e => (e => "mouse" === eventSource(e))(e) || (isPointerEvent(e) || isDxEvent(e)) && "mouse" === e.pointerType;
                exports.isMouseEvent = isMouseEvent;
                const isDxMouseWheelEvent = e => e && "dxmousewheel" === e.type;
                exports.isDxMouseWheelEvent = isDxMouseWheelEvent;
                const isTouchEvent = e => isNativeTouchEvent(e) || (isPointerEvent(e) || isDxEvent(e)) && "touch" === e.pointerType;
                exports.isTouchEvent = isTouchEvent;
                exports.isKeyboardEvent = e => "keyboard" === eventSource(e);
                exports.isFakeClickEvent = _ref2 => {
                    let {
                        screenX: screenX,
                        offsetX: offsetX,
                        pageX: pageX
                    } = _ref2;
                    return 0 === screenX && !offsetX && 0 === pageX
                };
                exports.eventData = _ref3 => {
                    let {
                        pageX: pageX,
                        pageY: pageY,
                        timeStamp: timeStamp
                    } = _ref3;
                    return {
                        x: pageX,
                        y: pageY,
                        time: timeStamp
                    }
                };
                exports.eventDelta = (from, to) => ({
                    x: to.x - from.x,
                    y: to.y - from.y,
                    time: to.time - from.time || 1
                });
                exports.hasTouches = e => {
                    const {
                        originalEvent: originalEvent,
                        pointers: pointers
                    } = e;
                    if (isNativeTouchEvent(e)) {
                        return (originalEvent.touches || []).length
                    }
                    if (isDxEvent(e)) {
                        return (pointers || []).length
                    }
                    return 0
                };
                let skipEvents = false;
                exports.forceSkipEvents = () => {
                    skipEvents = true
                };
                exports.stopEventsSkipping = () => {
                    skipEvents = false
                };
                exports.needSkipEvent = e => {
                    if (skipEvents) {
                        return true
                    }
                    const {
                        target: target
                    } = e;
                    const $target = (0, _renderer.default)(target);
                    const isContentEditable = (null === target || void 0 === target ? void 0 : target.isContentEditable) || (null === target || void 0 === target ? void 0 : target.hasAttribute("contenteditable"));
                    const touchInEditable = $target.is("input, textarea, select") || isContentEditable;
                    if (isDxMouseWheelEvent(e)) {
                        const isTextArea = $target.is("textarea") && $target.hasClass("dx-texteditor-input");
                        if (isTextArea || isContentEditable) {
                            return false
                        }
                        const isInputFocused = $target.is("input[type='number'], textarea, select") && $target.is(":focus");
                        return isInputFocused
                    }
                    if (isMouseEvent(e)) {
                        return touchInEditable || e.which > 1
                    }
                    if (isTouchEvent(e)) {
                        return touchInEditable && (0, _selectors.focused)($target)
                    }
                };
                exports.setEventFixMethod = func => {
                    fixMethod = func
                };
                const createEvent = (originalEvent, args) => {
                    const event = copyEvent(originalEvent);
                    if (args) {
                        (0, _extend.extend)(event, args)
                    }
                    return event
                };
                exports.createEvent = createEvent;
                exports.fireEvent = props => {
                    const {
                        originalEvent: originalEvent,
                        delegateTarget: delegateTarget
                    } = props;
                    const event = createEvent(originalEvent, props);
                    _events_engine.default.trigger(delegateTarget || event.target, event);
                    return event
                };
                exports.normalizeKeyName = _ref4 => {
                    let {
                        key: key,
                        which: which
                    } = _ref4;
                    const normalizedKey = KEY_MAP[null === key || void 0 === key ? void 0 : key.toLowerCase()] || key;
                    const normalizedKeyFromWhich = LEGACY_KEY_CODES[which];
                    if (normalizedKeyFromWhich && normalizedKey === key) {
                        return normalizedKeyFromWhich
                    }
                    if (!normalizedKey && which) {
                        return String.fromCharCode(which)
                    }
                    return normalizedKey
                };
                exports.getChar = _ref5 => {
                    let {
                        key: key,
                        which: which
                    } = _ref5;
                    return key || String.fromCharCode(which)
                };
                exports.addNamespace = _m_add_namespace.default;
                exports.isCommandKeyPressed = _ref6 => {
                    let {
                        ctrlKey: ctrlKey,
                        metaKey: metaKey
                    } = _ref6;
                    return ctrlKey || metaKey
                }
            },
        91293:
            /*!****************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/events/utils/m_add_namespace.js ***!
              \****************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _errors = (e = __webpack_require__( /*! ../../../core/errors */ 87129), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                const addNamespace = (eventNames, namespace) => {
                    if (!namespace) {
                        throw _errors.default.Error("E0017")
                    }
                    if (Array.isArray(eventNames)) {
                        return eventNames.map((eventName => addNamespace(eventName, namespace))).join(" ")
                    }
                    if (-1 !== eventNames.indexOf(" ")) {
                        return addNamespace(eventNames.split(/\s+/g), namespace)
                    }
                    return `${eventNames}.${namespace}`
                };
                exports.default = addNamespace
            },
        68337:
            /*!************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/events/utils/m_event_nodes_disposing.js ***!
              \************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.unsubscribeNodesDisposing = exports.subscribeNodesDisposing = void 0;
                var _events_engine = (e = __webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                var _remove = __webpack_require__( /*! ../../../common/core/events/remove */ 28630);

                function nodesByEvent(event) {
                    return event && [event.target, event.delegateTarget, event.relatedTarget, event.currentTarget].filter((node => !!node))
                }
                exports.subscribeNodesDisposing = (event, callback) => {
                    _events_engine.default.one(nodesByEvent(event), _remove.removeEvent, callback)
                };
                exports.unsubscribeNodesDisposing = (event, callback) => {
                    _events_engine.default.off(nodesByEvent(event), _remove.removeEvent, callback)
                }
            },
        86940:
            /*!***************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/events/utils/m_event_target.js ***!
              \***************************************************************************************/
            function(__unused_webpack_module, exports) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.getEventTarget = void 0;
                exports.getEventTarget = event => {
                    var _originalEvent$target, _originalEvent$compos;
                    const {
                        originalEvent: originalEvent
                    } = event;
                    if (!originalEvent) {
                        return event.target
                    }
                    const isShadowDOMUsed = Boolean(null === (_originalEvent$target = originalEvent.target) || void 0 === _originalEvent$target ? void 0 : _originalEvent$target.shadowRoot);
                    if (!isShadowDOMUsed) {
                        return originalEvent.target
                    }
                    const path = originalEvent.path ?? (null === (_originalEvent$compos = originalEvent.composedPath) || void 0 === _originalEvent$compos ? void 0 : _originalEvent$compos.call(originalEvent));
                    const target = (null === path || void 0 === path ? void 0 : path[0]) ?? event.target;
                    return target
                }
            },
        53226:
            /*!***********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/m_utils.js ***!
              \***********************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774));
                var _data_source = _interopRequireDefault(__webpack_require__( /*! ../../../common/data/data_source */ 14479));
                var _utils = __webpack_require__( /*! ../../../common/data/data_source/utils */ 97169);
                var _utils2 = __webpack_require__( /*! ../../../common/data/utils */ 89358);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553));
                var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781);
                var _data = __webpack_require__( /*! ../../../core/utils/data */ 31e3);
                var _deferred = __webpack_require__( /*! ../../../core/utils/deferred */ 87739);
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576);
                var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274);
                var _position = __webpack_require__( /*! ../../../core/utils/position */ 41639);
                var _size = __webpack_require__( /*! ../../../core/utils/size */ 57653);
                var _string = __webpack_require__( /*! ../../../core/utils/string */ 54497);
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528);
                var _variable_wrapper = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/variable_wrapper */ 40216));
                var _window = __webpack_require__( /*! ../../../core/utils/window */ 3104);
                var _format_helper = _interopRequireDefault(__webpack_require__( /*! ../../../format_helper */ 2082));
                var _load_panel = _interopRequireDefault(__webpack_require__( /*! ../../../ui/load_panel */ 31876));
                var _filtering = _interopRequireDefault(__webpack_require__( /*! ../../../ui/shared/filtering */ 56417));

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }

                function _extends() {
                    return _extends = Object.assign ? Object.assign.bind() : function(n) {
                        for (var e = 1; e < arguments.length; e++) {
                            var t = arguments[e];
                            for (var r in t) {
                                ({}).hasOwnProperty.call(t, r) && (n[r] = t[r])
                            }
                        }
                        return n
                    }, _extends.apply(null, arguments)
                }
                const DATE_INTERVAL_SELECTORS = {
                    year: value => value && value.getFullYear(),
                    month: value => value && value.getMonth() + 1,
                    day: value => value && value.getDate(),
                    quarter: value => value && Math.floor(value.getMonth() / 3) + 1,
                    hour: value => value && value.getHours(),
                    minute: value => value && value.getMinutes(),
                    second: value => value && value.getSeconds()
                };
                const getIntervalSelector = function() {
                    const data = arguments[1];
                    const value = this.calculateCellValue(data);
                    if (!(0, _type.isDefined)(value)) {
                        return null
                    }
                    if (isDateType(this.dataType)) {
                        const nameIntervalSelector = arguments[0];
                        return DATE_INTERVAL_SELECTORS[nameIntervalSelector](value)
                    }
                    if ("number" === this.dataType) {
                        const groupInterval = arguments[0];
                        return Math.floor(Number(value) / groupInterval) * groupInterval
                    }
                };
                const equalSelectors = function(selector1, selector2) {
                    if ((0, _type.isFunction)(selector1) && (0, _type.isFunction)(selector2)) {
                        if (selector1.originalCallback && selector2.originalCallback) {
                            return selector1.originalCallback === selector2.originalCallback && selector1.columnIndex === selector2.columnIndex
                        }
                    }
                    return selector1 === selector2
                };

                function isDateType(dataType) {
                    return "date" === dataType || "datetime" === dataType
                }
                const setEmptyText = function($container) {
                    $container.get(0).textContent = "\xa0"
                };
                const normalizeSortingInfo = function(sort) {
                    sort = sort || [];
                    const result = (0, _utils2.normalizeSortingInfo)(sort);
                    for (let i = 0; i < sort.length; i++) {
                        if (sort && sort[i] && void 0 !== sort[i].isExpanded) {
                            result[i].isExpanded = sort[i].isExpanded
                        }
                        if (sort && sort[i] && void 0 !== sort[i].groupInterval) {
                            result[i].groupInterval = sort[i].groupInterval
                        }
                    }
                    return result
                };
                const formatValue = function(value, options) {
                    const valueText = _format_helper.default.format(value, options.format) || value && value.toString() || "";
                    const formatObject = {
                        value: value,
                        valueText: options.getDisplayFormat ? options.getDisplayFormat(valueText) : valueText,
                        target: options.target || "row",
                        groupInterval: options.groupInterval
                    };
                    return options.customizeText ? options.customizeText.call(options, formatObject) : formatObject.valueText
                };
                const getSummaryText = function(summaryItem, summaryTexts) {
                    const displayFormat = summaryItem.displayFormat || summaryItem.columnCaption && summaryTexts[`${summaryItem.summaryType}OtherColumn`] || summaryTexts[summaryItem.summaryType];
                    return formatValue(summaryItem.value, {
                        format: summaryItem.valueFormat,
                        getDisplayFormat: valueText => displayFormat ? (0, _string.format)(displayFormat, valueText, summaryItem.columnCaption) : valueText,
                        customizeText: summaryItem.customizeText
                    })
                };
                const getWidgetInstance = function($element) {
                    const editorData = $element.data && $element.data();
                    const dxComponents = editorData && editorData.dxComponents;
                    const widgetName = dxComponents && dxComponents[0];
                    return widgetName && editorData[widgetName]
                };
                const equalFilterParameters = function(filter1, filter2, langParams) {
                    if (Array.isArray(filter1) && Array.isArray(filter2)) {
                        if (filter1.length !== filter2.length) {
                            return false
                        }
                        for (let i = 0; i < filter1.length; i++) {
                            if (!equalFilterParameters(filter1[i], filter2[i], langParams)) {
                                return false
                            }
                        }
                        return true
                    }
                    if ((0, _type.isFunction)(filter1) && filter1.columnIndex >= 0 && (0, _type.isFunction)(filter2) && filter2.columnIndex >= 0) {
                        return filter1.columnIndex === filter2.columnIndex && (0, _data.toComparable)(filter1.filterValue, void 0, langParams) === (0, _data.toComparable)(filter2.filterValue, void 0, langParams) && (0, _data.toComparable)(filter1.selectedFilterOperation, void 0, langParams) === (0, _data.toComparable)(filter2.selectedFilterOperation, void 0, langParams)
                    }
                    return (0, _data.toComparable)(filter1, void 0, langParams) == (0, _data.toComparable)(filter2, void 0, langParams)
                };
                const addPointIfNeed = (points, pointProps, pointCreated) => {
                    let notCreatePoint = false;
                    if (pointCreated) {
                        notCreatePoint = pointCreated(pointProps)
                    }
                    if (!notCreatePoint) {
                        const point = (options = pointProps, {
                            index: options.index,
                            columnIndex: options.columnIndex,
                            x: options.x,
                            y: options.y
                        });
                        points.push(point)
                    }
                    var options
                };
                exports.default = {
                    renderNoDataText($element) {
                        const that = this;
                        $element = $element || this.element();
                        if (!$element) {
                            return
                        }
                        const noDataClass = that.addWidgetPrefix("nodata");
                        let noDataElement = $element.find(`.${noDataClass}`).last();
                        const isVisible = this._dataController.isEmpty();
                        const isLoading = this._dataController.isLoading();
                        if (!noDataElement.length) {
                            noDataElement = (0, _renderer.default)("<span>").addClass(noDataClass)
                        }
                        if (!noDataElement.parent().is($element)) {
                            noDataElement.appendTo($element)
                        }
                        if (isVisible && !isLoading) {
                            noDataElement.removeClass("dx-hidden").text(that._getNoDataText())
                        } else {
                            noDataElement.addClass("dx-hidden")
                        }
                    },
                    renderLoadPanel($element, $container, isLocalStore) {
                        const that = this;
                        let loadPanelOptions;
                        that._loadPanel && that._loadPanel.$element().remove();
                        loadPanelOptions = that.option("loadPanel");
                        if (loadPanelOptions && ("auto" === loadPanelOptions.enabled ? !isLocalStore : loadPanelOptions.enabled)) {
                            loadPanelOptions = (0, _extend.extend)({
                                shading: false,
                                message: loadPanelOptions.text,
                                container: $container
                            }, loadPanelOptions);
                            that._loadPanel = that._createComponent((0, _renderer.default)("<div>").appendTo($container), _load_panel.default, loadPanelOptions)
                        } else {
                            that._loadPanel = null
                        }
                    },
                    calculateLoadPanelPosition($element) {
                        const $window = (0, _renderer.default)((0, _window.getWindow)());
                        if ((0, _size.getHeight)($element) > (0, _size.getHeight)($window)) {
                            return {
                                of: $window,
                                boundary: $element,
                                collision: "fit"
                            }
                        }
                        return {
                            of: $element
                        }
                    },
                    getIndexByKey(key, items, keyName) {
                        let index = -1;
                        if (void 0 !== key && Array.isArray(items)) {
                            keyName = arguments.length <= 2 ? "key" : keyName;
                            for (let i = 0; i < items.length; i++) {
                                const item = (0, _type.isDefined)(keyName) ? items[i][keyName] : items[i];
                                if ((0, _common.equalByValue)(key, item)) {
                                    index = i;
                                    break
                                }
                            }
                        }
                        return index
                    },
                    combineFilters(filters, operation) {
                        let resultFilter = [];
                        operation = operation || "and";
                        for (let i = 0; i < filters.length; i++) {
                            var _filters$i;
                            if (!filters[i]) {
                                continue
                            }
                            if (1 === (null === (_filters$i = filters[i]) || void 0 === _filters$i ? void 0 : _filters$i.length) && "!" === filters[i][0]) {
                                if ("and" === operation) {
                                    return ["!"]
                                }
                                if ("or" === operation) {
                                    continue
                                }
                            }
                            if (resultFilter.length) {
                                resultFilter.push(operation)
                            }
                            resultFilter.push(filters[i])
                        }
                        if (1 === resultFilter.length) {
                            resultFilter = resultFilter[0]
                        }
                        if (resultFilter.length) {
                            return resultFilter
                        }
                        return
                    },
                    checkChanges(changes, changeNames) {
                        let changesWithChangeNamesCount = 0;
                        for (let i = 0; i < changeNames.length; i++) {
                            if (changes[changeNames[i]]) {
                                changesWithChangeNamesCount++
                            }
                        }
                        return changes.length && changes.length === changesWithChangeNamesCount
                    },
                    equalFilterParameters: equalFilterParameters,
                    proxyMethod(instance, methodName, defaultResult) {
                        if (!instance[methodName]) {
                            instance[methodName] = function() {
                                const dataSource = this._dataSource;
                                return dataSource ? dataSource[methodName].apply(dataSource, arguments) : defaultResult
                            }
                        }
                    },
                    formatValue: formatValue,
                    getFormatOptionsByColumn: (column, target) => ({
                        format: column.format,
                        getDisplayFormat: column.getDisplayFormat,
                        customizeText: column.customizeText,
                        target: target,
                        trueText: column.trueText,
                        falseText: column.falseText
                    }),
                    getDisplayValue(column, value, data, rowType) {
                        if (column.displayValueMap && void 0 !== column.displayValueMap[value]) {
                            return column.displayValueMap[value]
                        }
                        if (column.calculateDisplayValue && data && "group" !== rowType) {
                            return column.calculateDisplayValue(data)
                        }
                        if (column.lookup && !("group" === rowType && (column.calculateGroupValue || column.calculateDisplayValue))) {
                            return column.lookup.calculateCellValue(value)
                        }
                        return value
                    },
                    getGroupRowSummaryText(summaryItems, summaryTexts) {
                        let result = "(";
                        for (let i = 0; i < summaryItems.length; i++) {
                            const summaryItem = summaryItems[i];
                            result += (i > 0 ? ", " : "") + getSummaryText(summaryItem, summaryTexts)
                        }
                        return result + ")"
                    },
                    getSummaryText: getSummaryText,
                    normalizeSortingInfo: normalizeSortingInfo,
                    getFormatByDataType(dataType) {
                        switch (dataType) {
                            case "date":
                                return "shortDate";
                            case "datetime":
                                return "shortDateShortTime";
                            default:
                                return
                        }
                    },
                    getHeaderFilterGroupParameters(column, remoteGrouping) {
                        let result = [];
                        const dataField = column.dataField || column.name;
                        const groupInterval = _filtering.default.getGroupInterval(column);
                        if (groupInterval) {
                            (0, _iterator.each)(groupInterval, ((index, interval) => {
                                result.push(remoteGrouping ? {
                                    selector: dataField,
                                    groupInterval: interval,
                                    isExpanded: index < groupInterval.length - 1
                                } : getIntervalSelector.bind(column, interval))
                            }));
                            return result
                        }
                        if (remoteGrouping) {
                            result = [{
                                selector: dataField,
                                isExpanded: false
                            }]
                        } else {
                            result = function(data) {
                                let result = column.calculateCellValue(data);
                                if (void 0 === result || "" === result) {
                                    result = null
                                }
                                return result
                            };
                            if (column.sortingMethod) {
                                result = [{
                                    selector: result,
                                    compare: column.sortingMethod.bind(column)
                                }]
                            }
                        }
                        return result
                    },
                    equalSortParameters(sortParameters1, sortParameters2, ignoreIsExpanded) {
                        sortParameters1 = normalizeSortingInfo(sortParameters1);
                        sortParameters2 = normalizeSortingInfo(sortParameters2);
                        if (Array.isArray(sortParameters1) && Array.isArray(sortParameters2)) {
                            if (sortParameters1.length !== sortParameters2.length) {
                                return false
                            }
                            for (let i = 0; i < sortParameters1.length; i++) {
                                if (!equalSelectors(sortParameters1[i].selector, sortParameters2[i].selector) || sortParameters1[i].desc !== sortParameters2[i].desc || sortParameters1[i].groupInterval !== sortParameters2[i].groupInterval || !ignoreIsExpanded && Boolean(sortParameters1[i].isExpanded) !== Boolean(sortParameters2[i].isExpanded)) {
                                    return false
                                }
                            }
                            return true
                        }
                        return (!sortParameters1 || !sortParameters1.length) === (!sortParameters2 || !sortParameters2.length)
                    },
                    getPointsByColumns(items, pointCreated) {
                        let isVertical = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : false;
                        let startColumnIndex = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : 0;
                        let needToCheckPrevPoint = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : false;
                        const result = [];
                        const cellsLength = items.length;
                        let $item;
                        let offset = {
                            left: 0,
                            top: 0
                        };
                        let itemRect = {
                            width: 0,
                            height: 0
                        };
                        let columnIndex = startColumnIndex;
                        let rtlEnabled;
                        for (let i = 0; i <= cellsLength; i++) {
                            var _$item;
                            if (i < cellsLength) {
                                $item = items.eq(i);
                                offset = $item.offset();
                                itemRect = (0, _position.getBoundingRect)($item.get(0));
                                rtlEnabled = "rtl" === $item.css("direction")
                            }
                            const offsetRight = offset.left + itemRect.width;
                            const offsetBottom = offset.top + itemRect.height;
                            const pointProps = {
                                index: columnIndex,
                                columnIndex: columnIndex,
                                item: null === (_$item = $item) || void 0 === _$item ? void 0 : _$item.get(0),
                                x: !isVertical && rtlEnabled !== (i === cellsLength) ? offsetRight : offset.left,
                                y: isVertical && i === cellsLength ? offsetBottom : offset.top
                            };
                            if (!isVertical && i > 0) {
                                const prevItemOffset = items.eq(i - 1).offset();
                                const {
                                    width: prevItemWidth
                                } = (0, _position.getBoundingRect)(items[i - 1]);
                                const prevItemOffsetX = rtlEnabled ? prevItemOffset.left : prevItemOffset.left + prevItemWidth;
                                if (prevItemOffset.top < pointProps.y) {
                                    pointProps.y = prevItemOffset.top
                                }
                                if (needToCheckPrevPoint && Math.round(prevItemOffsetX) !== Math.round(pointProps.x)) {
                                    const prevPointProps = _extends({}, pointProps, {
                                        item: items[i - 1],
                                        x: prevItemOffsetX
                                    });
                                    if (rtlEnabled) {
                                        pointProps.isRightBoundary = true;
                                        prevPointProps.isLeftBoundary = true
                                    } else {
                                        pointProps.isLeftBoundary = true;
                                        prevPointProps.isRightBoundary = true
                                    }
                                    addPointIfNeed(result, prevPointProps, pointCreated)
                                }
                            }
                            addPointIfNeed(result, pointProps, pointCreated);
                            columnIndex++
                        }
                        return result
                    },
                    getExpandCellTemplate: () => ({
                        allowRenderToDetachedContainer: true,
                        render(container, options) {
                            const $container = (0, _renderer.default)(container);
                            if ((0, _type.isDefined)(options.value) && !(options.data && options.data.isContinuation) && !options.row.isNewRow) {
                                const rowsView = options.component.getView("rowsView");
                                $container.addClass("dx-datagrid-expand").addClass("dx-selection-disabled");
                                (0, _renderer.default)("<div>").addClass(options.value ? "dx-datagrid-group-opened" : "dx-datagrid-group-closed").appendTo($container);
                                rowsView.setAria("label", options.value ? rowsView.localize("dxDataGrid-ariaCollapse") : rowsView.localize("dxDataGrid-ariaExpand"), $container)
                            } else {
                                setEmptyText($container)
                            }
                        }
                    }),
                    setEmptyText: setEmptyText,
                    isDateType: isDateType,
                    getSelectionRange(focusedElement) {
                        try {
                            if (focusedElement) {
                                return {
                                    selectionStart: focusedElement.selectionStart,
                                    selectionEnd: focusedElement.selectionEnd
                                }
                            }
                        } catch (e) {}
                        return {}
                    },
                    setSelectionRange(focusedElement, selectionRange) {
                        try {
                            if (focusedElement && focusedElement.setSelectionRange) {
                                focusedElement.setSelectionRange(selectionRange.selectionStart, selectionRange.selectionEnd)
                            }
                        } catch (e) {}
                    },
                    focusAndSelectElement(component, $element) {
                        const isFocused = $element.is(":focus");
                        _events_engine.default.trigger($element, "focus");
                        const isSelectTextOnEditingStart = component.option("editing.selectTextOnEditStart");
                        const element = $element.get(0);
                        if (!isFocused && isSelectTextOnEditingStart && $element.is(".dx-texteditor-input") && !$element.is("[readonly]")) {
                            const editor = getWidgetInstance($element.closest(".dx-texteditor"));
                            (0, _deferred.when)(editor && editor._loadItemDeferred).done((() => {
                                element.select()
                            }))
                        }
                    },
                    getWidgetInstance: getWidgetInstance,
                    getLastResizableColumnIndex(columns, resultWidths) {
                        const hasResizableColumns = columns.some((column => column && !column.command && !column.fixed && false !== column.allowResizing));
                        let lastColumnIndex;
                        for (lastColumnIndex = columns.length - 1; columns[lastColumnIndex]; lastColumnIndex--) {
                            const column = columns[lastColumnIndex];
                            const width = resultWidths && resultWidths[lastColumnIndex];
                            const allowResizing = !hasResizableColumns || false !== column.allowResizing;
                            if (!column.command && !column.fixed && "adaptiveHidden" !== width && allowResizing) {
                                break
                            }
                        }
                        return lastColumnIndex
                    },
                    isElementInCurrentGrid(controller, $element) {
                        if ($element && $element.length) {
                            const $grid = $element.closest(`.${controller.getWidgetContainerClass()}`).parent();
                            return $grid.is(controller.component.$element())
                        }
                        return false
                    },
                    isVirtualRowRendering(that) {
                        const rowRenderingMode = that.option("scrolling.rowRenderingMode");
                        const isVirtualMode = "virtual" === that.option("scrolling.mode");
                        const isAppendMode = "infinite" === that.option("scrolling.mode");
                        if (false === that.option("scrolling.legacyMode") && (isVirtualMode || isAppendMode)) {
                            return true
                        }
                        return "virtual" === rowRenderingMode
                    },
                    getPixelRatio: window => window.devicePixelRatio || 1,
                    getContentHeightLimit(browser) {
                        if (browser.mozilla) {
                            return 8e6
                        }
                        return 15e6 / this.getPixelRatio((0, _window.getWindow)())
                    },
                    normalizeLookupDataSource(lookup) {
                        let lookupDataSourceOptions;
                        if (lookup.items) {
                            lookupDataSourceOptions = lookup.items
                        } else {
                            lookupDataSourceOptions = lookup.dataSource;
                            if ((0, _type.isFunction)(lookupDataSourceOptions) && !_variable_wrapper.default.isWrapped(lookupDataSourceOptions)) {
                                lookupDataSourceOptions = lookupDataSourceOptions({})
                            }
                        }
                        return (0, _utils.normalizeDataSourceOptions)(lookupDataSourceOptions)
                    },
                    getWrappedLookupDataSource(column, dataSource, filter) {
                        if (!dataSource) {
                            return []
                        }
                        const lookupDataSourceOptions = this.normalizeLookupDataSource(column.lookup);
                        if (column.calculateCellValue !== column.defaultCalculateCellValue) {
                            return lookupDataSourceOptions
                        }
                        const hasGroupPaging = dataSource.remoteOperations().groupPaging;
                        const hasLookupOptimization = column.displayField && (0, _type.isString)(column.displayField);
                        let cachedUniqueRelevantItems;
                        let previousTake;
                        let previousSkip;
                        const sliceItems = (items, loadOptions) => {
                            const start = loadOptions.skip ?? 0;
                            const end = loadOptions.take ? start + loadOptions.take : items.length;
                            return items.slice(start, end)
                        };
                        const loadUniqueRelevantItems = loadOptions => {
                            const group = function(group) {
                                if (!Array.isArray(group)) {
                                    group = [group]
                                }
                                return group.map(((item, i) => {
                                    if ((0, _type.isString)(item)) {
                                        return {
                                            selector: item,
                                            isExpanded: i < group.length - 1
                                        }
                                    }
                                    return item
                                }))
                            }(hasLookupOptimization ? [column.dataField, column.displayField] : column.dataField);
                            const d = new _deferred.Deferred;
                            const canUseCache = cachedUniqueRelevantItems && (!hasGroupPaging || loadOptions.skip === previousSkip && loadOptions.take === previousTake);
                            if (canUseCache) {
                                d.resolve(sliceItems(cachedUniqueRelevantItems, loadOptions))
                            } else {
                                previousSkip = loadOptions.skip;
                                previousTake = loadOptions.take;
                                dataSource.load({
                                    filter: filter,
                                    group: group,
                                    take: hasGroupPaging ? loadOptions.take : void 0,
                                    skip: hasGroupPaging ? loadOptions.skip : void 0
                                }).done((items => {
                                    cachedUniqueRelevantItems = items;
                                    d.resolve(hasGroupPaging ? items : sliceItems(items, loadOptions))
                                })).fail(d.fail)
                            }
                            return d
                        };
                        const lookupDataSource = _extends({}, lookupDataSourceOptions, {
                            __dataGridSourceFilter: filter,
                            load: loadOptions => {
                                const d = new _deferred.Deferred;
                                loadUniqueRelevantItems(loadOptions).done((items => {
                                    if (0 === items.length) {
                                        d.resolve([]);
                                        return
                                    }
                                    const filter = this.combineFilters(items.flatMap((data => data.key)).map((key => [column.lookup.valueExpr, key])), "or");
                                    const newDataSource = new _data_source.default(_extends({}, lookupDataSourceOptions, loadOptions, {
                                        filter: this.combineFilters([filter, loadOptions.filter], "and"),
                                        paginate: false
                                    }));
                                    newDataSource.load().done(d.resolve).fail(d.fail)
                                })).fail(d.fail);
                                return d
                            },
                            key: column.lookup.valueExpr,
                            byKey(key) {
                                const d = (0, _deferred.Deferred)();
                                this.load({
                                    filter: [column.lookup.valueExpr, "=", key]
                                }).done((arr => {
                                    d.resolve(arr[0])
                                }));
                                return d.promise()
                            }
                        });
                        return lookupDataSource
                    },
                    logHeaderFilterDeprecatedWarningIfNeed(component) {
                        const logWarning = component._logDeprecatedOptionWarning.bind(component);
                        if ((0, _type.isDefined)(component.option("headerFilter.allowSearch"))) {
                            logWarning("headerFilter.allowSearch", {
                                since: "23.1",
                                alias: "headerFilter.search.enabled"
                            })
                        }
                        if ((0, _type.isDefined)(component.option("headerFilter.searchTimeout"))) {
                            logWarning("headerFilter.searchTimeout", {
                                since: "23.1",
                                alias: "headerFilter.search.timeout"
                            })
                        }
                        const specificName = "dxPivotGrid" === component.NAME ? "dataSource.fields" : "columns";
                        const columns = component.option(specificName);
                        if (!Array.isArray(columns)) {
                            return
                        }
                        const logSpecificDeprecatedWarningIfNeed = columns => {
                            columns.forEach((column => {
                                var _column$columns;
                                const headerFilter = column.headerFilter || {};
                                if ((0, _type.isDefined)(headerFilter.allowSearch)) {
                                    logWarning(`${specificName}[].headerFilter.allowSearch`, {
                                        since: "23.1",
                                        alias: `${specificName}[].headerFilter.search.enabled`
                                    })
                                }
                                if ((0, _type.isDefined)(headerFilter.searchMode)) {
                                    logWarning(`${specificName}[].headerFilter.searchMode`, {
                                        since: "23.1",
                                        alias: `${specificName}[].headerFilter.search.mode`
                                    })
                                }
                                if (null !== (_column$columns = column.columns) && void 0 !== _column$columns && _column$columns.length) {
                                    logSpecificDeprecatedWarningIfNeed(column.columns)
                                }
                            }))
                        };
                        logSpecificDeprecatedWarningIfNeed(columns)
                    },
                    getComponentBorderWidth(that, $rowsViewElement) {
                        const borderWidth = that.option("showBorders") ? Math.ceil((0, _size.getOuterWidth)($rowsViewElement) - (0, _size.getInnerWidth)($rowsViewElement)) : 0;
                        return borderWidth
                    },
                    isCustomCommandColumn(columns, commandColumn) {
                        const customCommandColumns = columns.filter((column => column.type === commandColumn.type));
                        return !!customCommandColumns.length
                    }
                }
            },
        89983:
            /*!***********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/m_draggable.js ***!
              \***********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _position = _interopRequireDefault(__webpack_require__( /*! ../common/core/animation/position */ 3030));
                var _translator = __webpack_require__( /*! ../common/core/animation/translator */ 88603);
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../common/core/events/core/events_engine */ 92774));
                var _drag = __webpack_require__( /*! ../common/core/events/drag */ 59144);
                var _pointer = _interopRequireDefault(__webpack_require__( /*! ../common/core/events/pointer */ 89797));
                var _index = __webpack_require__( /*! ../common/core/events/utils/index */ 98834);
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../core/component_registrator */ 92848));
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../core/dom_adapter */ 64960));
                var _element = __webpack_require__( /*! ../core/element */ 61404);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../core/renderer */ 64553));
                var _empty_template = __webpack_require__( /*! ../core/templates/empty_template */ 48650);
                var _common = __webpack_require__( /*! ../core/utils/common */ 17781);
                var _deferred = __webpack_require__( /*! ../core/utils/deferred */ 87739);
                var _extend = __webpack_require__( /*! ../core/utils/extend */ 52576);
                var _inflector = __webpack_require__( /*! ../core/utils/inflector */ 53124);
                var _position2 = __webpack_require__( /*! ../core/utils/position */ 41639);
                var _size = __webpack_require__( /*! ../core/utils/size */ 57653);
                var _string = __webpack_require__( /*! ../core/utils/string */ 54497);
                var _type = __webpack_require__( /*! ../core/utils/type */ 11528);
                var _view_port = __webpack_require__( /*! ../core/utils/view_port */ 55355);
                var _window = __webpack_require__( /*! ../core/utils/window */ 3104);
                var _dom_component = _interopRequireDefault(__webpack_require__( /*! ./core/widget/dom_component */ 22331));
                var _m_animator = _interopRequireDefault(__webpack_require__( /*! ./ui/scroll_view/m_animator */ 99762));

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }

                function _extends() {
                    return _extends = Object.assign ? Object.assign.bind() : function(n) {
                        for (var e = 1; e < arguments.length; e++) {
                            var t = arguments[e];
                            for (var r in t) {
                                ({}).hasOwnProperty.call(t, r) && (n[r] = t[r])
                            }
                        }
                        return n
                    }, _extends.apply(null, arguments)
                }
                const window = (0, _window.getWindow)();
                const DRAGGABLE = "dxDraggable";
                const DRAGSTART_EVENT_NAME = (0, _index.addNamespace)(_drag.start, DRAGGABLE);
                const DRAG_EVENT_NAME = (0, _index.addNamespace)(_drag.move, DRAGGABLE);
                const DRAGEND_EVENT_NAME = (0, _index.addNamespace)(_drag.end, DRAGGABLE);
                const DRAG_ENTER_EVENT_NAME = (0, _index.addNamespace)(_drag.enter, DRAGGABLE);
                const DRAGEND_LEAVE_EVENT_NAME = (0, _index.addNamespace)(_drag.leave, DRAGGABLE);
                const POINTERDOWN_EVENT_NAME = (0, _index.addNamespace)(_pointer.default.down, DRAGGABLE);
                const KEYDOWN_EVENT_NAME = (0, _index.addNamespace)("keydown", DRAGGABLE);
                let targetDraggable;
                let sourceDraggable;
                const getMousePosition = event => ({
                    x: event.pageX - (0, _renderer.default)(window).scrollLeft(),
                    y: event.pageY - (0, _renderer.default)(window).scrollTop()
                });
                class ScrollHelper {
                    constructor(orientation, component) {
                        this._$scrollableAtPointer = null;
                        this._preventScroll = true;
                        this._component = component;
                        if ("vertical" === orientation) {
                            this._scrollValue = "scrollTop";
                            this._overFlowAttr = "overflowY";
                            this._sizeAttr = "height";
                            this._scrollSizeProp = "scrollHeight";
                            this._clientSizeProp = "clientHeight";
                            this._limitProps = {
                                start: "top",
                                end: "bottom"
                            }
                        } else {
                            this._scrollValue = "scrollLeft";
                            this._overFlowAttr = "overflowX";
                            this._sizeAttr = "width";
                            this._scrollSizeProp = "scrollWidth";
                            this._clientSizeProp = "clientWidth";
                            this._limitProps = {
                                start: "left",
                                end: "right"
                            }
                        }
                    }
                    updateScrollable(elements, mousePosition) {
                        let isScrollableFound = false;
                        elements.some((element => {
                            const $element = (0, _renderer.default)(element);
                            const isTargetOverOverlayWrapper = $element.hasClass("dx-overlay-wrapper");
                            const isTargetOverOverlayContent = $element.hasClass("dx-overlay-content");
                            if (isTargetOverOverlayWrapper || isTargetOverOverlayContent) {
                                return true
                            }
                            isScrollableFound = this._trySetScrollable(element, mousePosition);
                            return isScrollableFound
                        }));
                        if (!isScrollableFound) {
                            this._$scrollableAtPointer = null;
                            this._scrollSpeed = 0
                        }
                    }
                    isScrolling() {
                        return !!this._scrollSpeed
                    }
                    isScrollable($element) {
                        return ("auto" === $element.css(this._overFlowAttr) || $element.hasClass("dx-scrollable-container")) && $element.prop(this._scrollSizeProp) > Math.ceil("width" === this._sizeAttr ? (0, _size.getWidth)($element) : (0, _size.getHeight)($element))
                    }
                    _trySetScrollable(element, mousePosition) {
                        const that = this;
                        const $element = (0, _renderer.default)(element);
                        let distanceToBorders;
                        const sensitivity = that._component.option("scrollSensitivity");
                        let isScrollable = that.isScrollable($element);
                        if (isScrollable) {
                            distanceToBorders = that._calculateDistanceToBorders($element, mousePosition);
                            if (sensitivity > distanceToBorders[that._limitProps.start]) {
                                if (!that._preventScroll) {
                                    that._scrollSpeed = -that._calculateScrollSpeed(distanceToBorders[that._limitProps.start]);
                                    that._$scrollableAtPointer = $element
                                }
                            } else if (sensitivity > distanceToBorders[that._limitProps.end]) {
                                if (!that._preventScroll) {
                                    that._scrollSpeed = that._calculateScrollSpeed(distanceToBorders[that._limitProps.end]);
                                    that._$scrollableAtPointer = $element
                                }
                            } else {
                                isScrollable = false;
                                that._preventScroll = false
                            }
                        }
                        return isScrollable
                    }
                    _calculateDistanceToBorders($area, mousePosition) {
                        const area = $area.get(0);
                        let areaBoundingRect;
                        if (area) {
                            areaBoundingRect = (0, _position2.getBoundingRect)(area);
                            return {
                                left: mousePosition.x - areaBoundingRect.left,
                                top: mousePosition.y - areaBoundingRect.top,
                                right: areaBoundingRect.right - mousePosition.x,
                                bottom: areaBoundingRect.bottom - mousePosition.y
                            }
                        }
                        return {}
                    }
                    _calculateScrollSpeed(distance) {
                        const component = this._component;
                        const sensitivity = component.option("scrollSensitivity");
                        const maxSpeed = component.option("scrollSpeed");
                        return Math.ceil(((sensitivity - distance) / sensitivity) ** 2 * maxSpeed)
                    }
                    scrollByStep() {
                        const that = this;
                        if (that._$scrollableAtPointer && that._scrollSpeed) {
                            if (that._$scrollableAtPointer.hasClass("dx-scrollable-container")) {
                                const $scrollable = that._$scrollableAtPointer.closest(".dx-scrollable");
                                const scrollableInstance = $scrollable.data("dxScrollable") || $scrollable.data("dxScrollView");
                                if (scrollableInstance) {
                                    const nextScrollPosition = scrollableInstance.scrollOffset()[that._limitProps.start] + that._scrollSpeed;
                                    scrollableInstance.scrollTo({
                                        [that._limitProps.start]: nextScrollPosition
                                    })
                                }
                            } else {
                                const nextScrollPosition = that._$scrollableAtPointer[that._scrollValue]() + that._scrollSpeed;
                                that._$scrollableAtPointer[that._scrollValue](nextScrollPosition)
                            }
                            const dragMoveArgs = that._component._dragMoveArgs;
                            if (dragMoveArgs) {
                                that._component._dragMoveHandler(dragMoveArgs)
                            }
                        }
                    }
                    reset() {
                        this._$scrollableAtPointer = null;
                        this._scrollSpeed = 0;
                        this._preventScroll = true
                    }
                    isOutsideScrollable($scrollable, event) {
                        if (!$scrollable) {
                            return false
                        }
                        const scrollableSize = (0, _position2.getBoundingRect)($scrollable.get(0));
                        const start = scrollableSize[this._limitProps.start];
                        const size = scrollableSize[this._sizeAttr];
                        const mousePosition = getMousePosition(event);
                        const location = "width" === this._sizeAttr ? mousePosition.x : mousePosition.y;
                        return location < start || location > start + size
                    }
                }
                class ScrollAnimator extends _m_animator.default {
                    ctor(strategy) {
                        super.ctor();
                        this._strategy = strategy
                    }
                    _step() {
                        const horizontalScrollHelper = this._strategy._horizontalScrollHelper;
                        const verticalScrollHelper = this._strategy._verticalScrollHelper;
                        null === horizontalScrollHelper || void 0 === horizontalScrollHelper || horizontalScrollHelper.scrollByStep();
                        null === verticalScrollHelper || void 0 === verticalScrollHelper || verticalScrollHelper.scrollByStep()
                    }
                }
                class Draggable extends _dom_component.default {
                    reset() {}
                    dragMove(e) {}
                    dragEnter() {}
                    dragLeave() {}
                    dragEnd(sourceEvent) {
                        const sourceDraggable = this._getSourceDraggable();
                        sourceDraggable._fireRemoveEvent(sourceEvent);
                        return (0, _deferred.Deferred)().resolve()
                    }
                    _fireRemoveEvent(sourceEvent) {}
                    _getDefaultOptions() {
                        return _extends({}, super._getDefaultOptions(), {
                            onDragStart: null,
                            onDragMove: null,
                            onDragEnd: null,
                            onDragEnter: null,
                            onDragLeave: null,
                            onDragCancel: null,
                            onCancelByEsc: false,
                            onDrop: null,
                            immediate: true,
                            dragDirection: "both",
                            boundOffset: 0,
                            allowMoveByClick: false,
                            itemData: null,
                            contentTemplate: "content",
                            handle: "",
                            filter: "",
                            clone: false,
                            autoScroll: true,
                            scrollSpeed: 30,
                            scrollSensitivity: 60
                        })
                    }
                    _setOptionsByReference() {
                        super._setOptionsByReference.apply(this, arguments);
                        (0, _extend.extend)(this._optionsByReference, {
                            component: true,
                            group: true,
                            itemData: true,
                            data: true
                        })
                    }
                    _init() {
                        super._init();
                        this._attachEventHandlers();
                        this._scrollAnimator = new ScrollAnimator(this);
                        this._horizontalScrollHelper = new ScrollHelper("horizontal", this);
                        this._verticalScrollHelper = new ScrollHelper("vertical", this);
                        this._initScrollTop = 0;
                        this._initScrollLeft = 0
                    }
                    _normalizeCursorOffset(offset) {
                        if ((0, _type.isObject)(offset)) {
                            offset = {
                                h: offset.x,
                                v: offset.y
                            }
                        }
                        offset = (0, _common.splitPair)(offset).map((value => parseFloat(value)));
                        return {
                            left: offset[0],
                            top: 1 === offset.length ? offset[0] : offset[1]
                        }
                    }
                    _getNormalizedCursorOffset(offset, options) {
                        if ((0, _type.isFunction)(offset)) {
                            offset = offset.call(this, options)
                        }
                        return this._normalizeCursorOffset(offset)
                    }
                    _calculateElementOffset(options) {
                        let elementOffset;
                        let dragElementOffset;
                        const {
                            event: event
                        } = options;
                        const $element = (0, _renderer.default)(options.itemElement);
                        const $dragElement = (0, _renderer.default)(options.dragElement);
                        const isCloned = this._dragElementIsCloned();
                        const cursorOffset = this.option("cursorOffset");
                        let normalizedCursorOffset = {
                            left: 0,
                            top: 0
                        };
                        const currentLocate = this._initialLocate = (0, _translator.locate)($dragElement);
                        if (isCloned || options.initialOffset || cursorOffset) {
                            elementOffset = options.initialOffset || $element.offset();
                            if (cursorOffset) {
                                normalizedCursorOffset = this._getNormalizedCursorOffset(cursorOffset, options);
                                if (isFinite(normalizedCursorOffset.left)) {
                                    elementOffset.left = event.pageX
                                }
                                if (isFinite(normalizedCursorOffset.top)) {
                                    elementOffset.top = event.pageY
                                }
                            }
                            dragElementOffset = $dragElement.offset();
                            elementOffset.top -= dragElementOffset.top + (normalizedCursorOffset.top || 0) - currentLocate.top;
                            elementOffset.left -= dragElementOffset.left + (normalizedCursorOffset.left || 0) - currentLocate.left
                        }
                        return elementOffset
                    }
                    _initPosition(options) {
                        const $dragElement = (0, _renderer.default)(options.dragElement);
                        const elementOffset = this._calculateElementOffset(options);
                        if (elementOffset) {
                            this._move(elementOffset, $dragElement)
                        }
                        this._startPosition = (0, _translator.locate)($dragElement)
                    }
                    _startAnimator() {
                        if (!this._scrollAnimator.inProgress()) {
                            this._scrollAnimator.start()
                        }
                    }
                    _stopAnimator() {
                        this._scrollAnimator.stop()
                    }
                    _addWidgetPrefix(className) {
                        const componentName = this.NAME;
                        return (0, _inflector.dasherize)(componentName) + (className ? `-${className}` : "")
                    }
                    _getItemsSelector() {
                        return this.option("filter") || ""
                    }
                    _$content() {
                        const $element = this.$element();
                        const $wrapper = $element.children(".dx-template-wrapper");
                        return $wrapper.length ? $wrapper : $element
                    }
                    _attachEventHandlers() {
                        if (this.option("disabled")) {
                            return
                        }
                        let $element = this._$content();
                        let itemsSelector = this._getItemsSelector();
                        const allowMoveByClick = this.option("allowMoveByClick");
                        const data = {
                            direction: this.option("dragDirection"),
                            immediate: this.option("immediate"),
                            checkDropTarget: ($target, event) => {
                                const targetGroup = this.option("group");
                                const sourceGroup = this._getSourceDraggable().option("group");
                                const $scrollable = this._getScrollable($target);
                                if (this._verticalScrollHelper.isOutsideScrollable($scrollable, event) || this._horizontalScrollHelper.isOutsideScrollable($scrollable, event)) {
                                    return false
                                }
                                return sourceGroup && sourceGroup === targetGroup
                            }
                        };
                        if (allowMoveByClick) {
                            $element = this._getArea();
                            _events_engine.default.on($element, POINTERDOWN_EVENT_NAME, data, this._pointerDownHandler.bind(this))
                        }
                        if (">" === itemsSelector[0]) {
                            itemsSelector = itemsSelector.slice(1)
                        }
                        _events_engine.default.on($element, DRAGSTART_EVENT_NAME, itemsSelector, data, this._dragStartHandler.bind(this));
                        _events_engine.default.on($element, DRAG_EVENT_NAME, data, this._dragMoveHandler.bind(this));
                        _events_engine.default.on($element, DRAGEND_EVENT_NAME, data, this._dragEndHandler.bind(this));
                        _events_engine.default.on($element, DRAG_ENTER_EVENT_NAME, data, this._dragEnterHandler.bind(this));
                        _events_engine.default.on($element, DRAGEND_LEAVE_EVENT_NAME, data, this._dragLeaveHandler.bind(this));
                        if (this.option("onCancelByEsc")) {
                            _events_engine.default.on($element, KEYDOWN_EVENT_NAME, this._keydownHandler.bind(this))
                        }
                    }
                    _dragElementIsCloned() {
                        var _this$_$dragElement;
                        return null === (_this$_$dragElement = this._$dragElement) || void 0 === _this$_$dragElement ? void 0 : _this$_$dragElement.hasClass(this._addWidgetPrefix("clone"))
                    }
                    _getDragTemplateArgs($element, $container) {
                        return {
                            container: (0, _element.getPublicElement)($container),
                            model: {
                                itemData: this.option("itemData"),
                                itemElement: (0, _element.getPublicElement)($element)
                            }
                        }
                    }
                    _createDragElement($element) {
                        let result = $element;
                        const clone = this.option("clone");
                        const $container = this._getContainer();
                        let template = this.option("dragTemplate");
                        if (template) {
                            template = this._getTemplate(template);
                            result = (0, _renderer.default)("<div>").appendTo($container);
                            template.render(this._getDragTemplateArgs($element, result))
                        } else if (clone) {
                            result = (0, _renderer.default)("<div>").appendTo($container);
                            $element.clone().css({
                                width: $element.css("width"),
                                height: $element.css("height")
                            }).appendTo(result)
                        }
                        return result.toggleClass(this._addWidgetPrefix("clone"), result.get(0) !== $element.get(0)).toggleClass("dx-rtl", this.option("rtlEnabled"))
                    }
                    _resetDragElement() {
                        if (this._dragElementIsCloned()) {
                            var _this$_$dragElement2;
                            null === (_this$_$dragElement2 = this._$dragElement) || void 0 === _this$_$dragElement2 || _this$_$dragElement2.remove()
                        } else {
                            this._toggleDraggingClass(false)
                        }
                        this._$dragElement = null
                    }
                    _resetSourceElement() {
                        this._toggleDragSourceClass(false);
                        this._$sourceElement = null
                    }
                    _detachEventHandlers() {
                        _events_engine.default.off(this._$content(), `.${DRAGGABLE}`);
                        _events_engine.default.off(this._getArea(), `.${DRAGGABLE}`)
                    }
                    _move(position, $element) {
                        (0, _translator.move)($element || this._$dragElement, position)
                    }
                    _getDraggableElement(e) {
                        const $sourceElement = this._getSourceElement();
                        if ($sourceElement) {
                            return $sourceElement
                        }
                        const allowMoveByClick = this.option("allowMoveByClick");
                        if (allowMoveByClick) {
                            return this.$element()
                        }
                        let $target = (0, _renderer.default)(null === e || void 0 === e ? void 0 : e.target);
                        const itemsSelector = this._getItemsSelector();
                        if (">" === itemsSelector[0]) {
                            const $items = this._$content().find(itemsSelector);
                            if (!$items.is($target)) {
                                $target = $target.closest($items)
                            }
                        }
                        return $target
                    }
                    _getSourceElement() {
                        const draggable = this._getSourceDraggable();
                        return draggable._$sourceElement
                    }
                    _pointerDownHandler(e) {
                        if ((0, _index.needSkipEvent)(e)) {
                            return
                        }
                        const position = {};
                        const $element = this.$element();
                        const {
                            dragDirection: dragDirection
                        } = this.option();
                        if ("horizontal" === dragDirection || "both" === dragDirection) {
                            position.left = e.pageX - $element.offset().left + (0, _translator.locate)($element).left - (0, _size.getWidth)($element) / 2
                        }
                        if ("vertical" === dragDirection || "both" === dragDirection) {
                            position.top = e.pageY - $element.offset().top + (0, _translator.locate)($element).top - (0, _size.getHeight)($element) / 2
                        }
                        this._move(position, $element);
                        this._getAction("onDragMove")(this._getEventArgs(e))
                    }
                    _isValidElement(event, $element) {
                        var _event$originalEvent;
                        const {
                            handle: handle
                        } = this.option();
                        const $target = (0, _renderer.default)(null === (_event$originalEvent = event.originalEvent) || void 0 === _event$originalEvent ? void 0 : _event$originalEvent.target);
                        if (handle && !$target.closest(handle).length) {
                            return false
                        }
                        if (!$element.length) {
                            return false
                        }
                        return !$element.is(".dx-state-disabled, .dx-state-disabled *")
                    }
                    _dragStartHandler(e) {
                        const $element = this._getDraggableElement(e);
                        this.dragInProgress = true;
                        if (!this._isValidElement(e, $element)) {
                            e.cancel = true;
                            return
                        }
                        if (this._$sourceElement) {
                            return
                        }
                        const dragStartArgs = this._getDragStartArgs(e, $element);
                        this._getAction("onDragStart")(dragStartArgs);
                        if (dragStartArgs.cancel) {
                            e.cancel = true;
                            return
                        }
                        this.option("itemData", dragStartArgs.itemData);
                        this._setSourceDraggable();
                        this._$sourceElement = $element;
                        let initialOffset = $element.offset();
                        if (!this._hasClonedDraggable() && this.option("autoScroll")) {
                            this._initScrollTop = this._getScrollableScrollTop();
                            this._initScrollLeft = this._getScrollableScrollLeft();
                            initialOffset = this._getDraggableElementOffset(initialOffset.left, initialOffset.top)
                        }
                        const $dragElement = this._$dragElement = this._createDragElement($element);
                        this._toggleDraggingClass(true);
                        this._toggleDragSourceClass(true);
                        this._setGestureCoverCursor($dragElement.children());
                        const isFixedPosition = "fixed" === $dragElement.css("position");
                        this._initPosition((0, _extend.extend)({}, dragStartArgs, {
                            dragElement: $dragElement.get(0),
                            initialOffset: isFixedPosition && initialOffset
                        }));
                        this._getAction("onDraggableElementShown")(_extends({}, dragStartArgs, {
                            dragElement: $dragElement
                        }));
                        const $area = this._getArea();
                        const areaOffset = this._getAreaOffset($area);
                        const boundOffset = this._getBoundOffset();
                        const areaWidth = (0, _size.getOuterWidth)($area);
                        const areaHeight = (0, _size.getOuterHeight)($area);
                        const elementWidth = (0, _size.getWidth)($dragElement);
                        const elementHeight = (0, _size.getHeight)($dragElement);
                        const startOffset_left = $dragElement.offset().left - areaOffset.left,
                            startOffset_top = $dragElement.offset().top - areaOffset.top;
                        if ($area.length) {
                            e.maxLeftOffset = startOffset_left - boundOffset.left;
                            e.maxRightOffset = areaWidth - startOffset_left - elementWidth - boundOffset.right;
                            e.maxTopOffset = startOffset_top - boundOffset.top;
                            e.maxBottomOffset = areaHeight - startOffset_top - elementHeight - boundOffset.bottom
                        }
                        if (this.option("autoScroll")) {
                            this._startAnimator()
                        }
                    }
                    _getAreaOffset($area) {
                        const offset = $area && _position.default.offset($area);
                        return offset || {
                            left: 0,
                            top: 0
                        }
                    }
                    _toggleDraggingClass(value) {
                        var _this$_$dragElement3;
                        null === (_this$_$dragElement3 = this._$dragElement) || void 0 === _this$_$dragElement3 || _this$_$dragElement3.toggleClass(this._addWidgetPrefix("dragging"), value)
                    }
                    _toggleDragSourceClass(value, $element) {
                        const $sourceElement = $element || this._$sourceElement;
                        null === $sourceElement || void 0 === $sourceElement || $sourceElement.toggleClass(this._addWidgetPrefix("source"), value)
                    }
                    _setGestureCoverCursor($element) {
                        (0, _renderer.default)(".dx-gesture-cover").css("cursor", $element.css("cursor"))
                    }
                    _getBoundOffset() {
                        let boundOffset = this.option("boundOffset");
                        if ((0, _type.isFunction)(boundOffset)) {
                            boundOffset = boundOffset.call(this)
                        }
                        return (0, _string.quadToObject)(boundOffset)
                    }
                    _getArea() {
                        let area = this.option("boundary");
                        if ((0, _type.isFunction)(area)) {
                            area = area.call(this)
                        }
                        return (0, _renderer.default)(area)
                    }
                    _getContainer() {
                        let {
                            container: container
                        } = this.option();
                        if (void 0 === container) {
                            container = (0, _view_port.value)()
                        }
                        return (0, _renderer.default)(container)
                    }
                    _getDraggableElementOffset(initialOffsetX, initialOffsetY) {
                        var _this$_startPosition, _this$_startPosition2;
                        const initScrollTop = this._initScrollTop;
                        const initScrollLeft = this._initScrollLeft;
                        const scrollTop = this._getScrollableScrollTop();
                        const scrollLeft = this._getScrollableScrollLeft();
                        const elementPosition = (0, _renderer.default)(this.element()).css("position");
                        const isFixedPosition = "fixed" === elementPosition;
                        const result = {
                            left: ((null === (_this$_startPosition = this._startPosition) || void 0 === _this$_startPosition ? void 0 : _this$_startPosition.left) ?? 0) + initialOffsetX,
                            top: ((null === (_this$_startPosition2 = this._startPosition) || void 0 === _this$_startPosition2 ? void 0 : _this$_startPosition2.top) ?? 0) + initialOffsetY
                        };
                        if (isFixedPosition || this._hasClonedDraggable()) {
                            return result
                        }
                        return {
                            left: (0, _type.isNumeric)(scrollLeft) ? result.left + scrollLeft - initScrollLeft : result.left,
                            top: (0, _type.isNumeric)(scrollTop) ? result.top + scrollTop - initScrollTop : result.top
                        }
                    }
                    _hasClonedDraggable() {
                        return this.option("clone") || this.option("dragTemplate")
                    }
                    _dragMoveHandler(e) {
                        this._dragMoveArgs = e;
                        if (!this._$dragElement) {
                            e.cancel = true;
                            return
                        }
                        const offset = this._getDraggableElementOffset(e.offset.x, e.offset.y);
                        this._move(offset);
                        this._updateScrollable(e);
                        const eventArgs = this._getEventArgs(e);
                        this._getAction("onDragMove")(eventArgs);
                        if (true === eventArgs.cancel) {
                            return
                        }
                        const targetDraggable = this._getTargetDraggable();
                        targetDraggable.dragMove(e, scrollBy)
                    }
                    _updateScrollable(e) {
                        const that = this;
                        if (that.option("autoScroll")) {
                            const mousePosition = getMousePosition(e);
                            const allObjects = _dom_adapter.default.elementsFromPoint(mousePosition.x, mousePosition.y, this.$element().get(0));
                            that._verticalScrollHelper.updateScrollable(allObjects, mousePosition);
                            that._horizontalScrollHelper.updateScrollable(allObjects, mousePosition)
                        }
                    }
                    _getScrollable($element) {
                        let $scrollable;
                        $element.parents().toArray().some((parent => {
                            const $parent = (0, _renderer.default)(parent);
                            if (this._horizontalScrollHelper.isScrollable($parent) || this._verticalScrollHelper.isScrollable($parent)) {
                                $scrollable = $parent;
                                return true
                            }
                            return false
                        }));
                        return $scrollable
                    }
                    _getScrollableScrollTop() {
                        var _this$_getScrollable;
                        return (null === (_this$_getScrollable = this._getScrollable((0, _renderer.default)(this.element()))) || void 0 === _this$_getScrollable ? void 0 : _this$_getScrollable.scrollTop()) ?? 0
                    }
                    _getScrollableScrollLeft() {
                        var _this$_getScrollable2;
                        return (null === (_this$_getScrollable2 = this._getScrollable((0, _renderer.default)(this.element()))) || void 0 === _this$_getScrollable2 ? void 0 : _this$_getScrollable2.scrollLeft()) ?? 0
                    }
                    _defaultActionArgs() {
                        const args = super._defaultActionArgs.apply(this, arguments);
                        const component = this.option("component");
                        if (component) {
                            args.component = component;
                            args.element = component.element()
                        }
                        return args
                    }
                    _getEventArgs(e) {
                        const sourceDraggable = this._getSourceDraggable();
                        const targetDraggable = this._getTargetDraggable();
                        return {
                            event: e,
                            itemData: sourceDraggable.option("itemData"),
                            itemElement: (0, _element.getPublicElement)(sourceDraggable._$sourceElement),
                            fromComponent: sourceDraggable.option("component") || sourceDraggable,
                            toComponent: targetDraggable.option("component") || targetDraggable,
                            fromData: sourceDraggable.option("data"),
                            toData: targetDraggable.option("data")
                        }
                    }
                    _getDragStartArgs(e, $itemElement) {
                        const args = this._getEventArgs(e);
                        return {
                            event: args.event,
                            itemData: args.itemData,
                            itemElement: $itemElement,
                            fromData: args.fromData
                        }
                    }
                    _revertItemToInitialPosition() {
                        !this._dragElementIsCloned() && this._move(this._initialLocate, this._$sourceElement)
                    }
                    _dragEndHandler(e) {
                        const d = (0, _deferred.Deferred)();
                        const dragEndEventArgs = this._getEventArgs(e);
                        const dropEventArgs = this._getEventArgs(e);
                        const targetDraggable = this._getTargetDraggable();
                        let needRevertPosition = true;
                        this.dragInProgress = false;
                        try {
                            this._getAction("onDragEnd")(dragEndEventArgs)
                        } finally {
                            (0, _deferred.when)((0, _deferred.fromPromise)(dragEndEventArgs.cancel)).done((cancel => {
                                if (!cancel) {
                                    if (targetDraggable !== this) {
                                        targetDraggable._getAction("onDrop")(dropEventArgs)
                                    }
                                    if (!dropEventArgs.cancel) {
                                        needRevertPosition = false;
                                        (0, _deferred.when)((0, _deferred.fromPromise)(targetDraggable.dragEnd(dragEndEventArgs))).always(d.resolve);
                                        return
                                    }
                                }
                                d.resolve()
                            })).fail(d.resolve);
                            d.done((() => {
                                if (needRevertPosition) {
                                    this._revertItemToInitialPosition()
                                }
                                this._resetDragOptions(targetDraggable)
                            }))
                        }
                    }
                    _isTargetOverAnotherDraggable(e) {
                        const sourceDraggable = this._getSourceDraggable();
                        if (this === sourceDraggable) {
                            return false
                        }
                        const $dragElement = sourceDraggable._$dragElement;
                        const $sourceDraggableElement = sourceDraggable.$element();
                        const $targetDraggableElement = this.$element();
                        const mousePosition = getMousePosition(e);
                        const elements = _dom_adapter.default.elementsFromPoint(mousePosition.x, mousePosition.y, this.element());
                        const firstWidgetElement = elements.filter((element => {
                            const $element = (0, _renderer.default)(element);
                            if ($element.hasClass(this._addWidgetPrefix())) {
                                return !$element.closest($dragElement).length
                            }
                            return false
                        }))[0];
                        const $sourceElement = this._getSourceElement();
                        const isTargetOverItself = firstWidgetElement === $sourceDraggableElement.get(0);
                        const isTargetOverNestedDraggable = (0, _renderer.default)(firstWidgetElement).closest($sourceElement).length;
                        return !firstWidgetElement || firstWidgetElement === $targetDraggableElement.get(0) && !isTargetOverItself && !isTargetOverNestedDraggable
                    }
                    _dragEnterHandler(e) {
                        this._fireDragEnterEvent(e);
                        if (this._isTargetOverAnotherDraggable(e)) {
                            this._setTargetDraggable()
                        }
                        const sourceDraggable = this._getSourceDraggable();
                        sourceDraggable.dragEnter(e)
                    }
                    _dragLeaveHandler(e) {
                        this._fireDragLeaveEvent(e);
                        this._resetTargetDraggable();
                        if (this !== this._getSourceDraggable()) {
                            this.reset()
                        }
                        const sourceDraggable = this._getSourceDraggable();
                        sourceDraggable.dragLeave(e)
                    }
                    _keydownHandler(e) {
                        if (this.dragInProgress && "Escape" === e.key) {
                            this._keydownEscapeHandler(e)
                        }
                    }
                    _keydownEscapeHandler(e) {
                        var _sourceDraggable;
                        const $sourceElement = this._getSourceElement();
                        if (!$sourceElement) {
                            return
                        }
                        const dragCancelEventArgs = this._getEventArgs(e);
                        this._getAction("onDragCancel")(dragCancelEventArgs);
                        if (dragCancelEventArgs.cancel) {
                            return
                        }
                        this.dragInProgress = false;
                        null === (_sourceDraggable = sourceDraggable) || void 0 === _sourceDraggable || _sourceDraggable._toggleDraggingClass(false);
                        this._detachEventHandlers();
                        this._revertItemToInitialPosition();
                        const targetDraggable = this._getTargetDraggable();
                        this._resetDragOptions(targetDraggable);
                        this._attachEventHandlers()
                    }
                    _getAction(name) {
                        return this[`_${name}Action`] || this._createActionByOption(name)
                    }
                    _getAnonymousTemplateName() {
                        return "content"
                    }
                    _initTemplates() {
                        if (!this.option("contentTemplate")) {
                            return
                        }
                        this._templateManager.addDefaultTemplates({
                            content: new _empty_template.EmptyTemplate
                        });
                        super._initTemplates.apply(this, arguments)
                    }
                    _render() {
                        super._render();
                        this.$element().addClass(this._addWidgetPrefix());
                        const transclude = this._templateManager.anonymousTemplateName === this.option("contentTemplate");
                        const template = this._getTemplateByOption("contentTemplate");
                        if (template) {
                            (0, _renderer.default)(template.render({
                                container: this.element(),
                                transclude: transclude
                            }))
                        }
                    }
                    _optionChanged(args) {
                        const {
                            name: name
                        } = args;
                        switch (name) {
                            case "onDragStart":
                            case "onDragMove":
                            case "onDragEnd":
                            case "onDrop":
                            case "onDragEnter":
                            case "onDragLeave":
                            case "onDragCancel":
                            case "onDraggableElementShown":
                                this[`_${name}Action`] = this._createActionByOption(name);
                                break;
                            case "dragTemplate":
                            case "contentTemplate":
                            case "container":
                            case "clone":
                            case "scrollSensitivity":
                            case "scrollSpeed":
                            case "boundOffset":
                            case "handle":
                            case "group":
                            case "data":
                            case "itemData":
                                break;
                            case "allowMoveByClick":
                            case "dragDirection":
                            case "disabled":
                            case "boundary":
                            case "filter":
                            case "immediate":
                                this._resetDragElement();
                                this._detachEventHandlers();
                                this._attachEventHandlers();
                                break;
                            case "onCancelByEsc":
                                this._keydownHandler();
                                break;
                            case "autoScroll":
                                this._verticalScrollHelper.reset();
                                this._horizontalScrollHelper.reset();
                                break;
                            default:
                                super._optionChanged(args)
                        }
                    }
                    _getTargetDraggable() {
                        return targetDraggable || this
                    }
                    _getSourceDraggable() {
                        return sourceDraggable || this
                    }
                    _setTargetDraggable() {
                        const currentGroup = this.option("group");
                        const sourceDraggable = this._getSourceDraggable();
                        if (currentGroup && currentGroup === sourceDraggable.option("group")) {
                            targetDraggable = this
                        }
                    }
                    _setSourceDraggable() {
                        sourceDraggable = this
                    }
                    _resetSourceDraggable() {
                        sourceDraggable = null
                    }
                    _resetTargetDraggable() {
                        targetDraggable = null
                    }
                    _resetDragOptions(targetDraggable) {
                        this.reset();
                        targetDraggable.reset();
                        this._stopAnimator();
                        this._horizontalScrollHelper.reset();
                        this._verticalScrollHelper.reset();
                        this._resetDragElement();
                        this._resetSourceElement();
                        this._resetTargetDraggable();
                        this._resetSourceDraggable()
                    }
                    _dispose() {
                        super._dispose();
                        this._detachEventHandlers();
                        this._resetDragElement();
                        this._resetTargetDraggable();
                        this._resetSourceDraggable();
                        this._$sourceElement = null;
                        this._stopAnimator()
                    }
                    _fireDragEnterEvent(sourceEvent) {
                        const args = this._getEventArgs(sourceEvent);
                        this._getAction("onDragEnter")(args)
                    }
                    _fireDragLeaveEvent(sourceEvent) {
                        const args = this._getEventArgs(sourceEvent);
                        this._getAction("onDragLeave")(args)
                    }
                }(0, _component_registrator.default)(DRAGGABLE, Draggable);
                exports.default = Draggable
            },
        19576:
            /*!************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/m_date_adapter.js ***!
              \************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _date = (e = __webpack_require__( /*! ../../core/utils/date */ 41380), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                const toMs = _date.default.dateToMilliseconds;
                class DateAdapterCore {
                    constructor(source) {
                        this._source = new Date(source.getTime ? source.getTime() : source)
                    }
                    get source() {
                        return this._source
                    }
                    result() {
                        return this._source
                    }
                    getTimezoneOffset() {
                        let format = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : void 0;
                        const value = this._source.getTimezoneOffset();
                        if ("minute" === format) {
                            return value * toMs("minute")
                        }
                        return value
                    }
                    getTime() {
                        return this._source.getTime()
                    }
                    setTime(value) {
                        this._source.setTime(value);
                        return this
                    }
                    addTime(value) {
                        this._source.setTime(this._source.getTime() + value);
                        return this
                    }
                    setMinutes(value) {
                        this._source.setMinutes(value);
                        return this
                    }
                    addMinutes(value) {
                        this._source.setMinutes(this._source.getMinutes() + value);
                        return this
                    }
                    subtractMinutes(value) {
                        this._source.setMinutes(this._source.getMinutes() - value);
                        return this
                    }
                }
                exports.default = date => new DateAdapterCore(date)
            },
        18648:
            /*!***************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/m_utils_time_zone.js ***!
              \***************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _errors = _interopRequireDefault(__webpack_require__( /*! ../../core/errors */ 87129));
                var _date = __webpack_require__( /*! ../core/utils/date */ 55594);
                var _index = __webpack_require__( /*! ../scheduler/utils/index */ 80356);
                var _date2 = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/date */ 41380));
                var _m_date_adapter = _interopRequireDefault(__webpack_require__( /*! ./m_date_adapter */ 19576));
                var _m_utils_timezones_data = _interopRequireDefault(__webpack_require__( /*! ./timezones/m_utils_timezones_data */ 73862));
                var _timezone_list = _interopRequireDefault(__webpack_require__( /*! ./timezones/timezone_list */ 95053));

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const toMs = _date2.default.dateToMilliseconds;
                const offsetFormatRegexp = /^GMT(?:[+-]\d{2}:\d{2})?$/;
                const createUTCDate = date => new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes()));
                const getTimezoneOffsetChangeInMinutes = (startDate, endDate, updatedStartDate, updatedEndDate) => getDaylightOffset(updatedStartDate, updatedEndDate) - getDaylightOffset(startDate, endDate);
                const getDaylightOffset = (startDate, endDate) => new Date(startDate).getTimezoneOffset() - new Date(endDate).getTimezoneOffset();
                const getDaylightOffsetInMs = (startDate, endDate) => getDaylightOffset(startDate, endDate) * toMs("minute");
                const calculateTimezoneByValue = function(timeZone) {
                    let date = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : new Date;
                    if (!timeZone) {
                        return
                    }
                    const isValidTimezone = _timezone_list.default.value.includes(timeZone);
                    if (!isValidTimezone) {
                        _errors.default.log("W0009", timeZone);
                        return
                    }
                    if (!_date.dateUtilsTs.isValidDate(date)) {
                        return
                    }
                    let result = function(timezone) {
                        let date = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : new Date;
                        const customTimezones = _m_utils_timezones_data.default.getTimeZonesOld();
                        if (0 === customTimezones.length) {
                            return
                        }
                        const dateUtc = createUTCDate(date);
                        return _m_utils_timezones_data.default.getTimeZoneOffsetById(timezone, dateUtc.getTime())
                    }(timeZone, date);
                    if (void 0 === result) {
                        result = function(timeZone) {
                            let date = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : new Date;
                            const offset = getStringOffset(timeZone, date);
                            if (void 0 === offset) {
                                return
                            }
                            if ("GMT" === offset) {
                                return 0
                            }
                            const isMinus = "-" === offset.substring(3, 4);
                            const hours = offset.substring(4, 6);
                            const minutes = offset.substring(7, 9);
                            const result = parseInt(hours, 10) + parseInt(minutes, 10) / 60;
                            return isMinus ? -result : result
                        }(timeZone, date)
                    }
                    return result
                };
                const getStringOffset = function(timeZone) {
                    let date = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : new Date;
                    let result = "";
                    try {
                        var _dateTimeFormat$forma;
                        const dateTimeFormat = new Intl.DateTimeFormat("en-US", {
                            timeZone: timeZone,
                            timeZoneName: "longOffset"
                        });
                        result = (null === (_dateTimeFormat$forma = dateTimeFormat.formatToParts(date).find((_ref => {
                            let {
                                type: type
                            } = _ref;
                            return "timeZoneName" === type
                        }))) || void 0 === _dateTimeFormat$forma ? void 0 : _dateTimeFormat$forma.value) ?? ""
                    } catch (e) {
                        _errors.default.log("W0009", timeZone);
                        return
                    }
                    const isSupportedFormat = offsetFormatRegexp.test(result);
                    if (!isSupportedFormat) {
                        _errors.default.log("W0009", timeZone);
                        return
                    }
                    return result
                };
                const getTimezoneTitle = function(timeZone) {
                    let date = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : new Date;
                    if (!_date.dateUtilsTs.isValidDate(date)) {
                        return ""
                    }
                    const tzNamePart = timeZone.replace(/\//g, " - ").replace(/_/g, " ");
                    const offset = getStringOffset(timeZone, date);
                    if (void 0 === offset) {
                        return
                    }
                    const offsetNamePart = (offset => {
                        if ("GMT" === offset) {
                            return `${offset} +00:00`
                        }
                        return offset.replace("GMT", "GMT ")
                    })(offset);
                    return `(${offsetNamePart}) ${tzNamePart}`
                };
                const _getDaylightOffsetByTimezone = (startDate, endDate, timeZone) => {
                    const startDayOffset = calculateTimezoneByValue(timeZone, startDate);
                    const endDayOffset = calculateTimezoneByValue(timeZone, endDate);
                    if (void 0 === startDayOffset || void 0 === endDayOffset) {
                        return 0
                    }
                    return startDayOffset - endDayOffset
                };
                const isTimezoneChangeInDate = date => {
                    const startDayDate = new Date(new Date(date).setHours(0, 0, 0, 0));
                    const endDayDate = new Date(new Date(date).setHours(23, 59, 59, 0));
                    return startDayDate.getTimezoneOffset() - endDayDate.getTimezoneOffset() !== 0
                };
                const getClientTimezoneOffset = function() {
                    let date = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : new Date;
                    return 6e4 * date.getTimezoneOffset()
                };
                const hasDSTInLocalTimeZone = () => {
                    const [startDate, endDate] = getExtremeDates();
                    return startDate.getTimezoneOffset() !== endDate.getTimezoneOffset()
                };
                const getOffset = date => -date.getTimezoneOffset() / 60;
                const getDateAndMoveHourBack = dateStamp => new Date(dateStamp - toMs("hour"));
                const isEqualLocalTimeZoneByDeclaration = (timeZoneName, date) => {
                    const customTimezones = _m_utils_timezones_data.default.getTimeZonesOld();
                    const targetTimezoneData = customTimezones.filter((tz => tz.id === timeZoneName));
                    if (1 === targetTimezoneData.length) {
                        return ((timeZoneName, date) => {
                            const year = date.getFullYear();
                            const configTuple = _m_utils_timezones_data.default.getTimeZoneDeclarationTuple(timeZoneName, year);
                            const [summerTime, winterTime] = configTuple;
                            const noDSTInTargetTimeZone = configTuple.length < 2;
                            if (noDSTInTargetTimeZone) {
                                const targetTimeZoneOffset = _m_utils_timezones_data.default.getTimeZoneOffsetById(timeZoneName, date);
                                const localTimeZoneOffset = getOffset(date);
                                if (targetTimeZoneOffset !== localTimeZoneOffset) {
                                    return false
                                }
                                return !hasDSTInLocalTimeZone()
                            }
                            const localSummerOffset = getOffset(new Date(summerTime.date));
                            const localWinterOffset = getOffset(new Date(winterTime.date));
                            if (localSummerOffset !== summerTime.offset) {
                                return false
                            }
                            if (localSummerOffset === getOffset(getDateAndMoveHourBack(summerTime.date))) {
                                return false
                            }
                            if (localWinterOffset !== winterTime.offset) {
                                return false
                            }
                            if (localWinterOffset === getOffset(getDateAndMoveHourBack(winterTime.date))) {
                                return false
                            }
                            return true
                        })(timeZoneName, date)
                    }
                    return false
                };
                const getExtremeDates = () => {
                    const nowDate = new Date(Date.now());
                    const startDate = new Date;
                    const endDate = new Date;
                    startDate.setFullYear(nowDate.getFullYear(), 0, 1);
                    endDate.setFullYear(nowDate.getFullYear(), 6, 1);
                    return [startDate, endDate]
                };
                let timeZoneDataCache = [];
                let timeZoneDataCachePromise;
                const utils = {
                    getDaylightOffset: getDaylightOffset,
                    getDaylightOffsetInMs: getDaylightOffsetInMs,
                    getTimezoneOffsetChangeInMinutes: getTimezoneOffsetChangeInMinutes,
                    getTimezoneOffsetChangeInMs: (startDate, endDate, updatedStartDate, updatedEndDate) => getTimezoneOffsetChangeInMinutes(startDate, endDate, updatedStartDate, updatedEndDate) * toMs("minute"),
                    calculateTimezoneByValue: calculateTimezoneByValue,
                    getCorrectedDateByDaylightOffsets: (convertedOriginalStartDate, convertedDate, date, timeZone, startDateTimezone) => {
                        const daylightOffsetByCommonTimezone = _getDaylightOffsetByTimezone(convertedOriginalStartDate, convertedDate, timeZone);
                        const daylightOffsetByAppointmentTimezone = _getDaylightOffsetByTimezone(convertedOriginalStartDate, convertedDate, startDateTimezone);
                        const diff = daylightOffsetByCommonTimezone - daylightOffsetByAppointmentTimezone;
                        return new Date(date.getTime() - diff * toMs("hour"))
                    },
                    isSameAppointmentDates: (startDate, endDate) => {
                        endDate = new Date(endDate.getTime() - 1);
                        return _date2.default.sameDate(startDate, endDate)
                    },
                    correctRecurrenceExceptionByTimezone: function(exception, exceptionByStartDate, timeZone, startDateTimeZone) {
                        let isBackConversion = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : false;
                        let timezoneOffset = (exception.getTimezoneOffset() - exceptionByStartDate.getTimezoneOffset()) / 60;
                        if (startDateTimeZone) {
                            timezoneOffset = _getDaylightOffsetByTimezone(exceptionByStartDate, exception, startDateTimeZone)
                        } else if (timeZone) {
                            timezoneOffset = _getDaylightOffsetByTimezone(exceptionByStartDate, exception, timeZone)
                        }
                        return new Date(exception.getTime() + (isBackConversion ? -1 : 1) * timezoneOffset * toMs("hour"))
                    },
                    getClientTimezoneOffset: getClientTimezoneOffset,
                    getDiffBetweenClientTimezoneOffsets: function() {
                        let firstDate = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : new Date;
                        let secondDate = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : new Date;
                        return getClientTimezoneOffset(firstDate) - getClientTimezoneOffset(secondDate)
                    },
                    createUTCDateWithLocalOffset: date => {
                        if (!date) {
                            return null
                        }
                        return new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds()))
                    },
                    createDateFromUTCWithLocalOffset: date => {
                        const result = (0, _m_date_adapter.default)(date);
                        const timezoneOffsetBeforeInMin = result.getTimezoneOffset();
                        result.addTime(result.getTimezoneOffset("minute"));
                        result.subtractMinutes(timezoneOffsetBeforeInMin - result.getTimezoneOffset());
                        return result.source
                    },
                    createUTCDate: createUTCDate,
                    isTimezoneChangeInDate: isTimezoneChangeInDate,
                    getDateWithoutTimezoneChange: date => {
                        const clonedDate = new Date(date);
                        if (isTimezoneChangeInDate(clonedDate)) {
                            const result = new Date(clonedDate);
                            return new Date(result.setDate(result.getDate() + 1))
                        }
                        return clonedDate
                    },
                    hasDSTInLocalTimeZone: hasDSTInLocalTimeZone,
                    isEqualLocalTimeZone: function(timeZoneName) {
                        let date = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : new Date;
                        if (Intl) {
                            const localTimeZoneName = Intl.DateTimeFormat().resolvedOptions().timeZone;
                            if (localTimeZoneName === timeZoneName) {
                                return true
                            }
                        }
                        return isEqualLocalTimeZoneByDeclaration(timeZoneName, date)
                    },
                    isEqualLocalTimeZoneByDeclaration: isEqualLocalTimeZoneByDeclaration,
                    setOffsetsToDate: (targetDate, offsetsArray) => {
                        const newDateMs = offsetsArray.reduce(((result, offset) => result + offset), targetDate.getTime());
                        return new Date(newDateMs)
                    },
                    addOffsetsWithoutDST: function(date) {
                        for (var _len = arguments.length, offsets = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
                            offsets[_key - 1] = arguments[_key]
                        }
                        const newDate = _date.dateUtilsTs.addOffsets(date, offsets);
                        const daylightShift = getDaylightOffsetInMs(date, newDate);
                        if (!daylightShift) {
                            return newDate
                        }
                        const correctLocalDate = _date.dateUtilsTs.addOffsets(newDate, [-daylightShift]);
                        const daylightSecondShift = getDaylightOffsetInMs(newDate, correctLocalDate);
                        return !daylightSecondShift ? correctLocalDate : newDate
                    },
                    getTimeZones: function() {
                        let date = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : new Date;
                        let timeZones = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : _timezone_list.default.value;
                        return timeZones.map((timezoneId => ({
                            id: timezoneId,
                            title: getTimezoneTitle(timezoneId, date),
                            offset: calculateTimezoneByValue(timezoneId, date)
                        })))
                    },
                    getTimeZonesCache: () => timeZoneDataCache,
                    cacheTimeZones: async function() {
                        let date = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : new Date;
                        if (timeZoneDataCachePromise) {
                            return timeZoneDataCachePromise
                        }
                        timeZoneDataCachePromise = _index.macroTaskArray.map(_timezone_list.default.value, (timezoneId => ({
                            id: timezoneId,
                            title: getTimezoneTitle(timezoneId, date)
                        })), 10);
                        timeZoneDataCache = await timeZoneDataCachePromise;
                        return timeZoneDataCache
                    }
                };
                exports.default = utils
            },
        73862:
            /*!******************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/timezones/m_utils_timezones_data.js ***!
              \******************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _math = __webpack_require__( /*! ../../../core/utils/math */ 50254);
                var _config = (e = __webpack_require__( /*! ../../../core/config */ 66636), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                const parseTimezone = timeZoneConfig => {
                    const {
                        offsets: offsets
                    } = timeZoneConfig;
                    const {
                        offsetIndices: offsetIndices
                    } = timeZoneConfig;
                    const {
                        untils: untils
                    } = timeZoneConfig;
                    const offsetList = offsets.split("|").map((value => parseInt(value)));
                    const offsetIndexList = offsetIndices.split("").map((value => parseInt(value)));
                    const dateList = (value = untils, value.split("|").map((until => {
                        if ("Infinity" === until) {
                            return null
                        }
                        return 1e3 * parseInt(until, 36)
                    }))).map((accumulator = 0, value => accumulator += value));
                    var accumulator;
                    var value;
                    return {
                        offsetList: offsetList,
                        offsetIndexList: offsetIndexList,
                        dateList: dateList
                    }
                };
                const tzCache = new class {
                    constructor() {
                        this.map = new Map
                    }
                    tryGet(id) {
                        if (!this.map.get(id)) {
                            const config = timeZoneDataUtils.getTimezoneById(id);
                            if (!config) {
                                return false
                            }
                            const timeZoneInfo = parseTimezone(config);
                            this.map.set(id, timeZoneInfo)
                        }
                        return this.map.get(id)
                    }
                };
                const timeZoneDataUtils = {
                    _tzCache: tzCache,
                    getTimeZonesOld: () => (0, _config.default)().timezones ?? [],
                    formatOffset(offset) {
                        const hours = Math.floor(offset);
                        const minutesInDecimal = offset - hours;
                        const signString = (0, _math.sign)(offset) >= 0 ? "+" : "-";
                        const hoursString = `0${Math.abs(hours)}`.slice(-2);
                        const minutesString = minutesInDecimal > 0 ? ":" + 60 * minutesInDecimal : ":00";
                        return signString + hoursString + minutesString
                    },
                    formatId: id => id.split("/").join(" - ").split("_").join(" "),
                    getTimezoneById(id) {
                        if (!id) {
                            return
                        }
                        const tzList = this.getTimeZonesOld();
                        for (let i = 0; i < tzList.length; i++) {
                            const currentId = tzList[i].id;
                            if (currentId === id) {
                                return tzList[i]
                            }
                        }
                        return
                    },
                    getTimeZoneOffsetById(id, timestamp) {
                        const timeZoneInfo = tzCache.tryGet(id);
                        return timeZoneInfo ? this.getUtcOffset(timeZoneInfo, timestamp) : void 0
                    },
                    getTimeZoneDeclarationTuple(id, year) {
                        const timeZoneInfo = tzCache.tryGet(id);
                        return timeZoneInfo ? this.getTimeZoneDeclarationTupleCore(timeZoneInfo, year) : []
                    },
                    getTimeZoneDeclarationTupleCore(timeZoneInfo, year) {
                        const {
                            offsetList: offsetList
                        } = timeZoneInfo;
                        const {
                            offsetIndexList: offsetIndexList
                        } = timeZoneInfo;
                        const {
                            dateList: dateList
                        } = timeZoneInfo;
                        const tupleResult = [];
                        for (let i = 0; i < dateList.length; i++) {
                            const currentDate = dateList[i];
                            const currentYear = new Date(currentDate).getFullYear();
                            if (currentYear === year) {
                                const offset = offsetList[offsetIndexList[i + 1]];
                                tupleResult.push({
                                    date: currentDate,
                                    offset: -offset / 60
                                })
                            }
                            if (currentYear > year) {
                                break
                            }
                        }
                        return tupleResult
                    },
                    getUtcOffset(timeZoneInfo, dateTimeStamp) {
                        const {
                            offsetList: offsetList
                        } = timeZoneInfo;
                        const {
                            offsetIndexList: offsetIndexList
                        } = timeZoneInfo;
                        const {
                            dateList: dateList
                        } = timeZoneInfo;
                        const lastIntervalStartIndex = dateList.length - 1 - 1;
                        let index = lastIntervalStartIndex;
                        while (index >= 0 && dateTimeStamp < dateList[index]) {
                            index--
                        }
                        const offset = offsetList[offsetIndexList[index + 1]];
                        return -offset / 60 || offset
                    }
                };
                exports.default = timeZoneDataUtils
            },
        95053:
            /*!*********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/timezones/timezone_list.js ***!
              \*********************************************************************************************/
            function(__unused_webpack_module, exports) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                exports.default = {
                    value: ["Etc/GMT+12", "Etc/GMT+11", "Pacific/Midway", "Pacific/Niue", "Pacific/Pago_Pago", "Pacific/Samoa", "US/Samoa", "Etc/GMT+10", "HST", "Pacific/Honolulu", "Pacific/Johnston", "Pacific/Rarotonga", "Pacific/Tahiti", "US/Hawaii", "Pacific/Marquesas", "America/Adak", "America/Atka", "Etc/GMT+9", "Pacific/Gambier", "US/Aleutian", "America/Anchorage", "America/Juneau", "America/Metlakatla", "America/Nome", "America/Sitka", "America/Yakutat", "Etc/GMT+8", "Pacific/Pitcairn", "US/Alaska", "America/Creston", "America/Dawson_Creek", "America/Dawson", "America/Ensenada", "America/Fort_Nelson", "America/Hermosillo", "America/Los_Angeles", "America/Phoenix", "America/Santa_Isabel", "America/Tijuana", "America/Vancouver", "America/Whitehorse", "Canada/Pacific", "Canada/Yukon", "Etc/GMT+7", "Mexico/BajaNorte", "MST", "PST8PDT", "US/Arizona", "US/Pacific", "America/Belize", "America/Boise", "America/Cambridge_Bay", "America/Chihuahua", "America/Costa_Rica", "America/Denver", "America/Edmonton", "America/El_Salvador", "America/Guatemala", "America/Inuvik", "America/Managua", "America/Mazatlan", "America/Monterrey", "America/Ojinaga", "America/Regina", "America/Shiprock", "America/Swift_Current", "America/Tegucigalpa", "America/Yellowknife", "Canada/Mountain", "Canada/Saskatchewan", "Chile/EasterIsland", "Etc/GMT+6", "Mexico/BajaSur", "MST7MDT", "Navajo", "Pacific/Easter", "Pacific/Galapagos", "US/Mountain", "America/Atikokan", "America/Bahia_Banderas", "America/Bogota", "America/Cancun", "America/Cayman", "America/Chicago", "America/Coral_Harbour", "America/Eirunepe", "America/Guayaquil", "America/Indiana/Knox", "America/Indiana/Tell_City", "America/Jamaica", "America/Knox_IN", "America/Lima", "America/Matamoros", "America/Menominee", "America/Merida", "America/Mexico_City", "America/North_Dakota/Beulah", "America/North_Dakota/Center", "America/North_Dakota/New_Salem", "America/Panama", "America/Porto_Acre", "America/Rainy_River", "America/Rankin_Inlet", "America/Resolute", "America/Rio_Branco", "America/Winnipeg", "Brazil/Acre", "Canada/Central", "CST6CDT", "EST", "Etc/GMT+5", "Jamaica", "Mexico/General", "US/Central", "US/Indiana-Starke", "America/Anguilla", "America/Antigua", "America/Aruba", "America/Asuncion", "America/Barbados", "America/Blanc-Sablon", "America/Boa_Vista", "America/Campo_Grande", "America/Caracas", "America/Cuiaba", "America/Curacao", "America/Detroit", "America/Dominica", "America/Fort_Wayne", "America/Grand_Turk", "America/Grenada", "America/Guadeloupe", "America/Guyana", "America/Havana", "America/Indiana/Indianapolis", "America/Indiana/Marengo", "America/Indiana/Petersburg", "America/Indiana/Vevay", "America/Indiana/Vincennes", "America/Indiana/Winamac", "America/Indianapolis", "America/Iqaluit", "America/Kentucky/Louisville", "America/Kentucky/Monticello", "America/Kralendijk", "America/La_Paz", "America/Louisville", "America/Lower_Princes", "America/Manaus", "America/Marigot", "America/Martinique", "America/Montreal", "America/Montserrat", "America/Nassau", "America/New_York", "America/Nipigon", "America/Pangnirtung", "America/Port_of_Spain", "America/Port-au-Prince", "America/Porto_Velho", "America/Puerto_Rico", "America/Santiago", "America/Santo_Domingo", "America/St_Barthelemy", "America/St_Kitts", "America/St_Lucia", "America/St_Thomas", "America/St_Vincent", "America/Thunder_Bay", "America/Toronto", "America/Tortola", "America/Virgin", "Brazil/West", "Canada/Eastern", "Chile/Continental", "Cuba", "EST5EDT", "Etc/GMT+4", "US/East-Indiana", "US/Eastern", "US/Michigan", "America/Araguaina", "America/Argentina/Buenos_Aires", "America/Argentina/Catamarca", "America/Argentina/ComodRivadavia", "America/Argentina/Cordoba", "America/Argentina/Jujuy", "America/Argentina/La_Rioja", "America/Argentina/Mendoza", "America/Argentina/Rio_Gallegos", "America/Argentina/Salta", "America/Argentina/San_Juan", "America/Argentina/San_Luis", "America/Argentina/Tucuman", "America/Argentina/Ushuaia", "America/Bahia", "America/Belem", "America/Buenos_Aires", "America/Catamarca", "America/Cayenne", "America/Cordoba", "America/Fortaleza", "America/Glace_Bay", "America/Goose_Bay", "America/Halifax", "America/Jujuy", "America/Maceio", "America/Mendoza", "America/Moncton", "America/Montevideo", "America/Paramaribo", "America/Punta_Arenas", "America/Recife", "America/Rosario", "America/Santarem", "America/Sao_Paulo", "America/Thule", "Antarctica/Palmer", "Antarctica/Rothera", "Atlantic/Bermuda", "Atlantic/Stanley", "Brazil/East", "Canada/Atlantic", "Etc/GMT+3", "America/St_Johns", "Canada/Newfoundland", "America/Godthab", "America/Miquelon", "America/Noronha", "America/Nuuk", "Atlantic/South_Georgia", "Brazil/DeNoronha", "Etc/GMT+2", "Atlantic/Cape_Verde", "Etc/GMT+1", "Africa/Abidjan", "Africa/Accra", "Africa/Bamako", "Africa/Banjul", "Africa/Bissau", "Africa/Conakry", "Africa/Dakar", "Africa/Freetown", "Africa/Lome", "Africa/Monrovia", "Africa/Nouakchott", "Africa/Ouagadougou", "Africa/Sao_Tome", "Africa/Timbuktu", "America/Danmarkshavn", "America/Scoresbysund", "Atlantic/Azores", "Atlantic/Reykjavik", "Atlantic/St_Helena", "Etc/GMT-0", "Etc/GMT", "Etc/GMT+0", "Etc/GMT0", "Etc/Greenwich", "Etc/UCT", "Etc/Universal", "Etc/UTC", "Etc/Zulu", "GMT-0", "GMT", "GMT+0", "GMT0", "Greenwich", "Iceland", "UCT", "Universal", "UTC", "Zulu", "Africa/Algiers", "Africa/Bangui", "Africa/Brazzaville", "Africa/Casablanca", "Africa/Douala", "Africa/El_Aaiun", "Africa/Kinshasa", "Africa/Lagos", "Africa/Libreville", "Africa/Luanda", "Africa/Malabo", "Africa/Ndjamena", "Africa/Niamey", "Africa/Porto-Novo", "Africa/Tunis", "Atlantic/Canary", "Atlantic/Faeroe", "Atlantic/Faroe", "Atlantic/Madeira", "Eire", "Etc/GMT-1", "Europe/Belfast", "Europe/Dublin", "Europe/Guernsey", "Europe/Isle_of_Man", "Europe/Jersey", "Europe/Lisbon", "Europe/London", "GB-Eire", "GB", "Portugal", "WET", "Africa/Blantyre", "Africa/Bujumbura", "Africa/Cairo", "Africa/Ceuta", "Africa/Gaborone", "Africa/Harare", "Africa/Johannesburg", "Africa/Khartoum", "Africa/Kigali", "Africa/Lubumbashi", "Africa/Lusaka", "Africa/Maputo", "Africa/Maseru", "Africa/Mbabane", "Africa/Tripoli", "Africa/Windhoek", "Antarctica/Troll", "Arctic/Longyearbyen", "Atlantic/Jan_Mayen", "CET", "Egypt", "Etc/GMT-2", "Europe/Amsterdam", "Europe/Andorra", "Europe/Belgrade", "Europe/Berlin", "Europe/Bratislava", "Europe/Brussels", "Europe/Budapest", "Europe/Busingen", "Europe/Copenhagen", "Europe/Gibraltar", "Europe/Kaliningrad", "Europe/Ljubljana", "Europe/Luxembourg", "Europe/Madrid", "Europe/Malta", "Europe/Monaco", "Europe/Oslo", "Europe/Paris", "Europe/Podgorica", "Europe/Prague", "Europe/Rome", "Europe/San_Marino", "Europe/Sarajevo", "Europe/Skopje", "Europe/Stockholm", "Europe/Tirane", "Europe/Vaduz", "Europe/Vatican", "Europe/Vienna", "Europe/Warsaw", "Europe/Zagreb", "Europe/Zurich", "Libya", "MET", "Poland", "Africa/Addis_Ababa", "Africa/Asmara", "Africa/Asmera", "Africa/Dar_es_Salaam", "Africa/Djibouti", "Africa/Juba", "Africa/Kampala", "Africa/Mogadishu", "Africa/Nairobi", "Antarctica/Syowa", "Asia/Aden", "Asia/Amman", "Asia/Baghdad", "Asia/Bahrain", "Asia/Beirut", "Asia/Damascus", "Asia/Famagusta", "Asia/Gaza", "Asia/Hebron", "Asia/Istanbul", "Asia/Jerusalem", "Asia/Kuwait", "Asia/Nicosia", "Asia/Qatar", "Asia/Riyadh", "Asia/Tel_Aviv", "EET", "Etc/GMT-3", "Europe/Athens", "Europe/Bucharest", "Europe/Chisinau", "Europe/Helsinki", "Europe/Istanbul", "Europe/Kiev", "Europe/Kirov", "Europe/Mariehamn", "Europe/Minsk", "Europe/Moscow", "Europe/Nicosia", "Europe/Riga", "Europe/Simferopol", "Europe/Sofia", "Europe/Tallinn", "Europe/Tiraspol", "Europe/Uzhgorod", "Europe/Vilnius", "Europe/Zaporozhye", "Indian/Antananarivo", "Indian/Comoro", "Indian/Mayotte", "Israel", "Turkey", "W-SU", "Asia/Baku", "Asia/Dubai", "Asia/Muscat", "Asia/Tbilisi", "Asia/Yerevan", "Etc/GMT-4", "Europe/Astrakhan", "Europe/Samara", "Europe/Saratov", "Europe/Ulyanovsk", "Europe/Volgograd", "Indian/Mahe", "Indian/Mauritius", "Indian/Reunion", "Asia/Kabul", "Asia/Tehran", "Iran", "Antarctica/Mawson", "Asia/Aqtau", "Asia/Aqtobe", "Asia/Ashgabat", "Asia/Ashkhabad", "Asia/Atyrau", "Asia/Dushanbe", "Asia/Karachi", "Asia/Oral", "Asia/Qyzylorda", "Asia/Samarkand", "Asia/Tashkent", "Asia/Yekaterinburg", "Etc/GMT-5", "Indian/Kerguelen", "Indian/Maldives", "Asia/Calcutta", "Asia/Colombo", "Asia/Kolkata", "Asia/Kathmandu", "Asia/Katmandu", "Antarctica/Vostok", "Asia/Almaty", "Asia/Bishkek", "Asia/Dacca", "Asia/Dhaka", "Asia/Kashgar", "Asia/Omsk", "Asia/Qostanay", "Asia/Thimbu", "Asia/Thimphu", "Asia/Urumqi", "Etc/GMT-6", "Indian/Chagos", "Asia/Rangoon", "Asia/Yangon", "Indian/Cocos", "Antarctica/Davis", "Asia/Bangkok", "Asia/Barnaul", "Asia/Ho_Chi_Minh", "Asia/Hovd", "Asia/Jakarta", "Asia/Krasnoyarsk", "Asia/Novokuznetsk", "Asia/Novosibirsk", "Asia/Phnom_Penh", "Asia/Pontianak", "Asia/Saigon", "Asia/Tomsk", "Asia/Vientiane", "Etc/GMT-7", "Indian/Christmas", "Antarctica/Casey", "Asia/Brunei", "Asia/Choibalsan", "Asia/Chongqing", "Asia/Chungking", "Asia/Harbin", "Asia/Hong_Kong", "Asia/Irkutsk", "Asia/Kuala_Lumpur", "Asia/Kuching", "Asia/Macao", "Asia/Macau", "Asia/Makassar", "Asia/Manila", "Asia/Shanghai", "Asia/Singapore", "Asia/Taipei", "Asia/Ujung_Pandang", "Asia/Ulaanbaatar", "Asia/Ulan_Bator", "Australia/Perth", "Australia/West", "Etc/GMT-8", "Hongkong", "PRC", "ROC", "Singapore", "Australia/Eucla", "Asia/Chita", "Asia/Dili", "Asia/Jayapura", "Asia/Khandyga", "Asia/Pyongyang", "Asia/Seoul", "Asia/Tokyo", "Asia/Yakutsk", "Etc/GMT-9", "Japan", "Pacific/Palau", "ROK", "Australia/Adelaide", "Australia/Broken_Hill", "Australia/Darwin", "Australia/North", "Australia/South", "Australia/Yancowinna", "Antarctica/DumontDUrville", "Asia/Ust-Nera", "Asia/Vladivostok", "Australia/ACT", "Australia/Brisbane", "Australia/Canberra", "Australia/Currie", "Australia/Hobart", "Australia/Lindeman", "Australia/Melbourne", "Australia/NSW", "Australia/Queensland", "Australia/Sydney", "Australia/Tasmania", "Australia/Victoria", "Etc/GMT-10", "Pacific/Chuuk", "Pacific/Guam", "Pacific/Port_Moresby", "Pacific/Saipan", "Pacific/Truk", "Pacific/Yap", "Australia/LHI", "Australia/Lord_Howe", "Antarctica/Macquarie", "Asia/Magadan", "Asia/Sakhalin", "Asia/Srednekolymsk", "Etc/GMT-11", "Pacific/Bougainville", "Pacific/Efate", "Pacific/Guadalcanal", "Pacific/Kosrae", "Pacific/Norfolk", "Pacific/Noumea", "Pacific/Pohnpei", "Pacific/Ponape", "Antarctica/McMurdo", "Antarctica/South_Pole", "Asia/Anadyr", "Asia/Kamchatka", "Etc/GMT-12", "Kwajalein", "NZ", "Pacific/Auckland", "Pacific/Fiji", "Pacific/Funafuti", "Pacific/Kwajalein", "Pacific/Majuro", "Pacific/Nauru", "Pacific/Tarawa", "Pacific/Wake", "Pacific/Wallis", "NZ-CHAT", "Pacific/Chatham", "Etc/GMT-13", "Pacific/Apia", "Pacific/Enderbury", "Pacific/Fakaofo", "Pacific/Tongatapu", "Etc/GMT-14", "Pacific/Kiritimati"]
                }
            },
        80356:
            /*!*********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/utils/index.js ***!
              \*********************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                Object.defineProperty(exports, "macroTaskArray", {
                    enumerable: true,
                    get: function() {
                        return _index.default
                    }
                });
                var _index = (e = __webpack_require__( /*! ./macro_task_array/index */ 4203), e && e.__esModule ? e : {
                    default: e
                });
                var e
            },
        8710:
            /*!*******************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/utils/macro_task_array/dispatcher.js ***!
              \*******************************************************************************************************/
            function(__unused_webpack_module, exports) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.macroTaskIdSet = exports.default = void 0;
                const macroTaskIdSet = exports.macroTaskIdSet = new Set;
                exports.default = {
                    schedule: async (callback, macroTaskTimeoutMs) => new Promise((resolve => {
                        const taskId = setTimeout((() => {
                            callback();
                            macroTaskIdSet.delete(taskId);
                            resolve()
                        }), macroTaskTimeoutMs);
                        macroTaskIdSet.add(taskId)
                    })),
                    dispose: () => {
                        Array.from(macroTaskIdSet).forEach((id => {
                            clearTimeout(id);
                            macroTaskIdSet.delete(id)
                        }))
                    }
                }
            },
        4203:
            /*!**************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/utils/macro_task_array/index.js ***!
              \**************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _dispatcher = (e = __webpack_require__( /*! ./dispatcher */ 8710), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                var _methods = __webpack_require__( /*! ./methods */ 57);
                exports.default = {
                    forEach: _methods.macroTaskArrayForEach,
                    map: _methods.macroTaskArrayMap,
                    dispose: _dispatcher.default.dispose
                }
            },
        57:
            /*!****************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/utils/macro_task_array/methods.js ***!
              \****************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.macroTaskArrayMap = exports.macroTaskArrayForEach = exports.DEFAULT_STEPS_VALUE = exports.DEFAULT_MACRO_TASK_TIMEOUT = void 0;
                var _dispatcher = (e = __webpack_require__( /*! ./dispatcher */ 8710), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                const DEFAULT_STEPS_VALUE = exports.DEFAULT_STEPS_VALUE = 100;
                const DEFAULT_MACRO_TASK_TIMEOUT = exports.DEFAULT_MACRO_TASK_TIMEOUT = 0;
                const macroTaskArrayForEach = async function(array, callback) {
                    let step = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : DEFAULT_STEPS_VALUE;
                    let macroTaskTimeoutMs = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : DEFAULT_MACRO_TASK_TIMEOUT;
                    const promises = [];
                    const batchesCount = Math.ceil(array.length / step);
                    for (let batchIdx = 0; batchIdx < batchesCount; batchIdx += 1) {
                        const scheduledTask = _dispatcher.default.schedule((() => {
                            const startIdx = batchIdx * step;
                            const maxIdx = startIdx + step;
                            for (let idx = startIdx; idx < maxIdx && void 0 !== array[idx]; idx += 1) {
                                callback(array[idx])
                            }
                        }), macroTaskTimeoutMs);
                        promises.push(scheduledTask)
                    }
                    await Promise.all(promises)
                };
                exports.macroTaskArrayForEach = macroTaskArrayForEach;
                exports.macroTaskArrayMap = async function(array, callback) {
                    let step = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : DEFAULT_STEPS_VALUE;
                    let macroTaskTimeoutMs = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : DEFAULT_MACRO_TASK_TIMEOUT;
                    const result = [];
                    await macroTaskArrayForEach(array, (item => {
                        result.push(callback(item))
                    }), step, macroTaskTimeoutMs);
                    return result
                }
            },
        5285:
            /*!*******************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/ui/collection/m_data_controller.js ***!
              \*******************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781);
                var _deferred = __webpack_require__( /*! ../../../core/utils/deferred */ 87739);
                const DataControllerMock = {
                    load: () => (0, _deferred.Deferred)().reject(),
                    loadSingle: () => (0, _deferred.Deferred)().reject(),
                    loadFromStore: () => (0, _deferred.Deferred)().reject(),
                    loadNextPage: () => (0, _deferred.Deferred)().reject(),
                    loadOptions: _common.noop,
                    userData: _common.noop,
                    cancel: _common.noop,
                    cancelAll: _common.noop,
                    filter: _common.noop,
                    addSearchFilter: _common.noop,
                    group: _common.noop,
                    paginate: _common.noop,
                    pageSize: _common.noop,
                    pageIndex: _common.noop,
                    resetDataSourcePageIndex: _common.noop,
                    totalCount: _common.noop,
                    isLastPage: _common.noop,
                    isLoading: _common.noop,
                    isLoaded: _common.noop,
                    searchValue: _common.noop,
                    searchOperation: _common.noop,
                    searchExpr: _common.noop,
                    select: _common.noop,
                    key: _common.noop,
                    keyOf: _common.noop,
                    store: _common.noop,
                    items: _common.noop,
                    applyMapFunction: _common.noop,
                    getDataSource: _common.noop,
                    reload: _common.noop,
                    on: _common.noop,
                    off: _common.noop
                };
                exports.default = class {
                    constructor(dataSource) {
                        if (!dataSource) {
                            return DataControllerMock
                        }
                        this._dataSource = dataSource
                    }
                    load() {
                        return this._dataSource.load()
                    }
                    loadSingle(propName, propValue) {
                        if (arguments.length < 2) {
                            propValue = propName;
                            propName = this.key()
                        }
                        return this._dataSource.loadSingle(propName, propValue)
                    }
                    loadFromStore(loadOptions) {
                        return this.store().load(loadOptions)
                    }
                    loadNextPage() {
                        this.pageIndex(1 + this.pageIndex());
                        return this.load()
                    }
                    loadOptions() {
                        return this._dataSource.loadOptions()
                    }
                    userData() {
                        return this._dataSource._userData
                    }
                    cancel(operationId) {
                        this._dataSource.cancel(operationId)
                    }
                    cancelAll() {
                        this._dataSource.cancelAll()
                    }
                    filter(filter) {
                        return this._dataSource.filter(filter)
                    }
                    addSearchFilter(storeLoadOptions) {
                        this._dataSource._addSearchFilter(storeLoadOptions)
                    }
                    group(group) {
                        return this._dataSource.group(group)
                    }
                    paginate() {
                        return this._dataSource.paginate()
                    }
                    pageSize() {
                        return this._dataSource._pageSize
                    }
                    pageIndex(pageIndex) {
                        return this._dataSource.pageIndex(pageIndex)
                    }
                    resetDataSourcePageIndex() {
                        if (this.pageIndex()) {
                            this.pageIndex(0);
                            this.load()
                        }
                    }
                    totalCount() {
                        return this._dataSource.totalCount()
                    }
                    isLastPage() {
                        return this._dataSource.isLastPage() || !this._dataSource._pageSize
                    }
                    isLoading() {
                        return this._dataSource.isLoading()
                    }
                    isLoaded() {
                        return this._dataSource.isLoaded()
                    }
                    searchValue(value) {
                        if (!arguments.length) {
                            return this._dataSource.searchValue()
                        }
                        return this._dataSource.searchValue(value)
                    }
                    searchOperation(operation) {
                        return this._dataSource.searchOperation(operation)
                    }
                    searchExpr(expr) {
                        if (!arguments.length) {
                            return this._dataSource.searchExpr()
                        }
                        return this._dataSource.searchExpr(expr)
                    }
                    select() {
                        return this._dataSource.select(...arguments)
                    }
                    key() {
                        return this._dataSource.key()
                    }
                    keyOf(item) {
                        return this.store().keyOf(item)
                    }
                    store() {
                        return this._dataSource.store()
                    }
                    items() {
                        return this._dataSource.items()
                    }
                    applyMapFunction(data) {
                        return this._dataSource._applyMapFunction(data)
                    }
                    getDataSource() {
                        return this._dataSource || null
                    }
                    reload() {
                        return this._dataSource.reload()
                    }
                    on(event, handler) {
                        this._dataSource.on(event, handler)
                    }
                    off(event, handler) {
                        this._dataSource.off(event, handler)
                    }
                }
            },
        24768:
            /*!****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/ui/editor/editor.js ***!
              \****************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774));
                var _index = __webpack_require__( /*! ../../../common/core/events/utils/index */ 98834);
                var _element_data = __webpack_require__( /*! ../../../core/element_data */ 74663);
                var _guid = _interopRequireDefault(__webpack_require__( /*! ../../../core/guid */ 19427));
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553));
                var _callbacks = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/callbacks */ 84718));
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576);
                var _window = __webpack_require__( /*! ../../../core/utils/window */ 3104);
                var _validation_engine = _interopRequireDefault(__webpack_require__( /*! ../../../ui/validation_engine */ 19391));
                var _validation_message = _interopRequireDefault(__webpack_require__( /*! ../../../ui/validation_message */ 59098));
                var _widget = _interopRequireDefault(__webpack_require__( /*! ../../core/widget/widget */ 89275));
                var _m_dom = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/m_dom */ 76400));

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }

                function _extends() {
                    return _extends = Object.assign ? Object.assign.bind() : function(n) {
                        for (var e = 1; e < arguments.length; e++) {
                            var t = arguments[e];
                            for (var r in t) {
                                ({}).hasOwnProperty.call(t, r) && (n[r] = t[r])
                            }
                        }
                        return n
                    }, _extends.apply(null, arguments)
                }
                const ALLOWED_STYLING_MODES = ["outlined", "filled", "underlined"];
                const VALIDATION_MESSAGE_KEYS_MAP = {
                    validationMessageMode: "mode",
                    validationMessagePosition: "positionSide",
                    validationMessageOffset: "offset",
                    validationBoundary: "boundary"
                };
                class Editor extends _widget.default {
                    ctor(element, options) {
                        this.showValidationMessageTimeout = void 0;
                        this.validationRequest = (0, _callbacks.default)();
                        super.ctor(element, options)
                    }
                    _createElement(element) {
                        super._createElement(element);
                        const $element = this.$element();
                        if ($element) {
                            (0, _element_data.data)($element[0], "dx-validation-target", this)
                        }
                    }
                    _initOptions(options) {
                        super._initOptions(options);
                        this.option(_validation_engine.default.initValidationOptions(options))
                    }
                    _init() {
                        this._initialValue = this.option("value");
                        super._init();
                        const {
                            validationTooltipOptions: validationTooltipOptions
                        } = this.option();
                        this._options.cache("validationTooltipOptions", validationTooltipOptions);
                        const $element = this.$element();
                        $element.addClass("dx-show-invalid-badge")
                    }
                    _getDefaultOptions() {
                        return _extends({}, super._getDefaultOptions(), {
                            value: null,
                            name: "",
                            onValueChanged: null,
                            readOnly: false,
                            isValid: true,
                            validationError: null,
                            validationErrors: null,
                            validationStatus: "valid",
                            validationMessageMode: "auto",
                            validationMessagePosition: "bottom",
                            validationBoundary: void 0,
                            validationMessageOffset: {
                                h: 0,
                                v: 0
                            },
                            validationTooltipOptions: {},
                            _showValidationMessage: true,
                            isDirty: false
                        })
                    }
                    _shouldAttachKeyboardEvents() {
                        const {
                            readOnly: readOnly
                        } = this.option();
                        return !readOnly
                    }
                    _attachKeyboardEvents() {
                        if (this._shouldAttachKeyboardEvents()) {
                            super._attachKeyboardEvents()
                        }
                    }
                    _setOptionsByReference() {
                        super._setOptionsByReference();
                        (0, _extend.extend)(this._optionsByReference, {
                            validationError: true
                        })
                    }
                    _createValueChangeAction() {
                        this._valueChangeAction = this._createActionByOption("onValueChanged", {
                            excludeValidators: ["disabled", "readOnly"]
                        })
                    }
                    _suppressValueChangeAction() {
                        this._valueChangeActionSuppressed = true
                    }
                    _resumeValueChangeAction() {
                        this._valueChangeActionSuppressed = false
                    }
                    _initMarkup() {
                        this._toggleReadOnlyState();
                        const {
                            name: name,
                            _onMarkupRendered: markupRendered
                        } = this.option();
                        this._setSubmitElementName(name);
                        super._initMarkup();
                        this._renderValidationState();
                        null === markupRendered || void 0 === markupRendered || markupRendered()
                    }
                    _raiseValueChangeAction(value, previousValue) {
                        if (!this._valueChangeAction) {
                            this._createValueChangeAction()
                        }
                        this._valueChangeAction(this._valueChangeArgs(value, previousValue))
                    }
                    _valueChangeArgs(value, previousValue) {
                        return {
                            value: value,
                            previousValue: previousValue,
                            event: this._valueChangeEventInstance
                        }
                    }
                    _saveValueChangeEvent(e) {
                        this._valueChangeEventInstance = e
                    }
                    _focusInHandler(e) {
                        const {
                            validationMessageMode: validationMessageMode
                        } = this.option();
                        const isValidationMessageShownOnFocus = "auto" === validationMessageMode;
                        if (this._canValueBeChangedByClick() && isValidationMessageShownOnFocus) {
                            var _this$_validationMess;
                            const $validationMessageWrapper = null === (_this$_validationMess = this._validationMessage) || void 0 === _this$_validationMess ? void 0 : _this$_validationMess.$wrapper();
                            null === $validationMessageWrapper || void 0 === $validationMessageWrapper || $validationMessageWrapper.removeClass("dx-invalid-message-auto");
                            clearTimeout(this.showValidationMessageTimeout);
                            this.showValidationMessageTimeout = setTimeout((() => null === $validationMessageWrapper || void 0 === $validationMessageWrapper ? void 0 : $validationMessageWrapper.addClass("dx-invalid-message-auto")), 150)
                        }
                        super._focusInHandler(e)
                    }
                    _canValueBeChangedByClick() {
                        return false
                    }
                    _getStylingModePrefix() {
                        return "dx-editor-"
                    }
                    _renderStylingMode() {
                        const {
                            stylingMode: stylingMode
                        } = this.option();
                        const prefix = this._getStylingModePrefix();
                        const allowedStylingClasses = ALLOWED_STYLING_MODES.map((mode => prefix + mode));
                        allowedStylingClasses.forEach((className => this.$element().removeClass(className)));
                        let stylingModeClass = prefix + String(stylingMode);
                        if (!allowedStylingClasses.includes(stylingModeClass)) {
                            const optionName = "stylingMode";
                            const defaultOptionValue = this._getDefaultOptions()[optionName];
                            const platformOptionValue = this._convertRulesToOptions(this._defaultOptionsRules())[optionName];
                            stylingModeClass = prefix + (platformOptionValue ?? defaultOptionValue)
                        }
                        this.$element().addClass(stylingModeClass)
                    }
                    _getValidationErrors() {
                        let {
                            validationErrors: validationErrors
                        } = this.option();
                        const {
                            validationError: validationError
                        } = this.option();
                        if (!validationErrors && validationError) {
                            validationErrors = [validationError]
                        }
                        return validationErrors
                    }
                    _disposeValidationMessage() {
                        if (this._$validationMessage) {
                            this._$validationMessage.remove();
                            this.setAria("describedby", null);
                            this._$validationMessage = void 0;
                            this._validationMessage = void 0
                        }
                    }
                    _toggleValidationClasses(isInvalid) {
                        this.$element().toggleClass("dx-invalid", isInvalid);
                        this.setAria("invalid", isInvalid || void 0)
                    }
                    _renderValidationState() {
                        const {
                            validationStatus: validationStatus,
                            _showValidationMessage: showValidationMessage
                        } = this.option();
                        const isValid = this.option("isValid") && "invalid" !== validationStatus;
                        const validationErrors = this._getValidationErrors();
                        const $element = this.$element();
                        this._toggleValidationClasses(!isValid);
                        if (!(0, _window.hasWindow)() || !showValidationMessage) {
                            return
                        }
                        this._disposeValidationMessage();
                        if (!isValid && validationErrors) {
                            const {
                                validationMessageMode: validationMessageMode,
                                validationMessageOffset: validationMessageOffset,
                                validationBoundary: validationBoundary,
                                rtlEnabled: rtlEnabled
                            } = this.option();
                            this._$validationMessage = (0, _renderer.default)("<div>").appendTo($element);
                            const validationMessageContentId = `dx-${new _guid.default}`;
                            this.setAria("describedby", validationMessageContentId);
                            this._validationMessage = new _validation_message.default(this._$validationMessage, (0, _extend.extend)({
                                validationErrors: validationErrors,
                                rtlEnabled: rtlEnabled,
                                target: this._getValidationMessageTarget(),
                                visualContainer: $element,
                                mode: validationMessageMode,
                                positionSide: this._getValidationMessagePosition(),
                                offset: validationMessageOffset,
                                boundary: validationBoundary,
                                contentId: validationMessageContentId
                            }, this._options.cache("validationTooltipOptions")));
                            this._bindInnerWidgetOptions(this._validationMessage, "validationTooltipOptions")
                        }
                    }
                    _getValidationMessagePosition() {
                        const {
                            validationMessagePosition: validationMessagePosition
                        } = this.option();
                        return validationMessagePosition
                    }
                    _getValidationMessageTarget() {
                        return this.$element()
                    }
                    _toggleReadOnlyState() {
                        const {
                            readOnly: readOnly
                        } = this.option();
                        this._toggleBackspaceHandler(readOnly);
                        this.$element().toggleClass("dx-state-readonly", !!readOnly);
                        this._setAriaReadonly(readOnly)
                    }
                    _setAriaReadonly(readOnly) {
                        this.setAria("readonly", readOnly || void 0)
                    }
                    _toggleBackspaceHandler(isReadOnly) {
                        const $eventTarget = this._keyboardEventBindingTarget();
                        const eventName = (0, _index.addNamespace)("keydown", "editorReadOnly");
                        _events_engine.default.off($eventTarget, eventName);
                        if (isReadOnly) {
                            _events_engine.default.on($eventTarget, eventName, (e => {
                                if ("backspace" === (0, _index.normalizeKeyName)(e)) {
                                    e.preventDefault()
                                }
                            }))
                        }
                    }
                    _dispose() {
                        const element = this.$element()[0];
                        (0, _element_data.data)(element, "dx-validation-target", null);
                        clearTimeout(this.showValidationMessageTimeout);
                        this._disposeValidationMessage();
                        super._dispose()
                    }
                    _setSubmitElementName(name) {
                        const $submitElement = this._getSubmitElement();
                        if (!$submitElement) {
                            return
                        }
                        if (name && name.length > 0) {
                            $submitElement.attr("name", name)
                        } else {
                            $submitElement.removeAttr("name")
                        }
                    }
                    _getSubmitElement() {
                        return null
                    }
                    _setValidationMessageOption(_ref) {
                        var _this$_validationMess2;
                        let {
                            name: name,
                            value: value
                        } = _ref;
                        const optionKey = VALIDATION_MESSAGE_KEYS_MAP[String(name)] ? VALIDATION_MESSAGE_KEYS_MAP[String(name)] : name;
                        null === (_this$_validationMess2 = this._validationMessage) || void 0 === _this$_validationMess2 || _this$_validationMess2.option(optionKey, value)
                    }
                    _hasActiveElement() {
                        return false
                    }
                    _optionChanged(args) {
                        var _this$_validationMess3;
                        const {
                            name: name,
                            value: value,
                            previousValue: previousValue
                        } = args;
                        switch (name) {
                            case "onValueChanged":
                                this._createValueChangeAction();
                                break;
                            case "readOnly":
                                this._toggleReadOnlyState();
                                this._refreshFocusState();
                                break;
                            case "value":
                                if (value != previousValue) {
                                    this.option("isDirty", this._initialValue !== value);
                                    this.validationRequest.fire({
                                        value: value,
                                        editor: this
                                    })
                                }
                                if (!this._valueChangeActionSuppressed) {
                                    this._raiseValueChangeAction(value, previousValue);
                                    this._saveValueChangeEvent(void 0)
                                }
                                break;
                            case "width":
                                super._optionChanged(args);
                                null === (_this$_validationMess3 = this._validationMessage) || void 0 === _this$_validationMess3 || _this$_validationMess3.updateMaxWidth();
                                break;
                            case "name":
                                this._setSubmitElementName(value);
                                break;
                            case "isValid":
                            case "validationError":
                            case "validationErrors":
                            case "validationStatus":
                                this.option(_validation_engine.default.synchronizeValidationOptions(args, this.option()));
                                this._renderValidationState();
                                break;
                            case "validationBoundary":
                            case "validationMessageMode":
                            case "validationMessagePosition":
                            case "validationMessageOffset":
                                this._setValidationMessageOption(args);
                                break;
                            case "rtlEnabled":
                                this._setValidationMessageOption(args);
                                super._optionChanged(args);
                                break;
                            case "validationTooltipOptions":
                                this._innerWidgetOptionChanged(this._validationMessage, args);
                                break;
                            case "_showValidationMessage":
                            case "isDirty":
                                break;
                            default:
                                super._optionChanged(args)
                        }
                    }
                    _resetToInitialValue() {
                        this.option("value", this._initialValue)
                    }
                    blur() {
                        if (this._hasActiveElement()) {
                            _m_dom.default.resetActiveElement()
                        }
                    }
                    clear() {
                        const defaultOptions = this._getDefaultOptions();
                        this.option("value", defaultOptions.value)
                    }
                    reset() {
                        let value = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : void 0;
                        if (arguments.length) {
                            this._initialValue = value
                        }
                        this._resetToInitialValue();
                        this.option("isDirty", false);
                        this.option("isValid", true)
                    }
                }
                Editor.isEditor = instance => instance instanceof Editor;
                exports.default = Editor
            },
        52621:
            /*!*******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/ui/m_load_indicator.js ***!
              \*******************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = exports.LOADINDICATOR_WRAPPER_CLASS = exports.LOADINDICATOR_SEGMENT_INNER_CLASS = exports.LOADINDICATOR_SEGMENT_CLASS = exports.LOADINDICATOR_IMAGE_CLASS = exports.LOADINDICATOR_ICON_CLASS = exports.LOADINDICATOR_CONTENT_CLASS = exports.LOADINDICATOR_CLASS = exports.AnimationType = exports.ANIMATION_TYPE_CLASSES = void 0;
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../common/core/localization/message */ 4671));
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 92848));
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553));
                var _size = __webpack_require__( /*! ../../core/utils/size */ 57653);
                var _themes = __webpack_require__( /*! ../../ui/themes */ 52071);
                var _widget = _interopRequireDefault(__webpack_require__( /*! ../core/widget/widget */ 89275));
                var _m_support = _interopRequireDefault(__webpack_require__( /*! ../core/utils/m_support */ 85991));

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }

                function _extends() {
                    return _extends = Object.assign ? Object.assign.bind() : function(n) {
                        for (var e = 1; e < arguments.length; e++) {
                            var t = arguments[e];
                            for (var r in t) {
                                ({}).hasOwnProperty.call(t, r) && (n[r] = t[r])
                            }
                        }
                        return n
                    }, _extends.apply(null, arguments)
                }
                const LOADINDICATOR_CLASS = exports.LOADINDICATOR_CLASS = "dx-loadindicator";
                const LOADINDICATOR_WRAPPER_CLASS = exports.LOADINDICATOR_WRAPPER_CLASS = "dx-loadindicator-wrapper";
                const LOADINDICATOR_CONTENT_CLASS = exports.LOADINDICATOR_CONTENT_CLASS = "dx-loadindicator-content";
                const LOADINDICATOR_ICON_CLASS = exports.LOADINDICATOR_ICON_CLASS = "dx-loadindicator-icon";
                const LOADINDICATOR_SEGMENT_CLASS = exports.LOADINDICATOR_SEGMENT_CLASS = "dx-loadindicator-segment";
                const LOADINDICATOR_SEGMENT_INNER_CLASS = exports.LOADINDICATOR_SEGMENT_INNER_CLASS = "dx-loadindicator-segment-inner";
                const LOADINDICATOR_IMAGE_CLASS = exports.LOADINDICATOR_IMAGE_CLASS = "dx-loadindicator-image";
                var AnimationType;
                ! function(AnimationType) {
                    AnimationType.Circle = "circle";
                    AnimationType.Sparkle = "sparkle"
                }(AnimationType || (exports.AnimationType = AnimationType = {}));
                const ANIMATION_TYPE_CLASSES = exports.ANIMATION_TYPE_CLASSES = {
                    [AnimationType.Circle]: "dx-loadindicator-content-circle",
                    [AnimationType.Sparkle]: "dx-loadindicator-content-sparkle"
                };
                class LoadIndicator extends _widget.default {
                    _getDefaultOptions() {
                        return _extends({}, super._getDefaultOptions(), {
                            _animatingSegmentCount: 1,
                            _animatingSegmentInner: false,
                            _animationType: AnimationType.Circle,
                            activeStateEnabled: false,
                            hoverStateEnabled: false,
                            indicatorSrc: ""
                        })
                    }
                    _defaultOptionsRules() {
                        const themeName = (0, _themes.current)();
                        return super._defaultOptionsRules().concat([{
                            device: () => (0, _themes.isMaterialBased)(themeName),
                            options: {
                                _animatingSegmentCount: 2,
                                _animatingSegmentInner: true
                            }
                        }, {
                            device: () => (0, _themes.isGeneric)(themeName),
                            options: {
                                _animatingSegmentCount: 7
                            }
                        }])
                    }
                    _useTemplates() {
                        return false
                    }
                    _init() {
                        super._init();
                        this.$element().addClass(LOADINDICATOR_CLASS);
                        const label = _message.default.format("Loading");
                        const aria = {
                            role: "alert",
                            label: label
                        };
                        this.setAria(aria)
                    }
                    _initMarkup() {
                        super._initMarkup();
                        this._renderWrapper();
                        this._renderIndicatorContent();
                        this._renderMarkup()
                    }
                    _renderWrapper() {
                        this._$wrapper = (0, _renderer.default)("<div>").addClass(LOADINDICATOR_WRAPPER_CLASS);
                        this.$element().append(this._$wrapper)
                    }
                    _getAnimationTypeContentClass() {
                        const {
                            _animationType: animationType
                        } = this.option();
                        return ANIMATION_TYPE_CLASSES[animationType]
                    }
                    _renderIndicatorContent() {
                        const animationClass = this._getAnimationTypeContentClass() ?? "";
                        const contentClasses = [LOADINDICATOR_CONTENT_CLASS, animationClass].join(" ");
                        this._$content = (0, _renderer.default)("<div>").addClass(contentClasses);
                        this._$wrapper.append(this._$content)
                    }
                    _renderMarkup() {
                        const {
                            indicatorSrc: indicatorSrc
                        } = this.option();
                        const isAnimationAvailable = _m_support.default.animation();
                        if (indicatorSrc) {
                            this._renderImageMarkup()
                        } else if (isAnimationAvailable) {
                            this._renderAnimationMarkup()
                        }
                    }
                    _getSegmentParams() {
                        const {
                            _animationType: animationType,
                            _animatingSegmentCount: animatingSegmentCount,
                            _animatingSegmentInner: animatingSegmentInner
                        } = this.option();
                        switch (animationType) {
                            case AnimationType.Sparkle:
                                return {
                                    segmentCount: 2, segmentInner: false
                                };
                            case AnimationType.Circle:
                            default:
                                return {
                                    segmentCount: animatingSegmentCount ?? 0, segmentInner: Boolean(animatingSegmentInner)
                                }
                        }
                    }
                    _renderAnimationMarkup() {
                        this._$indicator = (0, _renderer.default)("<div>").addClass(LOADINDICATOR_ICON_CLASS);
                        this._$content.append(this._$indicator);
                        const params = this._getSegmentParams();
                        this._renderSegments(params)
                    }
                    _renderSegments(params) {
                        const {
                            segmentCount: segmentCount,
                            segmentInner: segmentInner
                        } = params;
                        for (let i = segmentCount; i >= 0; i -= 1) {
                            var _this$_$indicator;
                            const $segment = (0, _renderer.default)("<div>").addClass(LOADINDICATOR_SEGMENT_CLASS).addClass(`${LOADINDICATOR_SEGMENT_CLASS}${i}`);
                            if (segmentInner) {
                                const $segmentInner = (0, _renderer.default)("<div>").addClass(LOADINDICATOR_SEGMENT_INNER_CLASS);
                                $segment.append($segmentInner)
                            }
                            null === (_this$_$indicator = this._$indicator) || void 0 === _this$_$indicator || _this$_$indicator.append($segment)
                        }
                    }
                    _renderImageMarkup() {
                        const {
                            indicatorSrc: indicatorSrc
                        } = this.option();
                        this._$wrapper.addClass(LOADINDICATOR_IMAGE_CLASS);
                        this._$wrapper.css("backgroundImage", `url(${indicatorSrc})`)
                    }
                    _renderDimensions() {
                        super._renderDimensions();
                        this._updateContentSizeForAnimation()
                    }
                    _updateContentSizeForAnimation() {
                        if (!this._$indicator) {
                            return
                        }
                        let {
                            width: width,
                            height: height
                        } = this.option();
                        if (width || height) {
                            width = (0, _size.getWidth)(this.$element());
                            height = (0, _size.getHeight)(this.$element());
                            const minDimension = Math.min(height, width);
                            this._$wrapper.css({
                                height: minDimension,
                                width: minDimension,
                                fontSize: minDimension
                            })
                        }
                    }
                    _clean() {
                        super._clean();
                        this._removeMarkupForAnimation();
                        this._removeMarkupForImage()
                    }
                    _removeMarkupForAnimation() {
                        if (!this._$indicator) {
                            return
                        }
                        this._$indicator.remove();
                        delete this._$indicator
                    }
                    _removeMarkupForImage() {
                        this._$wrapper.css("backgroundImage", "none")
                    }
                    _optionChanged(args) {
                        switch (args.name) {
                            case "_animatingSegmentCount":
                            case "_animatingSegmentInner":
                            case "_animationType":
                            case "indicatorSrc":
                                this._invalidate();
                                break;
                            default:
                                super._optionChanged(args)
                        }
                    }
                }(0, _component_registrator.default)("dxLoadIndicator", LoadIndicator);
                exports.default = LoadIndicator
            },
        14474:
            /*!***************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/ui/m_load_panel.js ***!
              \***************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../common/core/localization/message */ 4671));
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 92848));
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553));
                var _common = __webpack_require__( /*! ../../core/utils/common */ 17781);
                var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 87739);
                var _load_indicator = _interopRequireDefault(__webpack_require__( /*! ../../ui/load_indicator */ 11979));
                var _themes = __webpack_require__( /*! ../../ui/themes */ 52071);
                var _m_overlay = _interopRequireDefault(__webpack_require__( /*! ../ui/overlay/m_overlay */ 68632));

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }

                function _extends() {
                    return _extends = Object.assign ? Object.assign.bind() : function(n) {
                        for (var e = 1; e < arguments.length; e++) {
                            var t = arguments[e];
                            for (var r in t) {
                                ({}).hasOwnProperty.call(t, r) && (n[r] = t[r])
                            }
                        }
                        return n
                    }, _extends.apply(null, arguments)
                }
                class LoadPanel extends _m_overlay.default {
                    _supportedKeys() {
                        return _extends({}, super._supportedKeys(), {
                            escape: _common.noop
                        })
                    }
                    _getDefaultOptions() {
                        return _extends({}, super._getDefaultOptions(), {
                            message: _message.default.format("Loading"),
                            width: 222,
                            height: 90,
                            animation: null,
                            showIndicator: true,
                            indicatorSrc: "",
                            showPane: true,
                            delay: 0,
                            templatesRenderAsynchronously: false,
                            hideTopOverlayHandler: null,
                            focusStateEnabled: false,
                            propagateOutsideClick: true,
                            preventScrollEvents: false
                        })
                    }
                    _defaultOptionsRules() {
                        return super._defaultOptionsRules().concat([{
                            device: {
                                platform: "generic"
                            },
                            options: {
                                shadingColor: "transparent"
                            }
                        }, {
                            device: () => (0, _themes.isMaterial)(),
                            options: {
                                message: "",
                                width: 60,
                                height: 60,
                                maxHeight: 60,
                                maxWidth: 60
                            }
                        }, {
                            device: () => (0, _themes.isFluent)(),
                            options: {
                                width: "auto",
                                height: "auto"
                            }
                        }])
                    }
                    _init() {
                        super._init.apply(this, arguments)
                    }
                    _render() {
                        super._render();
                        this.$element().addClass("dx-loadpanel");
                        this.$wrapper().addClass("dx-loadpanel-wrapper");
                        this._updateWrapperAria()
                    }
                    _updateWrapperAria() {
                        this.$wrapper().removeAttr("aria-label").removeAttr("role");
                        const showIndicator = this.option("showIndicator");
                        if (!showIndicator) {
                            const aria = this._getAriaAttributes();
                            this.$wrapper().attr(aria)
                        }
                    }
                    _getAriaAttributes() {
                        const {
                            message: message
                        } = this.option();
                        const label = message || _message.default.format("Loading");
                        const aria = {
                            role: "alert",
                            "aria-label": label
                        };
                        return aria
                    }
                    _renderContentImpl() {
                        super._renderContentImpl();
                        this.$content().addClass("dx-loadpanel-content");
                        this._$loadPanelContentWrapper = (0, _renderer.default)("<div>").addClass("dx-loadpanel-content-wrapper");
                        this._$loadPanelContentWrapper.appendTo(this.$content());
                        this._togglePaneVisible();
                        this._cleanPreviousContent();
                        this._renderLoadIndicator();
                        this._renderMessage()
                    }
                    _show() {
                        const {
                            delay: delay
                        } = this.option();
                        if (!delay) {
                            return super._show()
                        }
                        const deferred = (0, _deferred.Deferred)();
                        const callBase = super._show.bind(this);
                        this._clearShowTimeout();
                        this._showTimeout = setTimeout((() => {
                            callBase().done((() => {
                                deferred.resolve()
                            }))
                        }), delay);
                        return deferred.promise()
                    }
                    _hide() {
                        this._clearShowTimeout();
                        return super._hide()
                    }
                    _clearShowTimeout() {
                        clearTimeout(this._showTimeout)
                    }
                    _renderMessage() {
                        if (!this._$loadPanelContentWrapper) {
                            return
                        }
                        const {
                            message: message
                        } = this.option();
                        if (!message) {
                            return
                        }
                        const $message = (0, _renderer.default)("<div>").addClass("dx-loadpanel-message").text(message);
                        this._$loadPanelContentWrapper.append($message)
                    }
                    _renderLoadIndicator() {
                        if (!this._$loadPanelContentWrapper || !this.option("showIndicator")) {
                            return
                        }
                        if (!this._$indicator) {
                            this._$indicator = (0, _renderer.default)("<div>").addClass("dx-loadpanel-indicator").appendTo(this._$loadPanelContentWrapper)
                        }
                        this._createComponent(this._$indicator, _load_indicator.default, {
                            elementAttr: this._getAriaAttributes(),
                            indicatorSrc: this.option("indicatorSrc")
                        })
                    }
                    _cleanPreviousContent() {
                        this.$content().find(".dx-loadpanel-message").remove();
                        this.$content().find(".dx-loadpanel-indicator").remove();
                        delete this._$indicator
                    }
                    _togglePaneVisible() {
                        this.$content().toggleClass("dx-loadpanel-pane-hidden", !this.option("showPane"))
                    }
                    _optionChanged(args) {
                        switch (args.name) {
                            case "delay":
                                break;
                            case "message":
                            case "showIndicator":
                                this._cleanPreviousContent();
                                this._renderLoadIndicator();
                                this._renderMessage();
                                this._updateWrapperAria();
                                break;
                            case "showPane":
                                this._togglePaneVisible();
                                break;
                            case "indicatorSrc":
                                this._renderLoadIndicator();
                                break;
                            default:
                                super._optionChanged(args)
                        }
                    }
                    _dispose() {
                        this._clearShowTimeout();
                        super._dispose()
                    }
                }(0, _component_registrator.default)("dxLoadPanel", LoadPanel);
                exports.default = LoadPanel
            },
        79697:
            /*!**********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/ui/m_validation_engine.js ***!
              \**********************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../common/core/localization/message */ 4671));
                var _number = _interopRequireDefault(__webpack_require__( /*! ../../common/core/localization/number */ 52771));
                var _class = _interopRequireDefault(__webpack_require__( /*! ../../core/class */ 55620));
                var _errors = _interopRequireDefault(__webpack_require__( /*! ../../core/errors */ 87129));
                var _events_strategy = __webpack_require__( /*! ../../core/events_strategy */ 2607);
                var _common = __webpack_require__( /*! ../../core/utils/common */ 17781);
                var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 87739);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 21274);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 11528);

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const EMAIL_VALIDATION_REGEX = /^[\d\w.+_-]+@[\d\w._-]+\.[\w]+$/i;
                const STATUS_valid = "valid",
                    STATUS_invalid = "invalid",
                    STATUS_pending = "pending";
                class BaseRuleValidator {
                    constructor() {
                        this.NAME = "base"
                    }
                    defaultMessage(value) {
                        return _message.default.getFormatter(`validation-${this.NAME}`)(value)
                    }
                    defaultFormattedMessage(value) {
                        return _message.default.getFormatter(`validation-${this.NAME}-formatted`)(value)
                    }
                    _isValueEmpty(value) {
                        return !rulesValidators.required.validate(value, {})
                    }
                    validate(value, rule) {
                        const valueArray = Array.isArray(value) ? value : [value];
                        let result = true;
                        if (valueArray.length) {
                            valueArray.every((itemValue => {
                                result = this._validate(itemValue, rule);
                                return result
                            }))
                        } else {
                            result = this._validate(null, rule)
                        }
                        return result
                    }
                }
                class CustomRuleValidator extends BaseRuleValidator {
                    constructor() {
                        super();
                        this.NAME = "custom"
                    }
                    validate(value, rule) {
                        if (rule.ignoreEmptyValue && this._isValueEmpty(value)) {
                            return true
                        }
                        const {
                            validator: validator
                        } = rule;
                        const dataGetter = validator && (0, _type.isFunction)(validator.option) && validator.option("dataGetter");
                        const extraParams = (0, _type.isFunction)(dataGetter) && dataGetter();
                        const params = {
                            value: value,
                            validator: validator,
                            rule: rule
                        };
                        if (extraParams) {
                            (0, _extend.extend)(params, extraParams)
                        }
                        return rule.validationCallback(params)
                    }
                }
                const rulesValidators = {
                    required: new class extends BaseRuleValidator {
                        constructor() {
                            super();
                            this.NAME = "required"
                        }
                        _validate(value, rule) {
                            if (!(0, _type.isDefined)(value)) {
                                return false
                            }
                            if (false === value) {
                                return false
                            }
                            value = String(value);
                            if (rule.trim || !(0, _type.isDefined)(rule.trim)) {
                                value = value.trim()
                            }
                            return "" !== value
                        }
                    },
                    numeric: new class extends BaseRuleValidator {
                        constructor() {
                            super();
                            this.NAME = "numeric"
                        }
                        _validate(value, rule) {
                            if (false !== rule.ignoreEmptyValue && this._isValueEmpty(value)) {
                                return true
                            }
                            if (rule.useCultureSettings && (0, _type.isString)(value)) {
                                return !isNaN(_number.default.parse(value))
                            }
                            return (0, _type.isNumeric)(value)
                        }
                    },
                    range: new class extends BaseRuleValidator {
                        constructor() {
                            super();
                            this.NAME = "range"
                        }
                        _validate(value, rule) {
                            if (false !== rule.ignoreEmptyValue && this._isValueEmpty(value)) {
                                return true
                            }
                            const validNumber = rulesValidators.numeric.validate(value, rule);
                            const validValue = (0, _type.isDefined)(value) && "" !== value;
                            const number = validNumber ? parseFloat(value) : validValue && value.valueOf();
                            const {
                                min: min
                            } = rule;
                            const {
                                max: max
                            } = rule;
                            if (!(validNumber || (0, _type.isDate)(value)) && !validValue) {
                                return false
                            }
                            if ((0, _type.isDefined)(min)) {
                                if ((0, _type.isDefined)(max)) {
                                    return number >= min && number <= max
                                }
                                return number >= min
                            }
                            if ((0, _type.isDefined)(max)) {
                                return number <= max
                            }
                            throw _errors.default.Error("E0101")
                        }
                    },
                    stringLength: new class extends BaseRuleValidator {
                        constructor() {
                            super();
                            this.NAME = "stringLength"
                        }
                        _validate(value, rule) {
                            value = String(value ?? "");
                            if (rule.trim || !(0, _type.isDefined)(rule.trim)) {
                                value = value.trim()
                            }
                            if (rule.ignoreEmptyValue && this._isValueEmpty(value)) {
                                return true
                            }
                            return rulesValidators.range.validate(value.length, (0, _extend.extend)({}, rule))
                        }
                    },
                    custom: new CustomRuleValidator,
                    async: new class extends CustomRuleValidator {
                        constructor() {
                            super();
                            this.NAME = "async"
                        }
                        validate(value, rule) {
                            if (!(0, _type.isDefined)(rule.reevaluate)) {
                                (0, _extend.extend)(rule, {
                                    reevaluate: true
                                })
                            }
                            if (rule.ignoreEmptyValue && this._isValueEmpty(value)) {
                                return true
                            }
                            const {
                                validator: validator
                            } = rule;
                            const dataGetter = validator && (0, _type.isFunction)(validator.option) && validator.option("dataGetter");
                            const extraParams = (0, _type.isFunction)(dataGetter) && dataGetter();
                            const params = {
                                value: value,
                                validator: validator,
                                rule: rule
                            };
                            if (extraParams) {
                                (0, _extend.extend)(params, extraParams)
                            }
                            const callbackResult = rule.validationCallback(params);
                            if (!(0, _type.isPromise)(callbackResult)) {
                                throw _errors.default.Error("E0103")
                            }
                            return this._getWrappedPromise((0, _deferred.fromPromise)(callbackResult).promise())
                        }
                        _getWrappedPromise(promise) {
                            const deferred = (0, _deferred.Deferred)();
                            promise.then((res => {
                                deferred.resolve(res)
                            }), (err => {
                                const res = {
                                    isValid: false
                                };
                                if ((0, _type.isDefined)(err)) {
                                    if ((0, _type.isString)(err)) {
                                        res.message = err
                                    } else if ((0, _type.isObject)(err) && (0, _type.isDefined)(err.message) && (0, _type.isString)(err.message)) {
                                        res.message = err.message
                                    }
                                }
                                deferred.resolve(res)
                            }));
                            return deferred.promise()
                        }
                    },
                    compare: new class extends BaseRuleValidator {
                        constructor() {
                            super();
                            this.NAME = "compare"
                        }
                        _validate(value, rule) {
                            if (!rule.comparisonTarget) {
                                throw _errors.default.Error("E0102")
                            }
                            if (rule.ignoreEmptyValue && this._isValueEmpty(value)) {
                                return true
                            }(0, _extend.extend)(rule, {
                                reevaluate: true
                            });
                            const otherValue = rule.comparisonTarget();
                            const type = rule.comparisonType || "==";
                            switch (type) {
                                case "==":
                                    return value == otherValue;
                                case "!=":
                                    return value != otherValue;
                                case "===":
                                    return value === otherValue;
                                case "!==":
                                    return value !== otherValue;
                                case ">":
                                    return value > otherValue;
                                case ">=":
                                    return value >= otherValue;
                                case "<":
                                    return value < otherValue;
                                case "<=":
                                    return value <= otherValue
                            }
                        }
                    },
                    pattern: new class extends BaseRuleValidator {
                        constructor() {
                            super();
                            this.NAME = "pattern"
                        }
                        _validate(value, rule) {
                            if (false !== rule.ignoreEmptyValue && this._isValueEmpty(value)) {
                                return true
                            }
                            let {
                                pattern: pattern
                            } = rule;
                            if ((0, _type.isString)(pattern)) {
                                pattern = new RegExp(pattern)
                            }
                            return pattern.test(value)
                        }
                    },
                    email: new class extends BaseRuleValidator {
                        constructor() {
                            super();
                            this.NAME = "email"
                        }
                        _validate(value, rule) {
                            if (false !== rule.ignoreEmptyValue && this._isValueEmpty(value)) {
                                return true
                            }
                            return rulesValidators.pattern.validate(value, (0, _extend.extend)({}, rule, {
                                pattern: EMAIL_VALIDATION_REGEX
                            }))
                        }
                    }
                };
                class GroupConfig extends(_class.default.inherit({})) {
                    ctor(group, isRemovable) {
                        this.group = group;
                        this.validators = [];
                        this._isRemovable = isRemovable;
                        this._pendingValidators = [];
                        this._onValidatorStatusChanged = this._onValidatorStatusChanged.bind(this);
                        this._resetValidationInfo();
                        this._eventsStrategy = new _events_strategy.EventsStrategy(this)
                    }
                    validate() {
                        const result = {
                            isValid: true,
                            brokenRules: [],
                            validators: [],
                            status: STATUS_valid,
                            complete: null
                        };
                        this._unsubscribeFromAllChangeEvents();
                        this._pendingValidators = [];
                        this._resetValidationInfo();
                        (0, _iterator.each)(this.validators, ((_, validator) => {
                            const validatorResult = validator.validate();
                            result.isValid = result.isValid && validatorResult.isValid;
                            if (validatorResult.brokenRules) {
                                result.brokenRules = result.brokenRules.concat(validatorResult.brokenRules)
                            }
                            result.validators.push(validator);
                            if (validatorResult.status === STATUS_pending) {
                                this._addPendingValidator(validator)
                            }
                            this._subscribeToChangeEvents(validator)
                        }));
                        if (this._pendingValidators.length) {
                            result.status = STATUS_pending
                        } else {
                            result.status = result.isValid ? STATUS_valid : STATUS_invalid;
                            this._unsubscribeFromAllChangeEvents();
                            this._raiseValidatedEvent(result)
                        }
                        this._updateValidationInfo(result);
                        return (0, _extend.extend)({}, this._validationInfo.result)
                    }
                    _subscribeToChangeEvents(validator) {
                        validator.on("validating", this._onValidatorStatusChanged);
                        validator.on("validated", this._onValidatorStatusChanged)
                    }
                    _unsubscribeFromChangeEvents(validator) {
                        validator.off("validating", this._onValidatorStatusChanged);
                        validator.off("validated", this._onValidatorStatusChanged)
                    }
                    _unsubscribeFromAllChangeEvents() {
                        (0, _iterator.each)(this.validators, ((_, validator) => {
                            this._unsubscribeFromChangeEvents(validator)
                        }))
                    }
                    _updateValidationInfo(result) {
                        this._validationInfo.result = result;
                        if (result.status !== STATUS_pending) {
                            return
                        }
                        if (!this._validationInfo.deferred) {
                            this._validationInfo.deferred = (0, _deferred.Deferred)();
                            this._validationInfo.result.complete = this._validationInfo.deferred.promise()
                        }
                    }
                    _addPendingValidator(validator) {
                        const foundValidator = (0, _common.grep)(this._pendingValidators, (val => val === validator))[0];
                        if (!foundValidator) {
                            this._pendingValidators.push(validator)
                        }
                    }
                    _removePendingValidator(validator) {
                        const index = this._pendingValidators.indexOf(validator);
                        if (index >= 0) {
                            this._pendingValidators.splice(index, 1)
                        }
                    }
                    _orderBrokenRules(brokenRules) {
                        let orderedRules = [];
                        (0, _iterator.each)(this.validators, ((_, validator) => {
                            const foundRules = (0, _common.grep)(brokenRules, (rule => rule.validator === validator));
                            if (foundRules.length) {
                                orderedRules = orderedRules.concat(foundRules)
                            }
                        }));
                        return orderedRules
                    }
                    _updateBrokenRules(result) {
                        if (!this._validationInfo.result) {
                            return
                        }
                        let {
                            brokenRules: brokenRules
                        } = this._validationInfo.result;
                        const rules = (0, _common.grep)(brokenRules, (rule => rule.validator !== result.validator));
                        if (result.brokenRules) {
                            brokenRules = rules.concat(result.brokenRules)
                        }
                        this._validationInfo.result.brokenRules = this._orderBrokenRules(brokenRules)
                    }
                    _onValidatorStatusChanged(result) {
                        if (result.status === STATUS_pending) {
                            this._addPendingValidator(result.validator);
                            return
                        }
                        this._resolveIfComplete(result)
                    }
                    _resolveIfComplete(result) {
                        this._removePendingValidator(result.validator);
                        this._updateBrokenRules(result);
                        if (!this._pendingValidators.length) {
                            this._unsubscribeFromAllChangeEvents();
                            if (!this._validationInfo.result) {
                                return
                            }
                            this._validationInfo.result.status = 0 === this._validationInfo.result.brokenRules.length ? STATUS_valid : STATUS_invalid;
                            this._validationInfo.result.isValid = this._validationInfo.result.status === STATUS_valid;
                            const res = (0, _extend.extend)({}, this._validationInfo.result, {
                                complete: null
                            });
                            const {
                                deferred: deferred
                            } = this._validationInfo;
                            this._validationInfo.deferred = null;
                            this._raiseValidatedEvent(res);
                            deferred && setTimeout((() => {
                                deferred.resolve(res)
                            }))
                        }
                    }
                    _raiseValidatedEvent(result) {
                        this._eventsStrategy.fireEvent("validated", [result])
                    }
                    _resetValidationInfo() {
                        this._validationInfo = {
                            result: null,
                            deferred: null
                        }
                    }
                    _synchronizeValidationInfo() {
                        if (this._validationInfo.result) {
                            this._validationInfo.result.validators = this.validators
                        }
                    }
                    removeRegisteredValidator(validator) {
                        const index = this.validators.indexOf(validator);
                        if (index > -1) {
                            this.validators.splice(index, 1);
                            this._synchronizeValidationInfo();
                            this._resolveIfComplete({
                                validator: validator
                            })
                        }
                    }
                    registerValidator(validator) {
                        if (!this.validators.includes(validator)) {
                            this.validators.push(validator);
                            this._synchronizeValidationInfo()
                        }
                    }
                    reset() {
                        (0, _iterator.each)(this.validators, ((_, validator) => {
                            validator.reset()
                        }));
                        this._pendingValidators = [];
                        this._resetValidationInfo()
                    }
                    on(eventName, eventHandler) {
                        this._eventsStrategy.on(eventName, eventHandler);
                        return this
                    }
                    off(eventName, eventHandler) {
                        this._eventsStrategy.off(eventName, eventHandler);
                        return this
                    }
                }
                const ValidationEngine = {
                    groups: [],
                    getGroupConfig(group) {
                        const result = (0, _common.grep)(this.groups, (config => config.group === group));
                        if (result.length) {
                            return result[0]
                        }
                    },
                    findGroup($element, model) {
                        var _$element$data;
                        const hasValidationGroup = null === (_$element$data = $element.data()) || void 0 === _$element$data || null === (_$element$data = _$element$data.dxComponents) || void 0 === _$element$data ? void 0 : _$element$data.includes("dxValidationGroup");
                        const validationGroup = hasValidationGroup && $element.dxValidationGroup("instance");
                        if (validationGroup) {
                            return validationGroup
                        }
                        const $dxGroup = $element.parents(".dx-validationgroup").first();
                        if ($dxGroup.length) {
                            return $dxGroup.dxValidationGroup("instance")
                        }
                        return model
                    },
                    initGroups() {
                        this.groups = [];
                        this.addGroup(void 0, false)
                    },
                    addGroup(group) {
                        let isRemovable = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : true;
                        let config = this.getGroupConfig(group);
                        if (!config) {
                            config = new GroupConfig(group, isRemovable);
                            this.groups.push(config)
                        }
                        return config
                    },
                    removeGroup(group) {
                        const config = this.getGroupConfig(group);
                        const index = this.groups.indexOf(config);
                        if (index > -1) {
                            this.groups.splice(index, 1)
                        }
                        return config
                    },
                    _setDefaultMessage(info) {
                        const {
                            rule: rule,
                            validator: validator,
                            name: name
                        } = info;
                        if (!(0, _type.isDefined)(rule.message)) {
                            if (validator.defaultFormattedMessage && (0, _type.isDefined)(name)) {
                                rule.message = validator.defaultFormattedMessage(name)
                            } else {
                                rule.message = validator.defaultMessage()
                            }
                        }
                    },
                    _addBrokenRule(info) {
                        const {
                            result: result,
                            rule: rule
                        } = info;
                        if (!result.brokenRule) {
                            result.brokenRule = rule
                        }
                        if (!result.brokenRules) {
                            result.brokenRules = []
                        }
                        result.brokenRules.push(rule)
                    },
                    validate(value, rules, name) {
                        var _rules$;
                        let result = {
                            name: name,
                            value: value,
                            brokenRule: null,
                            brokenRules: null,
                            isValid: true,
                            validationRules: rules,
                            pendingRules: null,
                            status: STATUS_valid,
                            complete: null
                        };
                        const validator = null === rules || void 0 === rules || null === (_rules$ = rules[0]) || void 0 === _rules$ ? void 0 : _rules$.validator;
                        const asyncRuleItems = [];
                        (0, _iterator.each)(rules || [], ((_, rule) => {
                            const ruleValidator = rulesValidators[rule.type];
                            let ruleValidationResult;
                            if (ruleValidator) {
                                if ((0, _type.isDefined)(rule.isValid) && rule.value === value && !rule.reevaluate) {
                                    if (!rule.isValid) {
                                        result.isValid = false;
                                        this._addBrokenRule({
                                            result: result,
                                            rule: rule
                                        });
                                        return false
                                    }
                                    return true
                                }
                                rule.value = value;
                                if ("async" === rule.type) {
                                    asyncRuleItems.push({
                                        rule: rule,
                                        ruleValidator: ruleValidator
                                    });
                                    return true
                                }
                                ruleValidationResult = ruleValidator.validate(value, rule);
                                rule.isValid = ruleValidationResult;
                                if (!ruleValidationResult) {
                                    result.isValid = false;
                                    this._setDefaultMessage({
                                        rule: rule,
                                        validator: ruleValidator,
                                        name: name
                                    });
                                    this._addBrokenRule({
                                        result: result,
                                        rule: rule
                                    })
                                }
                                if (!rule.isValid) {
                                    return false
                                }
                            } else {
                                throw _errors.default.Error("E0100")
                            }
                        }));
                        if (result.isValid && !result.brokenRules && asyncRuleItems.length) {
                            result = this._validateAsyncRules({
                                value: value,
                                items: asyncRuleItems,
                                result: result,
                                name: name
                            })
                        }
                        this._synchronizeGroupValidationInfo(validator, result);
                        result.status = result.pendingRules ? STATUS_pending : result.isValid ? STATUS_valid : STATUS_invalid;
                        return result
                    },
                    _synchronizeGroupValidationInfo(validator, result) {
                        if (!validator) {
                            return
                        }
                        const groupConfig = ValidationEngine.getGroupConfig(validator._validationGroup);
                        groupConfig._updateBrokenRules.call(groupConfig, {
                            validator: validator,
                            brokenRules: result.brokenRules ?? []
                        })
                    },
                    _validateAsyncRules(_ref) {
                        let {
                            result: result,
                            value: value,
                            items: items,
                            name: name
                        } = _ref;
                        const asyncResults = [];
                        (0, _iterator.each)(items, ((_, item) => {
                            const validateResult = item.ruleValidator.validate(value, item.rule);
                            if (!(0, _type.isPromise)(validateResult)) {
                                this._updateRuleConfig({
                                    rule: item.rule,
                                    ruleResult: this._getPatchedRuleResult(validateResult),
                                    validator: item.ruleValidator,
                                    name: name
                                })
                            } else {
                                if (!result.pendingRules) {
                                    result.pendingRules = []
                                }
                                result.pendingRules.push(item.rule);
                                const asyncResult = validateResult.then((res => {
                                    const ruleResult = this._getPatchedRuleResult(res);
                                    this._updateRuleConfig({
                                        rule: item.rule,
                                        ruleResult: ruleResult,
                                        validator: item.ruleValidator,
                                        name: name
                                    });
                                    return ruleResult
                                }));
                                asyncResults.push(asyncResult)
                            }
                        }));
                        if (asyncResults.length) {
                            result.complete = Promise.all(asyncResults).then((values => this._getAsyncRulesResult({
                                result: result,
                                values: values
                            })))
                        }
                        return result
                    },
                    _updateRuleConfig(_ref2) {
                        let {
                            rule: rule,
                            ruleResult: ruleResult,
                            validator: validator,
                            name: name
                        } = _ref2;
                        rule.isValid = ruleResult.isValid;
                        if (!ruleResult.isValid) {
                            if ((0, _type.isDefined)(ruleResult.message) && (0, _type.isString)(ruleResult.message) && ruleResult.message.length) {
                                rule.message = ruleResult.message
                            } else {
                                this._setDefaultMessage({
                                    rule: rule,
                                    validator: validator,
                                    name: name
                                })
                            }
                        }
                    },
                    _getPatchedRuleResult(ruleResult) {
                        let result;
                        if ((0, _type.isObject)(ruleResult)) {
                            result = (0, _extend.extend)({}, ruleResult);
                            if (!(0, _type.isDefined)(result.isValid)) {
                                result.isValid = true
                            }
                        } else {
                            result = {
                                isValid: (0, _type.isBoolean)(ruleResult) ? ruleResult : true
                            }
                        }
                        return result
                    },
                    _getAsyncRulesResult(_ref3) {
                        let {
                            values: values,
                            result: result
                        } = _ref3;
                        (0, _iterator.each)(values, ((index, val) => {
                            if (false === val.isValid) {
                                result.isValid = val.isValid;
                                const rule = result.pendingRules[index];
                                this._addBrokenRule({
                                    result: result,
                                    rule: rule
                                })
                            }
                        }));
                        result.pendingRules = null;
                        result.complete = null;
                        result.status = result.isValid ? STATUS_valid : STATUS_invalid;
                        return result
                    },
                    registerValidatorInGroup(group, validator) {
                        const groupConfig = ValidationEngine.addGroup(group);
                        groupConfig.registerValidator.call(groupConfig, validator)
                    },
                    removeRegisteredValidator(group, validator) {
                        const config = ValidationEngine.getGroupConfig(group);
                        if (config) {
                            config.removeRegisteredValidator.call(config, validator);
                            const validatorsInGroup = config.validators;
                            const isRemovable = config._isRemovable;
                            const shouldRemoveGroup = 0 === validatorsInGroup.length && isRemovable;
                            if (shouldRemoveGroup) {
                                this.removeGroup(group)
                            }
                        }
                    },
                    initValidationOptions(options) {
                        const initedOptions = {};
                        if (options) {
                            const syncOptions = ["isValid", "validationStatus", "validationError", "validationErrors"];
                            syncOptions.forEach((prop => {
                                if (prop in options) {
                                    (0, _extend.extend)(initedOptions, this.synchronizeValidationOptions({
                                        name: prop,
                                        value: options[prop]
                                    }, options))
                                }
                            }))
                        }
                        return initedOptions
                    },
                    synchronizeValidationOptions(_ref4, options) {
                        let {
                            name: name,
                            value: value
                        } = _ref4;
                        switch (name) {
                            case "validationStatus": {
                                const isValid = value === STATUS_valid || value === STATUS_pending;
                                return options.isValid !== isValid ? {
                                    isValid: isValid
                                } : {}
                            }
                            case "isValid": {
                                const {
                                    validationStatus: validationStatus
                                } = options;
                                let newStatus = validationStatus;
                                if (value && validationStatus === STATUS_invalid) {
                                    newStatus = STATUS_valid
                                } else if (!value && validationStatus !== STATUS_invalid) {
                                    newStatus = STATUS_invalid
                                }
                                return newStatus !== validationStatus ? {
                                    validationStatus: newStatus
                                } : {}
                            }
                            case "validationErrors": {
                                const validationError = !(null !== value && void 0 !== value && value.length) ? null : value[0];
                                return options.validationError !== validationError ? {
                                    validationError: validationError
                                } : {}
                            }
                            case "validationError": {
                                const {
                                    validationErrors: validationErrors
                                } = options;
                                if (!value && validationErrors) {
                                    return {
                                        validationErrors: null
                                    }
                                }
                                if (value && !validationErrors) {
                                    return {
                                        validationErrors: [value]
                                    }
                                }
                                if (value && validationErrors && value !== validationErrors[0]) {
                                    validationErrors[0] = value;
                                    return {
                                        validationErrors: validationErrors.slice()
                                    }
                                }
                            }
                        }
                        return {}
                    },
                    validateGroup(group) {
                        const groupConfig = ValidationEngine.getGroupConfig(group);
                        if (!groupConfig) {
                            throw _errors.default.Error("E0110")
                        }
                        return groupConfig.validate()
                    },
                    resetGroup(group) {
                        const groupConfig = ValidationEngine.getGroupConfig(group);
                        if (!groupConfig) {
                            throw _errors.default.Error("E0110")
                        }
                        return groupConfig.reset()
                    }
                };
                ValidationEngine.initGroups();
                exports.default = ValidationEngine
            },
        22864:
            /*!***********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/ui/m_validation_message.js ***!
              \***********************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 92848));
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553));
                var _position = __webpack_require__( /*! ../../core/utils/position */ 41639);
                var _size = __webpack_require__( /*! ../../core/utils/size */ 57653);
                var _string = __webpack_require__( /*! ../../core/utils/string */ 54497);
                var _m_overlay = _interopRequireDefault(__webpack_require__( /*! ../ui/overlay/m_overlay */ 68632));

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }

                function _extends() {
                    return _extends = Object.assign ? Object.assign.bind() : function(n) {
                        for (var e = 1; e < arguments.length; e++) {
                            var t = arguments[e];
                            for (var r in t) {
                                ({}).hasOwnProperty.call(t, r) && (n[r] = t[r])
                            }
                        }
                        return n
                    }, _extends.apply(null, arguments)
                }
                class ValidationMessage extends _m_overlay.default {
                    _getDefaultOptions() {
                        return _extends({}, super._getDefaultOptions(), {
                            integrationOptions: {},
                            templatesRenderAsynchronously: false,
                            shading: false,
                            width: "auto",
                            height: "auto",
                            hideOnOutsideClick: false,
                            animation: null,
                            visible: true,
                            propagateOutsideClick: true,
                            _checkParentVisibility: false,
                            rtlEnabled: false,
                            contentTemplate: this._renderInnerHtml,
                            maxWidth: "100%",
                            container: this.$element(),
                            mode: "auto",
                            preventScrollEvents: false,
                            positionSide: "top",
                            offset: {
                                h: 0,
                                v: 0
                            }
                        })
                    }
                    _init() {
                        super._init();
                        this.updateMaxWidth();
                        this._updatePosition()
                    }
                    _initMarkup() {
                        super._initMarkup();
                        this._ensureMessageNotEmpty();
                        this._updatePositionByTarget();
                        this._toggleModeClass();
                        this._updateContentId()
                    }
                    _updatePositionByTarget() {
                        const {
                            target: target
                        } = this.option();
                        this.option("position.of", target)
                    }
                    _ensureMessageNotEmpty() {
                        this._textMarkup = this._getTextMarkup();
                        const shouldShowMessage = this.option("visible") && this._textMarkup;
                        this._toggleVisibilityClasses(shouldShowMessage)
                    }
                    _toggleVisibilityClasses(visible) {
                        if (visible) {
                            this.$element().addClass("dx-invalid-message");
                            this.$wrapper().addClass("dx-invalid-message")
                        } else {
                            this.$element().removeClass("dx-invalid-message");
                            this.$wrapper().removeClass("dx-invalid-message")
                        }
                    }
                    _updateContentId() {
                        const {
                            container: container,
                            contentId: contentId
                        } = this.option();
                        const id = contentId ?? (0, _renderer.default)(container).attr("aria-describedby");
                        this.$content().addClass("dx-invalid-message-content").attr("id", id)
                    }
                    _renderInnerHtml(element) {
                        const $element = element && (0, _renderer.default)(element);
                        null === $element || void 0 === $element || $element.html(this._textMarkup)
                    }
                    _getTextMarkup() {
                        const validationErrors = this.option("validationErrors") ?? [];
                        let validationErrorMessage = "";
                        validationErrors.forEach((err => {
                            const separator = validationErrorMessage ? "<br />" : "";
                            validationErrorMessage += separator + (0, _string.encodeHtml)((null === err || void 0 === err ? void 0 : err.message) ?? "")
                        }));
                        return validationErrorMessage
                    }
                    _toggleModeClass() {
                        const {
                            mode: mode
                        } = this.option();
                        this.$wrapper().toggleClass("dx-invalid-message-auto", "auto" === mode).toggleClass("dx-invalid-message-always", "always" === mode)
                    }
                    updateMaxWidth() {
                        const target = this.option("target");
                        const targetWidth = (0, _size.getOuterWidth)(target);
                        let maxWidth = "100%";
                        if (targetWidth) {
                            maxWidth = Math.max(targetWidth, 100)
                        }
                        this.option({
                            maxWidth: maxWidth
                        })
                    }
                    _getPositionsArray(positionSide, rtlSide) {
                        switch (positionSide) {
                            case "top":
                                return [`${rtlSide} bottom`, `${rtlSide} top`];
                            case "left":
                                return ["right", "left"];
                            case "right":
                                return ["left", "right"];
                            default:
                                return [`${rtlSide} top`, `${rtlSide} bottom`]
                        }
                    }
                    _updatePosition() {
                        const {
                            positionSide: positionSide,
                            rtlEnabled: rtlEnabled,
                            offset: componentOffset,
                            boundary: boundary
                        } = this.option();
                        const rtlSide = (0, _position.getDefaultAlignment)(rtlEnabled);
                        const positions = this._getPositionsArray(positionSide, rtlSide);
                        const offset = _extends({}, componentOffset);
                        this.$element().addClass(`dx-invalid-message-${positionSide}`);
                        if (rtlEnabled && "left" !== positionSide && "right" !== positionSide) {
                            offset.h = -offset.h
                        }
                        if ("top" === positionSide) {
                            offset.v = -offset.v
                        }
                        if ("left" === positionSide) {
                            offset.h = -offset.h
                        }
                        this.option("position", {
                            offset: offset,
                            boundary: boundary,
                            my: positions[0],
                            at: positions[1],
                            collision: "none flip"
                        })
                    }
                    _optionChanged(args) {
                        const {
                            name: name,
                            value: value,
                            previousValue: previousValue
                        } = args;
                        switch (name) {
                            case "target":
                                this._updatePositionByTarget();
                                this.updateMaxWidth();
                                super._optionChanged(args);
                                break;
                            case "boundary":
                                this.option("position.boundary", value);
                                break;
                            case "mode":
                                this._toggleModeClass();
                                break;
                            case "rtlEnabled":
                            case "offset":
                            case "positionSide":
                                this.$element().removeClass(`dx-invalid-message-${previousValue}`);
                                this._updatePosition();
                                break;
                            case "container":
                                this._updateContentId();
                                super._optionChanged(args);
                                break;
                            case "contentId":
                                this._updateContentId();
                                break;
                            case "validationErrors":
                                this._ensureMessageNotEmpty();
                                this._renderInnerHtml(this.$content());
                                break;
                            default:
                                super._optionChanged(args)
                        }
                    }
                }(0, _component_registrator.default)("dxValidationMessage", ValidationMessage);
                exports.default = ValidationMessage
            },
        68632:
            /*!********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/ui/overlay/m_overlay.js ***!
              \********************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = exports.OVERLAY_CONTENT_CLASS = void 0;
                var _animation = __webpack_require__( /*! ../../../common/core/animation */ 16826);
                var _hide_callback = __webpack_require__( /*! ../../../common/core/environment/hide_callback */ 83916);
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774));
                var _drag = __webpack_require__( /*! ../../../common/core/events/drag */ 59144);
                var _pointer = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/pointer */ 89797));
                var _short = __webpack_require__( /*! ../../../common/core/events/short */ 42222);
                var _index = __webpack_require__( /*! ../../../common/core/events/utils/index */ 98834);
                var _visibility_change = __webpack_require__( /*! ../../../common/core/events/visibility_change */ 18029);
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../core/component_registrator */ 92848));
                var _devices = _interopRequireDefault(__webpack_require__( /*! ../../../core/devices */ 65951));
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../core/dom_adapter */ 64960));
                var _element = __webpack_require__( /*! ../../../core/element */ 61404);
                var _errors = _interopRequireDefault(__webpack_require__( /*! ../../../core/errors */ 87129));
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553));
                var _empty_template = __webpack_require__( /*! ../../../core/templates/empty_template */ 48650);
                var _browser = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/browser */ 48314));
                var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781);
                var _deferred = __webpack_require__( /*! ../../../core/utils/deferred */ 87739);
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576);
                var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274);
                var _ready_callbacks = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/ready_callbacks */ 3122));
                var _size = __webpack_require__( /*! ../../../core/utils/size */ 57653);
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528);
                var _view_port = __webpack_require__( /*! ../../../core/utils/view_port */ 55355);
                var _selectors = __webpack_require__( /*! ../../../ui/widget/selectors */ 35944);
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../ui/widget/ui.errors */ 35185));
                var _m_dom = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/m_dom */ 76400));
                var _widget = _interopRequireDefault(__webpack_require__( /*! ../../core/widget/widget */ 89275));
                var _m_window = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/m_window */ 14470));
                var _m_overlay_position_controller = __webpack_require__( /*! ./m_overlay_position_controller */ 4983);
                var zIndexPool = function(e, r) {
                    if (!r && e && e.__esModule) {
                        return e
                    }
                    if (null === e || "object" != typeof e && "function" != typeof e) {
                        return {
                            default: e
                        }
                    }
                    var t = _getRequireWildcardCache(r);
                    if (t && t.has(e)) {
                        return t.get(e)
                    }
                    var n = {
                            __proto__: null
                        },
                        a = Object.defineProperty && Object.getOwnPropertyDescriptor;
                    for (var u in e) {
                        if ("default" !== u && {}.hasOwnProperty.call(e, u)) {
                            var i = a ? Object.getOwnPropertyDescriptor(e, u) : null;
                            i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]
                        }
                    }
                    return n.default = e, t && t.set(e, n), n
                }(__webpack_require__( /*! ./m_z_index */ 84893));

                function _getRequireWildcardCache(e) {
                    if ("function" != typeof WeakMap) {
                        return null
                    }
                    var r = new WeakMap,
                        t = new WeakMap;
                    return (_getRequireWildcardCache = function(e) {
                        return e ? t : r
                    })(e)
                }

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }

                function _extends() {
                    return _extends = Object.assign ? Object.assign.bind() : function(n) {
                        for (var e = 1; e < arguments.length; e++) {
                            var t = arguments[e];
                            for (var r in t) {
                                ({}).hasOwnProperty.call(t, r) && (n[r] = t[r])
                            }
                        }
                        return n
                    }, _extends.apply(null, arguments)
                }
                const ready = _ready_callbacks.default.add;
                const window = _m_window.default.getWindow();
                const viewPortChanged = _view_port.changeCallback;
                const OVERLAY_CONTENT_CLASS = exports.OVERLAY_CONTENT_CLASS = "dx-overlay-content";
                const OVERLAY_STACK = [];
                ready((() => {
                    _events_engine.default.subscribeGlobal(_dom_adapter.default.getDocument(), _pointer.default.down, (e => {
                        for (let i = OVERLAY_STACK.length - 1; i >= 0; i--) {
                            if (!OVERLAY_STACK[i]._proxiedDocumentDownHandler(e)) {
                                return
                            }
                        }
                    }))
                }));
                class Overlay extends _widget.default {
                    _supportedKeys() {
                        return _extends({}, super._supportedKeys(), {
                            escape() {
                                this.hide()
                            }
                        })
                    }
                    _getDefaultOptions() {
                        return _extends({}, super._getDefaultOptions(), {
                            activeStateEnabled: false,
                            visible: false,
                            deferRendering: true,
                            shading: true,
                            shadingColor: "",
                            wrapperAttr: {},
                            position: (0, _extend.extend)({}, _m_overlay_position_controller.OVERLAY_POSITION_ALIASES.center),
                            width: "80vw",
                            minWidth: null,
                            maxWidth: null,
                            height: "80vh",
                            minHeight: null,
                            maxHeight: null,
                            animation: {
                                show: {
                                    type: "pop",
                                    duration: 300,
                                    from: {
                                        scale: .55
                                    }
                                },
                                hide: {
                                    type: "pop",
                                    duration: 300,
                                    from: {
                                        opacity: 1,
                                        scale: 1
                                    },
                                    to: {
                                        opacity: 0,
                                        scale: .55
                                    }
                                }
                            },
                            hideOnOutsideClick: false,
                            _ignorePreventScrollEventsDeprecation: false,
                            onShowing: null,
                            onShown: null,
                            onHiding: null,
                            onHidden: null,
                            contentTemplate: "content",
                            innerOverlay: false,
                            restorePosition: true,
                            hideTopOverlayHandler: () => {
                                this.hide()
                            },
                            hideOnParentScroll: false,
                            preventScrollEvents: true,
                            onPositioned: null,
                            propagateOutsideClick: false,
                            ignoreChildEvents: true,
                            _checkParentVisibility: true,
                            _fixWrapperPosition: false,
                            _loopFocus: false
                        })
                    }
                    _defaultOptionsRules() {
                        return super._defaultOptionsRules().concat([{
                            device: () => !_m_window.default.hasWindow(),
                            options: {
                                width: null,
                                height: null,
                                animation: null,
                                _checkParentVisibility: false
                            }
                        }])
                    }
                    _setOptionsByReference() {
                        super._setOptionsByReference();
                        (0, _extend.extend)(this._optionsByReference, {
                            animation: true
                        })
                    }
                    $wrapper() {
                        return this._$wrapper
                    }
                    _eventBindingTarget() {
                        return this._$content
                    }
                    ctor(element, options) {
                        super.ctor(element, options);
                        if (options) {
                            if ("preventScrollEvents" in options && !options._ignorePreventScrollEventsDeprecation) {
                                this._logDeprecatedPreventScrollEventsInfo()
                            }
                        }
                    }
                    _logDeprecatedPreventScrollEventsInfo() {
                        this._logDeprecatedOptionWarning("preventScrollEvents", {
                            since: "23.1",
                            message: "If you enable this option, end-users may experience scrolling issues."
                        })
                    }
                    _init() {
                        super._init();
                        this._initActions();
                        this._initHideOnOutsideClickHandler();
                        this._initTabTerminatorHandler();
                        this._customWrapperClass = null;
                        this._$wrapper = (0, _renderer.default)("<div>").addClass("dx-overlay-wrapper");
                        this._$content = (0, _renderer.default)("<div>").addClass(OVERLAY_CONTENT_CLASS);
                        this._initInnerOverlayClass();
                        const $element = this.$element();
                        $element.addClass("dx-overlay");
                        this._$wrapper.attr("data-bind", "dxControlsDescendantBindings: true");
                        this._toggleViewPortSubscription(true);
                        const {
                            hideTopOverlayHandler: hideTopOverlayHandler
                        } = this.option();
                        this._initHideTopOverlayHandler(hideTopOverlayHandler);
                        this._parentsScrollSubscriptionInfo = {
                            handler: e => {
                                this._hideOnParentsScrollHandler(e)
                            }
                        };
                        this.warnPositionAsFunction()
                    }
                    warnPositionAsFunction() {
                        if ((0, _type.isFunction)(this.option("position"))) {
                            _errors.default.log("W0018")
                        }
                    }
                    _initInnerOverlayClass() {
                        const {
                            innerOverlay: innerOverlay
                        } = this.option();
                        this._$content.toggleClass("dx-inner-overlay", innerOverlay)
                    }
                    _initHideTopOverlayHandler(handler) {
                        this._hideTopOverlayHandler = handler
                    }
                    _getActionsList() {
                        return ["onShowing", "onShown", "onHiding", "onHidden", "onPositioned", "onVisualPositionChanged"]
                    }
                    _initActions() {
                        this._actions = {};
                        const actions = this._getActionsList();
                        (0, _iterator.each)(actions, ((_, action) => {
                            this._actions[action] = this._createActionByOption(action, {
                                excludeValidators: ["disabled", "readOnly"]
                            }) || _common.noop
                        }))
                    }
                    _initHideOnOutsideClickHandler() {
                        var _this = this;
                        this._proxiedDocumentDownHandler = function() {
                            return _this._documentDownHandler(...arguments)
                        }
                    }
                    _initMarkup() {
                        super._initMarkup();
                        this._renderWrapperAttributes();
                        this._initPositionController()
                    }
                    _documentDownHandler(e) {
                        if (this._showAnimationProcessing) {
                            this._stopAnimation()
                        }
                        const isAttachedTarget = (0, _renderer.default)(window.document).is(e.target) || _m_dom.default.contains(window.document, e.target);
                        const isInnerOverlay = (0, _renderer.default)(e.target).closest(".dx-inner-overlay").length;
                        const outsideClick = isAttachedTarget && !isInnerOverlay && !(this._$content.is(e.target) || _m_dom.default.contains(this._$content.get(0), e.target));
                        if (outsideClick && this._shouldHideOnOutsideClick(e)) {
                            this._outsideClickHandler(e)
                        }
                        const {
                            propagateOutsideClick: propagateOutsideClick
                        } = this.option();
                        return propagateOutsideClick
                    }
                    _shouldHideOnOutsideClick(e) {
                        const {
                            hideOnOutsideClick: hideOnOutsideClick
                        } = this.option();
                        if ((0, _type.isFunction)(hideOnOutsideClick)) {
                            return hideOnOutsideClick(e)
                        }
                        return hideOnOutsideClick
                    }
                    _outsideClickHandler(e) {
                        if (this.option("shading")) {
                            e.preventDefault()
                        }
                        this.hide()
                    }
                    _getAnonymousTemplateName() {
                        return "content"
                    }
                    _initTemplates() {
                        this._templateManager.addDefaultTemplates({
                            content: new _empty_template.EmptyTemplate
                        });
                        super._initTemplates()
                    }
                    _isTopOverlay() {
                        const overlayStack = this._overlayStack();
                        for (let i = overlayStack.length - 1; i >= 0; i--) {
                            const tabbableElements = overlayStack[i]._findTabbableBounds();
                            if (tabbableElements.first || tabbableElements.last) {
                                return overlayStack[i] === this
                            }
                        }
                        return false
                    }
                    _overlayStack() {
                        return OVERLAY_STACK
                    }
                    _zIndexInitValue() {
                        return Overlay.baseZIndex()
                    }
                    _toggleViewPortSubscription(toggle) {
                        var _this2 = this;
                        viewPortChanged.remove(this._viewPortChangeHandle);
                        if (toggle) {
                            this._viewPortChangeHandle = function() {
                                _this2._viewPortChangeHandler(...arguments)
                            };
                            viewPortChanged.add(this._viewPortChangeHandle)
                        }
                    }
                    _viewPortChangeHandler() {
                        this._positionController.updateContainer(this.option("container"));
                        this._refresh()
                    }
                    _renderWrapperAttributes() {
                        const {
                            wrapperAttr: wrapperAttr
                        } = this.option();
                        const attributes = (0, _extend.extend)({}, wrapperAttr);
                        const classNames = attributes.class;
                        delete attributes.class;
                        this.$wrapper().attr(attributes).removeClass(this._customWrapperClass).addClass(classNames);
                        this._customWrapperClass = classNames
                    }
                    _renderVisibilityAnimate(visible) {
                        this._stopAnimation();
                        return visible ? this._show() : this._hide()
                    }
                    _getAnimationConfig() {
                        return this._getOptionValue("animation", this)
                    }
                    _toggleBodyScroll(enabled) {}
                    _animateShowing() {
                        var _this3 = this;
                        const animation = this._getAnimationConfig() ?? {};
                        const showAnimation = this._normalizeAnimation(animation.show, "to");
                        const startShowAnimation = (null === showAnimation || void 0 === showAnimation ? void 0 : showAnimation.start) ?? _common.noop;
                        const completeShowAnimation = (null === showAnimation || void 0 === showAnimation ? void 0 : showAnimation.complete) ?? _common.noop;
                        this._animate(showAnimation, (function() {
                            if (_this3._isAnimationPaused) {
                                return
                            }
                            if (_this3.option("focusStateEnabled")) {
                                _events_engine.default.trigger(_this3._focusTarget(), "focus")
                            }
                            for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
                                args[_key] = arguments[_key]
                            }
                            completeShowAnimation.call(_this3, ...args);
                            _this3._showAnimationProcessing = false;
                            _this3._isHidden = false;
                            _this3._actions.onShown();
                            _this3._toggleSafariScrolling();
                            _this3._showingDeferred.resolve()
                        }), (function() {
                            if (_this3._isAnimationPaused) {
                                return
                            }
                            for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
                                args[_key2] = arguments[_key2]
                            }
                            startShowAnimation.call(_this3, ...args);
                            _this3._showAnimationProcessing = true
                        }))
                    }
                    _processShowingHidingCancel(cancelArg, applyFunction, cancelFunction) {
                        if ((0, _type.isPromise)(cancelArg)) {
                            cancelArg.then((shouldCancel => {
                                if (shouldCancel) {
                                    cancelFunction()
                                } else {
                                    applyFunction()
                                }
                            })).catch((() => applyFunction()))
                        } else {
                            cancelArg ? cancelFunction() : applyFunction()
                        }
                    }
                    _show() {
                        this._showingDeferred = (0, _deferred.Deferred)();
                        this._parentHidden = this._isParentHidden();
                        this._showingDeferred.done((() => {
                            delete this._parentHidden
                        }));
                        if (this._parentHidden) {
                            this._isHidden = true;
                            return this._showingDeferred.resolve()
                        }
                        if (this._currentVisible) {
                            return (0, _deferred.Deferred)().resolve().promise()
                        }
                        this._currentVisible = true;
                        if (this._isHidingActionCanceled) {
                            delete this._isHidingActionCanceled;
                            this._showingDeferred.reject()
                        } else {
                            const show = () => {
                                this._stopAnimation();
                                const {
                                    enableBodyScroll: enableBodyScroll
                                } = this.option();
                                this._toggleBodyScroll(enableBodyScroll);
                                this._toggleVisibility(true);
                                this._$content.css("visibility", "hidden");
                                this._$content.toggleClass("dx-state-invisible", false);
                                this._updateZIndexStackPosition(true);
                                this._positionController.openingHandled();
                                this._renderContent();
                                const showingArgs = {
                                    cancel: false
                                };
                                this._actions.onShowing(showingArgs);
                                this._processShowingHidingCancel(showingArgs.cancel, (() => {
                                    this._$content.css("visibility", "");
                                    this._renderVisibility(true);
                                    this._animateShowing()
                                }), (() => {
                                    this._toggleVisibility(false);
                                    this._$content.css("visibility", "");
                                    this._$content.toggleClass("dx-state-invisible", true);
                                    this._isShowingActionCanceled = true;
                                    this._moveFromContainer();
                                    this._toggleBodyScroll(true);
                                    this.option("visible", false);
                                    this._showingDeferred.resolve()
                                }))
                            };
                            if (this.option("templatesRenderAsynchronously")) {
                                this._stopShowTimer();
                                this._asyncShowTimeout = setTimeout(show)
                            } else {
                                show()
                            }
                        }
                        return this._showingDeferred.promise()
                    }
                    _normalizeAnimation(showHideConfig, direction) {
                        if (showHideConfig) {
                            showHideConfig = (0, _extend.extend)({
                                type: "slide",
                                skipElementInitialStyles: true
                            }, showHideConfig);
                            if ((0, _type.isObject)(showHideConfig[direction])) {
                                (0, _extend.extend)(showHideConfig[direction], {
                                    position: this._positionController.position
                                })
                            }
                        }
                        return showHideConfig
                    }
                    _animateHiding() {
                        var _this4 = this;
                        const animation = this._getAnimationConfig() ?? {};
                        const hideAnimation = this._normalizeAnimation(animation.hide, "from");
                        const startHideAnimation = (null === hideAnimation || void 0 === hideAnimation ? void 0 : hideAnimation.start) ?? _common.noop;
                        const completeHideAnimation = (null === hideAnimation || void 0 === hideAnimation ? void 0 : hideAnimation.complete) ?? _common.noop;
                        this._animate(hideAnimation, (function() {
                            var _this4$_actions;
                            _this4._$content.css("pointerEvents", "");
                            _this4._renderVisibility(false);
                            for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
                                args[_key3] = arguments[_key3]
                            }
                            completeHideAnimation.call(_this4, ...args);
                            _this4._hideAnimationProcessing = false;
                            null === (_this4$_actions = _this4._actions) || void 0 === _this4$_actions || _this4$_actions.onHidden();
                            _this4._hidingDeferred.resolve()
                        }), (function() {
                            _this4._$content.css("pointerEvents", "none");
                            for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
                                args[_key4] = arguments[_key4]
                            }
                            startHideAnimation.call(_this4, ...args);
                            _this4._hideAnimationProcessing = true
                        }))
                    }
                    _hide() {
                        if (!this._currentVisible) {
                            return (0, _deferred.Deferred)().resolve().promise()
                        }
                        this._currentVisible = false;
                        this._hidingDeferred = (0, _deferred.Deferred)();
                        const hidingArgs = {
                            cancel: false
                        };
                        if (this._isShowingActionCanceled) {
                            delete this._isShowingActionCanceled;
                            this._hidingDeferred.reject()
                        } else {
                            this._actions.onHiding(hidingArgs);
                            this._toggleSafariScrolling();
                            this._toggleBodyScroll(true);
                            const cancelHide = () => {
                                this._isHidingActionCanceled = true;
                                const {
                                    enableBodyScroll: enableBodyScroll
                                } = this.option();
                                this._toggleBodyScroll(enableBodyScroll);
                                this.option("visible", true);
                                this._hidingDeferred.resolve()
                            };
                            const applyHide = () => {
                                this._forceFocusLost();
                                this._toggleShading(false);
                                this._toggleSubscriptions(false);
                                this._stopShowTimer();
                                this._animateHiding()
                            };
                            this._processShowingHidingCancel(hidingArgs.cancel, applyHide, cancelHide)
                        }
                        return this._hidingDeferred.promise()
                    }
                    _forceFocusLost() {
                        const activeElement = _dom_adapter.default.getActiveElement();
                        const shouldResetActiveElement = !!this._$content.find(activeElement).length;
                        if (shouldResetActiveElement) {
                            _m_dom.default.resetActiveElement()
                        }
                    }
                    _animate(animation, completeCallback, startCallback) {
                        if (animation) {
                            startCallback = startCallback || animation.start || _common.noop;
                            _animation.fx.animate(this._$content, (0, _extend.extend)({}, animation, {
                                start: startCallback,
                                complete: completeCallback
                            }))
                        } else {
                            completeCallback()
                        }
                    }
                    _stopAnimation() {
                        _animation.fx.stop(this._$content, true)
                    }
                    _renderVisibility(visible) {
                        if (visible && this._isParentHidden()) {
                            return
                        }
                        this._currentVisible = visible;
                        this._stopAnimation();
                        if (!visible) {
                            (0, _visibility_change.triggerHidingEvent)(this._$content)
                        }
                        if (visible) {
                            this._checkContainerExists();
                            this._moveToContainer();
                            this._renderGeometry();
                            (0, _visibility_change.triggerShownEvent)(this._$content);
                            (0, _visibility_change.triggerResizeEvent)(this._$content)
                        } else {
                            this._toggleVisibility(visible);
                            this._$content.toggleClass("dx-state-invisible", !visible);
                            this._updateZIndexStackPosition(visible);
                            this._moveFromContainer()
                        }
                        this._toggleShading(visible);
                        this._toggleSubscriptions(visible)
                    }
                    _updateZIndexStackPosition(pushToStack) {
                        const overlayStack = this._overlayStack();
                        const index = overlayStack.indexOf(this);
                        if (pushToStack) {
                            if (-1 === index) {
                                this._zIndex = zIndexPool.create(this._zIndexInitValue());
                                overlayStack.push(this)
                            }
                            this._$wrapper.css("zIndex", this._zIndex);
                            this._$content.css("zIndex", this._zIndex)
                        } else if (-1 !== index) {
                            overlayStack.splice(index, 1);
                            zIndexPool.remove(this._zIndex)
                        }
                    }
                    _toggleShading(visible) {
                        const {
                            shading: shading,
                            shadingColor: shadingColor
                        } = this.option();
                        this._$wrapper.toggleClass("dx-overlay-shader", visible && shading);
                        this._$wrapper.css("backgroundColor", shading ? shadingColor : "");
                        this._toggleTabTerminator(visible && shading)
                    }
                    _initTabTerminatorHandler() {
                        var _this5 = this;
                        this._proxiedTabTerminatorHandler = function() {
                            _this5._tabKeyHandler(...arguments)
                        }
                    }
                    _toggleTabTerminator(enabled) {
                        const {
                            _loopFocus: _loopFocus
                        } = this.option();
                        const eventName = (0, _index.addNamespace)("keydown", this.NAME);
                        if (_loopFocus || enabled) {
                            _events_engine.default.on(_dom_adapter.default.getDocument(), eventName, this._proxiedTabTerminatorHandler)
                        } else {
                            this._destroyTabTerminator()
                        }
                    }
                    _destroyTabTerminator() {
                        const eventName = (0, _index.addNamespace)("keydown", this.NAME);
                        _events_engine.default.off(_dom_adapter.default.getDocument(), eventName, this._proxiedTabTerminatorHandler)
                    }
                    _findTabbableBounds() {
                        const $elements = this._$wrapper.find("*");
                        const elementsCount = $elements.length - 1;
                        let first = null;
                        let last = null;
                        for (let i = 0; i <= elementsCount; i += 1) {
                            if (!first && $elements.eq(i).is(_selectors.tabbable)) {
                                first = $elements.eq(i)
                            }
                            if (!last && $elements.eq(elementsCount - i).is(_selectors.tabbable)) {
                                last = $elements.eq(elementsCount - i)
                            }
                            if (first && last) {
                                break
                            }
                        }
                        return {
                            first: first,
                            last: last
                        }
                    }
                    _tabKeyHandler(e) {
                        if ("tab" !== (0, _index.normalizeKeyName)(e) || !this._isTopOverlay()) {
                            return
                        }
                        const wrapper = this._$wrapper.get(0);
                        const activeElement = _dom_adapter.default.getActiveElement(wrapper);
                        const {
                            first: $firstTabbable,
                            last: $lastTabbable
                        } = this._findTabbableBounds();
                        const isTabOnLast = !e.shiftKey && activeElement === (null === $lastTabbable || void 0 === $lastTabbable ? void 0 : $lastTabbable.get(0));
                        const isShiftTabOnFirst = e.shiftKey && activeElement === (null === $firstTabbable || void 0 === $firstTabbable ? void 0 : $firstTabbable.get(0));
                        const isOutsideTarget = !_m_dom.default.contains(wrapper, activeElement);
                        const shouldPreventDefault = isTabOnLast || isShiftTabOnFirst || isOutsideTarget;
                        if (shouldPreventDefault) {
                            e.preventDefault();
                            const $focusElement = e.shiftKey ? $lastTabbable : $firstTabbable;
                            _events_engine.default.trigger($focusElement, "focusin");
                            _events_engine.default.trigger($focusElement, "focus")
                        }
                    }
                    _toggleSubscriptions(enabled) {
                        if (_m_window.default.hasWindow()) {
                            this._toggleHideTopOverlayCallback(enabled);
                            this._toggleHideOnParentsScrollSubscription(enabled)
                        }
                    }
                    _toggleHideTopOverlayCallback(subscribe) {
                        if (!this._hideTopOverlayHandler) {
                            return
                        }
                        if (subscribe) {
                            _hide_callback.hideCallback.add(this._hideTopOverlayHandler)
                        } else {
                            _hide_callback.hideCallback.remove(this._hideTopOverlayHandler)
                        }
                    }
                    _toggleHideOnParentsScrollSubscription(needSubscribe) {
                        const scrollEvent = (0, _index.addNamespace)("scroll", this.NAME);
                        const {
                            prevTargets: prevTargets,
                            handler: handler
                        } = this._parentsScrollSubscriptionInfo ?? {};
                        _events_engine.default.off(prevTargets, scrollEvent, handler);
                        const hideOnScroll = this.option("hideOnParentScroll");
                        if (needSubscribe && hideOnScroll) {
                            let $parents = this._getHideOnParentScrollTarget().parents();
                            if ("desktop" === _devices.default.real().deviceType) {
                                $parents = $parents.add(window)
                            }
                            _events_engine.default.on($parents, scrollEvent, handler);
                            this._parentsScrollSubscriptionInfo.prevTargets = $parents
                        }
                    }
                    _hideOnParentsScrollHandler(e) {
                        let hideHandled = false;
                        const hideOnScroll = this.option("hideOnParentScroll");
                        if ((0, _type.isFunction)(hideOnScroll)) {
                            hideHandled = hideOnScroll(e)
                        }
                        if (!hideHandled && !this._showAnimationProcessing) {
                            this.hide()
                        }
                    }
                    _getHideOnParentScrollTarget() {
                        const {
                            _hideOnParentScrollTarget: _hideOnParentScrollTarget
                        } = this.option();
                        const $hideOnParentScrollTarget = (0, _renderer.default)(_hideOnParentScrollTarget);
                        if ($hideOnParentScrollTarget.length) {
                            return $hideOnParentScrollTarget
                        }
                        return this._$wrapper
                    }
                    _render() {
                        super._render();
                        this._appendContentToElement();
                        this._renderVisibilityAnimate(this.option("visible"))
                    }
                    _appendContentToElement() {
                        if (!this._$content.parent().is(this.$element())) {
                            this._$content.appendTo(this.$element())
                        }
                    }
                    _renderContent() {
                        const shouldDeferRendering = !this._currentVisible && this.option("deferRendering");
                        const isParentHidden = this.option("visible") && this._isParentHidden();
                        if (isParentHidden) {
                            this._isHidden = true;
                            return
                        }
                        if (this._contentAlreadyRendered || shouldDeferRendering) {
                            return
                        }
                        this._contentAlreadyRendered = true;
                        this._appendContentToElement();
                        super._renderContent()
                    }
                    _isParentHidden() {
                        if (!this.option("_checkParentVisibility")) {
                            return false
                        }
                        if (void 0 !== this._parentHidden) {
                            return this._parentHidden
                        }
                        const $parent = this.$element().parent();
                        if ($parent.is(":visible")) {
                            return false
                        }
                        let isHidden = false;
                        $parent.add($parent.parents()).each(((index, element) => {
                            const $element = (0, _renderer.default)(element);
                            if ("none" === $element.css("display")) {
                                isHidden = true;
                                return false
                            }
                        }));
                        return isHidden || !_dom_adapter.default.getBody().contains($parent.get(0))
                    }
                    _renderContentImpl() {
                        const whenContentRendered = (0, _deferred.Deferred)();
                        const contentTemplateOption = this.option("contentTemplate");
                        const contentTemplate = this._getTemplate(contentTemplateOption);
                        const transclude = this._templateManager.anonymousTemplateName === contentTemplateOption;
                        null === contentTemplate || void 0 === contentTemplate || contentTemplate.render({
                            container: (0, _element.getPublicElement)(this.$content()),
                            noModel: true,
                            transclude: transclude,
                            onRendered: () => {
                                whenContentRendered.resolve();
                                if (this.option("templatesRenderAsynchronously")) {
                                    this._dimensionChanged()
                                }
                            }
                        });
                        const {
                            preventScrollEvents: preventScrollEvents
                        } = this.option();
                        this._toggleWrapperScrollEventsSubscription(preventScrollEvents);
                        whenContentRendered.done((() => {
                            if (this.option("visible")) {
                                this._moveToContainer()
                            }
                        }));
                        return whenContentRendered.promise()
                    }
                    _getPositionControllerConfig() {
                        const {
                            container: container,
                            visualContainer: visualContainer,
                            _fixWrapperPosition: _fixWrapperPosition,
                            restorePosition: restorePosition,
                            _skipContentPositioning: _skipContentPositioning
                        } = this.option();
                        return {
                            container: container,
                            visualContainer: visualContainer,
                            $root: this.$element(),
                            $content: this._$content,
                            $wrapper: this._$wrapper,
                            onPositioned: this._actions.onPositioned,
                            onVisualPositionChanged: this._actions.onVisualPositionChanged,
                            restorePosition: restorePosition,
                            _fixWrapperPosition: _fixWrapperPosition,
                            _skipContentPositioning: _skipContentPositioning
                        }
                    }
                    _initPositionController() {
                        this._positionController = new _m_overlay_position_controller.OverlayPositionController(this._getPositionControllerConfig())
                    }
                    _toggleWrapperScrollEventsSubscription(enabled) {
                        const eventName = (0, _index.addNamespace)(_drag.move, this.NAME);
                        _events_engine.default.off(this._$wrapper, eventName);
                        if (enabled) {
                            _events_engine.default.on(this._$wrapper, eventName, {
                                validate: () => true,
                                getDirection: () => "both",
                                _toggleGestureCover(toggle) {
                                    if (!toggle) {
                                        this._toggleGestureCoverImpl(toggle)
                                    }
                                },
                                _clearSelection: _common.noop,
                                isNative: true
                            }, (e => {
                                const {
                                    originalEvent: originalEvent
                                } = e.originalEvent;
                                const {
                                    type: type
                                } = originalEvent || {};
                                const isWheel = "wheel" === type;
                                const isMouseMove = "mousemove" === type;
                                const isScrollByWheel = isWheel && !(0, _index.isCommandKeyPressed)(e);
                                e._cancelPreventDefault = true;
                                if (originalEvent && false !== e.cancelable && (!isMouseMove && !isWheel || isScrollByWheel)) {
                                    e.preventDefault()
                                }
                            }))
                        }
                    }
                    _moveFromContainer() {
                        this._$content.appendTo(this.$element());
                        this._$wrapper.detach()
                    }
                    _checkContainerExists() {
                        const $wrapperContainer = this._positionController.$container;
                        if (void 0 === $wrapperContainer) {
                            return
                        }
                        const containerExists = $wrapperContainer.length > 0;
                        if (!containerExists) {
                            _ui.default.log("W1021", this.NAME)
                        }
                    }
                    _moveToContainer() {
                        const $wrapperContainer = this._positionController.$container;
                        this._$wrapper.appendTo($wrapperContainer);
                        this._$content.appendTo(this._$wrapper)
                    }
                    _renderGeometry(options) {
                        const {
                            visible: visible
                        } = this.option();
                        if (visible && _m_window.default.hasWindow()) {
                            this._stopAnimation();
                            this._renderGeometryImpl()
                        }
                    }
                    _renderGeometryImpl() {
                        this._positionController.updatePosition(this._getOptionValue("position"));
                        this._renderWrapper();
                        this._renderDimensions();
                        this._renderPosition()
                    }
                    _renderPosition(state) {
                        this._positionController.positionContent()
                    }
                    _isAllWindowCovered() {
                        const {
                            shading: shading
                        } = this.option();
                        return (0, _type.isWindow)(this._positionController.$visualContainer.get(0)) && shading
                    }
                    _toggleSafariScrolling() {
                        const visible = this.option("visible");
                        const $body = (0, _renderer.default)(_dom_adapter.default.getBody());
                        const isIosSafari = "ios" === _devices.default.real().platform && _browser.default.safari;
                        const isAllWindowCovered = this._isAllWindowCovered();
                        const isScrollingPrevented = $body.hasClass("dx-prevent-safari-scrolling");
                        const shouldPreventScrolling = !isScrollingPrevented && visible && isAllWindowCovered;
                        const shouldEnableScrolling = isScrollingPrevented && (!visible || !isAllWindowCovered || this._disposed);
                        if (isIosSafari) {
                            if (shouldEnableScrolling) {
                                $body.removeClass("dx-prevent-safari-scrolling");
                                window.scrollTo(0, this._cachedBodyScrollTop);
                                this._cachedBodyScrollTop = void 0
                            } else if (shouldPreventScrolling) {
                                this._cachedBodyScrollTop = window.pageYOffset;
                                $body.addClass("dx-prevent-safari-scrolling")
                            }
                        }
                    }
                    _renderWrapper() {
                        this._positionController.styleWrapperPosition();
                        this._renderWrapperDimensions();
                        this._positionController.positionWrapper()
                    }
                    _renderWrapperDimensions() {
                        const {
                            $visualContainer: $visualContainer
                        } = this._positionController;
                        const documentElement = _dom_adapter.default.getDocumentElement();
                        const isVisualContainerWindow = (0, _type.isWindow)($visualContainer.get(0));
                        const wrapperWidth = isVisualContainerWindow ? documentElement.clientWidth : (0, _size.getOuterWidth)($visualContainer);
                        const wrapperHeight = isVisualContainerWindow ? window.innerHeight : (0, _size.getOuterHeight)($visualContainer);
                        this._$wrapper.css({
                            width: wrapperWidth,
                            height: wrapperHeight
                        })
                    }
                    _renderDimensions() {
                        const content = this._$content.get(0);
                        this._$content.css({
                            minWidth: this._getOptionValue("minWidth", content),
                            maxWidth: this._getOptionValue("maxWidth", content),
                            minHeight: this._getOptionValue("minHeight", content),
                            maxHeight: this._getOptionValue("maxHeight", content),
                            width: this._getOptionValue("width", content),
                            height: this._getOptionValue("height", content)
                        })
                    }
                    _focusTarget() {
                        return this._$content
                    }
                    _attachKeyboardEvents() {
                        this._keyboardListenerId = _short.keyboard.on(this._$content, null, (options => this._keyboardHandler(options)))
                    }
                    _keyboardHandler(options) {
                        const e = options.originalEvent;
                        const $target = (0, _renderer.default)(e.target);
                        if ($target.is(this._$content) || !this.option("ignoreChildEvents")) {
                            super._keyboardHandler(...arguments)
                        }
                    }
                    _isVisible() {
                        const {
                            visible: visible
                        } = this.option();
                        return visible
                    }
                    _visibilityChanged(visible) {
                        if (visible) {
                            if (this.option("visible")) {
                                this._renderVisibilityAnimate(visible)
                            }
                        } else {
                            this._renderVisibilityAnimate(visible)
                        }
                    }
                    _dimensionChanged() {
                        this._renderGeometry()
                    }
                    _clean() {
                        const {
                            isRenovated: isRenovated
                        } = this.option();
                        if (!this._contentAlreadyRendered && !isRenovated) {
                            this.$content().empty()
                        }
                        this._renderVisibility(false);
                        this._stopShowTimer();
                        this._cleanFocusState()
                    }
                    _stopShowTimer() {
                        if (this._asyncShowTimeout) {
                            clearTimeout(this._asyncShowTimeout)
                        }
                        this._asyncShowTimeout = null
                    }
                    _dispose() {
                        _animation.fx.stop(this._$content, false);
                        this._toggleViewPortSubscription(false);
                        this._toggleSubscriptions(false);
                        this._updateZIndexStackPosition(false);
                        this._actions = null;
                        this._parentsScrollSubscriptionInfo = null;
                        super._dispose();
                        this._toggleSafariScrolling();
                        this.option("visible") && zIndexPool.remove(this._zIndex);
                        this._$wrapper.remove();
                        this._$content.remove();
                        this._destroyTabTerminator()
                    }
                    _toggleRTLDirection(rtl) {
                        this._$content.toggleClass("dx-rtl", rtl)
                    }
                    _optionChanged(args) {
                        const {
                            value: value,
                            name: name
                        } = args;
                        if (this._getActionsList().includes(name)) {
                            this._initActions();
                            return
                        }
                        switch (name) {
                            case "animation":
                            case "hideOnOutsideClick":
                            case "propagateOutsideClick":
                                break;
                            case "_loopFocus":
                            case "shading": {
                                const {
                                    visible: visible
                                } = this.option();
                                this._toggleShading(visible);
                                this._toggleSafariScrolling();
                                break
                            }
                            case "shadingColor": {
                                const {
                                    visible: visible
                                } = this.option();
                                this._toggleShading(visible);
                                break
                            }
                            case "width":
                            case "height":
                            case "minWidth":
                            case "maxWidth":
                            case "minHeight":
                            case "maxHeight":
                                this._renderGeometry();
                                break;
                            case "position":
                                this._positionController.updatePosition(this.option("position"));
                                this._positionController.restorePositionOnNextRender(true);
                                this._renderGeometry();
                                this._toggleSafariScrolling();
                                break;
                            case "visible":
                                this._renderVisibilityAnimate(value).done((() => {
                                    var _this$_animateDeferre;
                                    return null === (_this$_animateDeferre = this._animateDeferred) || void 0 === _this$_animateDeferre ? void 0 : _this$_animateDeferre.resolveWith(this)
                                })).fail((() => {
                                    var _this$_animateDeferre2;
                                    return null === (_this$_animateDeferre2 = this._animateDeferred) || void 0 === _this$_animateDeferre2 ? void 0 : _this$_animateDeferre2.reject()
                                }));
                                break;
                            case "container":
                                this._positionController.updateContainer(value);
                                this._invalidate();
                                this._toggleSafariScrolling();
                                break;
                            case "visualContainer":
                                this._positionController.updateVisualContainer(value);
                                this._renderWrapper();
                                this._toggleSafariScrolling();
                                break;
                            case "innerOverlay":
                                this._initInnerOverlayClass();
                                break;
                            case "deferRendering":
                            case "contentTemplate":
                                this._contentAlreadyRendered = false;
                                this._clean();
                                this._invalidate();
                                break;
                            case "hideTopOverlayHandler":
                                this._toggleHideTopOverlayCallback(false);
                                this._initHideTopOverlayHandler(value);
                                this._toggleHideTopOverlayCallback(this.option("visible"));
                                break;
                            case "hideOnParentScroll":
                            case "_hideOnParentScrollTarget": {
                                const {
                                    visible: visible
                                } = this.option();
                                this._toggleHideOnParentsScrollSubscription(visible);
                                break
                            }
                            case "rtlEnabled":
                                this._contentAlreadyRendered = false;
                                super._optionChanged(args);
                                break;
                            case "_fixWrapperPosition":
                                this._positionController.fixWrapperPosition = value;
                                break;
                            case "wrapperAttr":
                                this._renderWrapperAttributes();
                                break;
                            case "restorePosition":
                                this._positionController.restorePosition = value;
                                break;
                            case "preventScrollEvents":
                                this._logDeprecatedPreventScrollEventsInfo();
                                this._toggleWrapperScrollEventsSubscription(value);
                                break;
                            default:
                                super._optionChanged(args)
                        }
                    }
                    toggle(showing) {
                        showing = void 0 === showing ? !this.option("visible") : showing;
                        const result = (0, _deferred.Deferred)();
                        if (showing === this.option("visible")) {
                            return result.resolveWith(this, [showing]).promise()
                        }
                        const animateDeferred = (0, _deferred.Deferred)();
                        this._animateDeferred = animateDeferred;
                        this.option("visible", showing);
                        animateDeferred.promise().done((() => {
                            delete this._animateDeferred;
                            result.resolveWith(this, [this.option("visible")])
                        })).fail((() => {
                            delete this._animateDeferred;
                            result.reject()
                        }));
                        return result.promise()
                    }
                    $content() {
                        return this._$content
                    }
                    show() {
                        return this.toggle(true)
                    }
                    hide() {
                        return this.toggle(false)
                    }
                    content() {
                        return (0, _element.getPublicElement)(this._$content)
                    }
                    repaint() {
                        if (this._contentAlreadyRendered) {
                            this._positionController.restorePositionOnNextRender(true);
                            this._renderGeometry({
                                forceStopAnimation: true
                            });
                            (0, _visibility_change.triggerResizeEvent)(this._$content)
                        } else {
                            super.repaint()
                        }
                    }
                }
                Overlay.baseZIndex = zIndex => zIndexPool.base(zIndex);
                (0, _component_registrator.default)("dxOverlay", Overlay);
                exports.default = Overlay
            },
        4983:
            /*!****************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/ui/overlay/m_overlay_position_controller.js ***!
              \****************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.OverlayPositionController = exports.OVERLAY_POSITION_ALIASES = void 0;
                var _position = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/animation/position */ 3030));
                var _translator = __webpack_require__( /*! ../../../common/core/animation/translator */ 88603);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553));
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576);
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528);
                var _swatch_container = _interopRequireDefault(__webpack_require__( /*! ../../../ui/widget/swatch_container */ 5080));
                var _m_window = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/m_window */ 14470));

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const window = _m_window.default.getWindow();
                const OVERLAY_POSITION_ALIASES = exports.OVERLAY_POSITION_ALIASES = {
                    top: {
                        my: "top center",
                        at: "top center"
                    },
                    bottom: {
                        my: "bottom center",
                        at: "bottom center"
                    },
                    right: {
                        my: "right center",
                        at: "right center"
                    },
                    left: {
                        my: "left center",
                        at: "left center"
                    },
                    center: {
                        my: "center",
                        at: "center"
                    },
                    "right bottom": {
                        my: "right bottom",
                        at: "right bottom"
                    },
                    "right top": {
                        my: "right top",
                        at: "right top"
                    },
                    "left bottom": {
                        my: "left bottom",
                        at: "left bottom"
                    },
                    "left top": {
                        my: "left top",
                        at: "left top"
                    }
                };
                const OVERLAY_DEFAULT_BOUNDARY_OFFSET = {
                    h: 0,
                    v: 0
                };
                exports.OverlayPositionController = class {
                    constructor(_ref) {
                        let {
                            position: position,
                            container: container,
                            visualContainer: visualContainer,
                            $root: $root,
                            $content: $content,
                            $wrapper: $wrapper,
                            onPositioned: onPositioned,
                            onVisualPositionChanged: onVisualPositionChanged,
                            restorePosition: restorePosition,
                            _fixWrapperPosition: _fixWrapperPosition,
                            _skipContentPositioning: _skipContentPositioning
                        } = _ref;
                        this._props = {
                            position: position,
                            container: container,
                            visualContainer: visualContainer,
                            restorePosition: restorePosition,
                            onPositioned: onPositioned,
                            onVisualPositionChanged: onVisualPositionChanged,
                            _fixWrapperPosition: _fixWrapperPosition,
                            _skipContentPositioning: _skipContentPositioning
                        };
                        this._$root = $root;
                        this._$content = $content;
                        this._$wrapper = $wrapper;
                        this._$markupContainer = void 0;
                        this._$visualContainer = void 0;
                        this._shouldRenderContentInitialPosition = true;
                        this._visualPosition = void 0;
                        this._initialPosition = void 0;
                        this._previousVisualPosition = void 0;
                        this.updateContainer(container);
                        this.updatePosition(position);
                        this.updateVisualContainer(visualContainer)
                    }
                    get $container() {
                        this.updateContainer();
                        return this._$markupContainer
                    }
                    get $visualContainer() {
                        return this._$visualContainer
                    }
                    get position() {
                        return this._position
                    }
                    set fixWrapperPosition(fixWrapperPosition) {
                        this._props._fixWrapperPosition = fixWrapperPosition;
                        this.styleWrapperPosition()
                    }
                    set restorePosition(restorePosition) {
                        this._props.restorePosition = restorePosition
                    }
                    restorePositionOnNextRender(value) {
                        this._shouldRenderContentInitialPosition = value || !this._visualPosition
                    }
                    openingHandled() {
                        const shouldRestorePosition = this._props.restorePosition;
                        this.restorePositionOnNextRender(shouldRestorePosition)
                    }
                    updatePosition(positionProp) {
                        this._props.position = positionProp;
                        this._position = this._normalizePosition(positionProp);
                        this.updateVisualContainer()
                    }
                    updateContainer() {
                        let containerProp = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this._props.container;
                        this._props.container = containerProp;
                        this._$markupContainer = containerProp ? (0, _renderer.default)(containerProp) : _swatch_container.default.getSwatchContainer(this._$root);
                        this.updateVisualContainer(this._props.visualContainer)
                    }
                    updateVisualContainer() {
                        let visualContainer = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this._props.visualContainer;
                        this._props.visualContainer = visualContainer;
                        this._$visualContainer = this._getVisualContainer()
                    }
                    detectVisualPositionChange(event) {
                        this._updateVisualPositionValue();
                        this._raisePositionedEvents(event)
                    }
                    positionContent() {
                        if (this._shouldRenderContentInitialPosition) {
                            this._renderContentInitialPosition()
                        } else {
                            (0, _translator.move)(this._$content, this._visualPosition);
                            this.detectVisualPositionChange()
                        }
                    }
                    positionWrapper() {
                        if (this._$visualContainer) {
                            _position.default.setup(this._$wrapper, {
                                my: "top left",
                                at: "top left",
                                of: this._$visualContainer
                            })
                        }
                    }
                    styleWrapperPosition() {
                        const useFixed = (0, _type.isWindow)(this.$visualContainer.get(0)) || this._props._fixWrapperPosition;
                        const positionStyle = useFixed ? "fixed" : "absolute";
                        this._$wrapper.css("position", positionStyle)
                    }
                    _updateVisualPositionValue() {
                        this._previousVisualPosition = this._visualPosition;
                        this._visualPosition = (0, _translator.locate)(this._$content)
                    }
                    _renderContentInitialPosition() {
                        this._renderBoundaryOffset();
                        (0, _translator.resetPosition)(this._$content);
                        const wrapperOverflow = this._$wrapper.css("overflow");
                        this._$wrapper.css("overflow", "hidden");
                        if (!this._props._skipContentPositioning) {
                            const resultPosition = _position.default.setup(this._$content, this._position);
                            this._initialPosition = resultPosition
                        }
                        this._$wrapper.css("overflow", wrapperOverflow);
                        this.detectVisualPositionChange()
                    }
                    _raisePositionedEvents(event) {
                        const previousPosition = this._previousVisualPosition;
                        const newPosition = this._visualPosition;
                        const isVisualPositionChanged = (null === previousPosition || void 0 === previousPosition ? void 0 : previousPosition.top) !== newPosition.top || (null === previousPosition || void 0 === previousPosition ? void 0 : previousPosition.left) !== newPosition.left;
                        if (isVisualPositionChanged) {
                            this._props.onVisualPositionChanged({
                                previousPosition: previousPosition,
                                position: newPosition,
                                event: event
                            })
                        }
                        this._props.onPositioned({
                            position: this._initialPosition
                        })
                    }
                    _renderBoundaryOffset() {
                        const boundaryOffset = this._position ?? {
                            boundaryOffset: OVERLAY_DEFAULT_BOUNDARY_OFFSET
                        };
                        this._$content.css("margin", `${boundaryOffset.v}px ${boundaryOffset.h}px`)
                    }
                    _getVisualContainer() {
                        var _this$_props$position, _this$_props$position2;
                        const containerProp = this._props.container;
                        const visualContainerProp = this._props.visualContainer;
                        const positionOf = (0, _type.isEvent)(null === (_this$_props$position = this._props.position) || void 0 === _this$_props$position ? void 0 : _this$_props$position.of) ? this._props.position.of.target : null === (_this$_props$position2 = this._props.position) || void 0 === _this$_props$position2 ? void 0 : _this$_props$position2.of;
                        if (visualContainerProp) {
                            return (0, _renderer.default)(visualContainerProp)
                        }
                        if (containerProp) {
                            return (0, _renderer.default)(containerProp)
                        }
                        if (positionOf) {
                            return (0, _renderer.default)(positionOf)
                        }
                        return (0, _renderer.default)(window)
                    }
                    _normalizePosition(positionProp) {
                        const defaultPositionConfig = {
                            boundaryOffset: OVERLAY_DEFAULT_BOUNDARY_OFFSET
                        };
                        if ((0, _type.isDefined)(positionProp)) {
                            return (0, _extend.extend)(true, {}, defaultPositionConfig, this._positionToObject(positionProp))
                        }
                        return defaultPositionConfig
                    }
                    _positionToObject(position) {
                        if ((0, _type.isString)(position)) {
                            return (0, _extend.extend)({}, OVERLAY_POSITION_ALIASES[position])
                        }
                        return position
                    }
                }
            },
        84893:
            /*!********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/ui/overlay/m_z_index.js ***!
              \********************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.remove = exports.isLastZIndexInStack = exports.create = exports.clearStack = exports.base = void 0;
                var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781);
                let baseZIndex = 1500;
                let zIndexStack = [];
                exports.base = ZIndex => {
                    baseZIndex = (0, _common.ensureDefined)(ZIndex, baseZIndex);
                    return baseZIndex
                };
                exports.create = function() {
                    let baseIndex = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : baseZIndex;
                    const {
                        length: length
                    } = zIndexStack;
                    const index = (length ? zIndexStack[length - 1] : baseIndex) + 1;
                    zIndexStack.push(index);
                    return index
                };
                exports.remove = zIndex => {
                    const position = zIndexStack.indexOf(zIndex);
                    if (position >= 0) {
                        zIndexStack.splice(position, 1)
                    }
                };
                exports.isLastZIndexInStack = zIndex => zIndexStack.length && zIndexStack[zIndexStack.length - 1] === zIndex;
                exports.clearStack = () => {
                    zIndexStack = []
                }
            },
        21363:
            /*!*********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/ui/scroll_view/consts.js ***!
              \*********************************************************************************/
            function(__unused_webpack_module, exports) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.VALIDATE_WHEEL_TIMEOUT = exports.TopPocketState = exports.ShowScrollbarMode = exports.SCROLL_LINE_HEIGHT = exports.SCROLLVIEW_TOP_POCKET_CLASS = exports.SCROLLVIEW_REACHBOTTOM_TEXT_CLASS = exports.SCROLLVIEW_REACHBOTTOM_INDICATOR_CLASS = exports.SCROLLVIEW_REACHBOTTOM_CLASS = exports.SCROLLVIEW_PULLDOWN_VISIBLE_TEXT_CLASS = exports.SCROLLVIEW_PULLDOWN_TEXT_CLASS = exports.SCROLLVIEW_PULLDOWN_READY_CLASS = exports.SCROLLVIEW_PULLDOWN_LOADING_CLASS = exports.SCROLLVIEW_PULLDOWN_INDICATOR_CLASS = exports.SCROLLVIEW_PULLDOWN_IMAGE_CLASS = exports.SCROLLVIEW_PULLDOWN = exports.SCROLLVIEW_CONTENT_CLASS = exports.SCROLLVIEW_BOTTOM_POCKET_CLASS = exports.SCROLLABLE_WRAPPER_CLASS = exports.SCROLLABLE_SIMULATED_CLASS = exports.SCROLLABLE_SCROLL_CONTENT_CLASS = exports.SCROLLABLE_SCROLL_CLASS = exports.SCROLLABLE_SCROLLBAR_SIMULATED = exports.SCROLLABLE_SCROLLBAR_CLASS = exports.SCROLLABLE_SCROLLBAR_ACTIVE_CLASS = exports.SCROLLABLE_SCROLLBARS_HIDDEN = exports.SCROLLABLE_SCROLLBARS_ALWAYSVISIBLE = exports.SCROLLABLE_DISABLED_CLASS = exports.SCROLLABLE_CONTENT_CLASS = exports.SCROLLABLE_CONTAINER_CLASS = exports.PULLDOWN_ICON_CLASS = exports.KEY_CODES = exports.HOVER_ENABLED_STATE = exports.HIDE_SCROLLBAR_TIMEOUT = exports.DIRECTION_VERTICAL = exports.DIRECTION_HORIZONTAL = exports.DIRECTION_BOTH = void 0;
                exports.SCROLL_LINE_HEIGHT = 40;
                exports.DIRECTION_VERTICAL = "vertical";
                exports.DIRECTION_HORIZONTAL = "horizontal";
                exports.DIRECTION_BOTH = "both";
                exports.SCROLLABLE_SIMULATED_CLASS = "dx-scrollable-simulated";
                exports.SCROLLABLE_CONTENT_CLASS = "dx-scrollable-content";
                exports.SCROLLABLE_WRAPPER_CLASS = "dx-scrollable-wrapper";
                exports.SCROLLABLE_CONTAINER_CLASS = "dx-scrollable-container";
                exports.SCROLLABLE_DISABLED_CLASS = "dx-scrollable-disabled";
                exports.SCROLLABLE_SCROLLBAR_SIMULATED = "dx-scrollable-scrollbar-simulated";
                exports.SCROLLABLE_SCROLLBARS_HIDDEN = "dx-scrollable-scrollbars-hidden";
                exports.SCROLLABLE_SCROLLBARS_ALWAYSVISIBLE = "dx-scrollable-scrollbars-alwaysvisible";
                exports.SCROLLABLE_SCROLLBAR_CLASS = "dx-scrollable-scrollbar";
                exports.SCROLLABLE_SCROLLBAR_ACTIVE_CLASS = "dx-scrollable-scrollbar-active";
                exports.SCROLLABLE_SCROLL_CLASS = "dx-scrollable-scroll";
                exports.SCROLLABLE_SCROLL_CONTENT_CLASS = "dx-scrollable-scroll-content";
                exports.HOVER_ENABLED_STATE = "dx-scrollbar-hoverable";
                exports.SCROLLVIEW_CONTENT_CLASS = "dx-scrollview-content";
                exports.SCROLLVIEW_TOP_POCKET_CLASS = "dx-scrollview-top-pocket";
                exports.SCROLLVIEW_PULLDOWN = "dx-scrollview-pull-down";
                exports.SCROLLVIEW_PULLDOWN_LOADING_CLASS = "dx-scrollview-pull-down-loading";
                exports.SCROLLVIEW_PULLDOWN_READY_CLASS = "dx-scrollview-pull-down-ready";
                exports.SCROLLVIEW_PULLDOWN_IMAGE_CLASS = "dx-scrollview-pull-down-image";
                exports.SCROLLVIEW_PULLDOWN_INDICATOR_CLASS = "dx-scrollview-pull-down-indicator";
                exports.SCROLLVIEW_PULLDOWN_TEXT_CLASS = "dx-scrollview-pull-down-text";
                exports.SCROLLVIEW_PULLDOWN_VISIBLE_TEXT_CLASS = "dx-scrollview-pull-down-text-visible";
                exports.PULLDOWN_ICON_CLASS = "dx-icon-pulldown";
                exports.SCROLLVIEW_BOTTOM_POCKET_CLASS = "dx-scrollview-bottom-pocket";
                exports.SCROLLVIEW_REACHBOTTOM_CLASS = "dx-scrollview-scrollbottom";
                exports.SCROLLVIEW_REACHBOTTOM_INDICATOR_CLASS = "dx-scrollview-scrollbottom-indicator";
                exports.SCROLLVIEW_REACHBOTTOM_TEXT_CLASS = "dx-scrollview-scrollbottom-text";
                exports.TopPocketState = {
                    STATE_RELEASED: 0,
                    STATE_READY: 1,
                    STATE_REFRESHING: 2,
                    STATE_LOADING: 3,
                    STATE_TOUCHED: 4,
                    STATE_PULLED: 5
                };
                exports.ShowScrollbarMode = {
                    HOVER: "onHover",
                    ALWAYS: "always",
                    NEVER: "never",
                    SCROLL: "onScroll"
                };
                exports.KEY_CODES = {
                    PAGE_UP: "pageUp",
                    PAGE_DOWN: "pageDown",
                    END: "end",
                    HOME: "home",
                    LEFT: "leftArrow",
                    UP: "upArrow",
                    RIGHT: "rightArrow",
                    DOWN: "downArrow"
                };
                exports.VALIDATE_WHEEL_TIMEOUT = 500;
                exports.HIDE_SCROLLBAR_TIMEOUT = 500
            },
        99762:
            /*!*************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/ui/scroll_view/m_animator.js ***!
              \*************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _frame = __webpack_require__( /*! ../../../common/core/animation/frame */ 84096);
                var _class = (e = __webpack_require__( /*! ../../../core/class */ 55620), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                class Animator extends(_class.default.inherit({})) {
                    ctor(strategy) {
                        this._finished = true;
                        this._stopped = false;
                        this._proxiedStepCore = this._stepCore.bind(this)
                    }
                    start() {
                        this._stopped = false;
                        this._finished = false;
                        this._stepCore()
                    }
                    stop() {
                        this._stopped = true;
                        (0, _frame.cancelAnimationFrame)(this._stepAnimationFrame)
                    }
                    _stepCore() {
                        if (this._isStopped()) {
                            this._stop();
                            return
                        }
                        if (this._isFinished()) {
                            this._finished = true;
                            this._complete();
                            return
                        }
                        this._step();
                        this._stepAnimationFrame = (0, _frame.requestAnimationFrame)(this._proxiedStepCore)
                    }
                    _step() {
                        _class.default.abstract()
                    }
                    _isFinished() {}
                    _stop() {}
                    _complete() {}
                    _isStopped() {
                        return this._stopped
                    }
                    inProgress() {
                        return !(this._stopped || this._finished)
                    }
                }
                exports.default = Animator
            },
        97972:
            /*!****************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/ui/scroll_view/m_scroll_view.js ***!
              \****************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = exports.ScrollViewServerSide = exports.ScrollView = void 0;
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/localization/message */ 4671));
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../core/component_registrator */ 92848));
                var _devices = _interopRequireDefault(__webpack_require__( /*! ../../../core/devices */ 65951));
                var _element = __webpack_require__( /*! ../../../core/element */ 61404);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553));
                var _window = __webpack_require__( /*! ../../../core/utils/window */ 3104);
                var _load_indicator = _interopRequireDefault(__webpack_require__( /*! ../../../ui/load_indicator */ 11979));
                var _themes = __webpack_require__( /*! ../../../ui/themes */ 52071);
                var _m_load_panel = _interopRequireDefault(__webpack_require__( /*! ../../ui/m_load_panel */ 14474));
                var _m_scroll_viewNative = _interopRequireDefault(__webpack_require__( /*! ./m_scroll_view.native.pull_down */ 83493));
                var _m_scroll_viewNative2 = _interopRequireDefault(__webpack_require__( /*! ./m_scroll_view.native.swipe_down */ 14286));
                var _m_scroll_view = _interopRequireDefault(__webpack_require__( /*! ./m_scroll_view.simulated */ 94492));
                var _m_scrollable = _interopRequireDefault(__webpack_require__( /*! ./m_scrollable */ 94790));

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }

                function _extends() {
                    return _extends = Object.assign ? Object.assign.bind() : function(n) {
                        for (var e = 1; e < arguments.length; e++) {
                            var t = arguments[e];
                            for (var r in t) {
                                ({}).hasOwnProperty.call(t, r) && (n[r] = t[r])
                            }
                        }
                        return n
                    }, _extends.apply(null, arguments)
                }
                const refreshStrategies = {
                    pullDown: _m_scroll_viewNative.default,
                    swipeDown: _m_scroll_viewNative2.default,
                    simulated: _m_scroll_view.default
                };
                const isServerSide = !(0, _window.hasWindow)();
                class ScrollViewServerSide extends _m_scrollable.default {
                    finishLoading() {}
                    release() {}
                    refresh() {}
                    scrollOffset() {
                        return {
                            top: 0,
                            left: 0
                        }
                    }
                    isBottomReached() {
                        return false
                    }
                    _optionChanged(args) {
                        const {
                            name: name
                        } = args;
                        if ("onUpdated" !== name) {
                            return super._optionChanged.apply(this, arguments)
                        }
                    }
                }
                exports.ScrollViewServerSide = ScrollViewServerSide;
                class ScrollView extends _m_scrollable.default {
                    _getDefaultOptions() {
                        return _extends({}, super._getDefaultOptions(), {
                            pullingDownText: _message.default.format("dxScrollView-pullingDownText"),
                            pulledDownText: _message.default.format("dxScrollView-pulledDownText"),
                            refreshingText: _message.default.format("dxScrollView-refreshingText"),
                            reachBottomText: _message.default.format("dxScrollView-reachBottomText"),
                            onPullDown: null,
                            onReachBottom: null,
                            refreshStrategy: "pullDown"
                        })
                    }
                    _defaultOptionsRules() {
                        return super._defaultOptionsRules().concat([{
                            device() {
                                const realDevice = _devices.default.real();
                                return "android" === realDevice.platform
                            },
                            options: {
                                refreshStrategy: "swipeDown"
                            }
                        }, {
                            device: () => (0, _themes.isMaterialBased)(),
                            options: {
                                pullingDownText: "",
                                pulledDownText: "",
                                refreshingText: "",
                                reachBottomText: ""
                            }
                        }])
                    }
                    _init() {
                        super._init();
                        this._loadingIndicatorEnabled = true
                    }
                    _initScrollableMarkup() {
                        super._initScrollableMarkup();
                        this.$element().addClass("dx-scrollview");
                        this._initContent();
                        this._initTopPocket();
                        this._initBottomPocket();
                        this._initLoadPanel()
                    }
                    _initContent() {
                        const $content = (0, _renderer.default)("<div>").addClass("dx-scrollview-content");
                        this._$content.wrapInner($content)
                    }
                    _initTopPocket() {
                        this._$topPocket = (0, _renderer.default)("<div>").addClass("dx-scrollview-top-pocket");
                        this._$pullDown = (0, _renderer.default)("<div>").addClass("dx-scrollview-pull-down");
                        this._$topPocket.append(this._$pullDown);
                        this._$content.prepend(this._$topPocket)
                    }
                    _initBottomPocket() {
                        this._$bottomPocket = (0, _renderer.default)("<div>").addClass("dx-scrollview-bottom-pocket");
                        this._$reachBottom = (0, _renderer.default)("<div>").addClass("dx-scrollview-scrollbottom");
                        const $loadContainer = (0, _renderer.default)("<div>").addClass("dx-scrollview-scrollbottom-indicator");
                        const $loadIndicator = new _load_indicator.default((0, _renderer.default)("<div>")).$element();
                        this._$reachBottomText = (0, _renderer.default)("<div>").addClass("dx-scrollview-scrollbottom-text");
                        this._updateReachBottomText();
                        this._$reachBottom.append($loadContainer.append($loadIndicator)).append(this._$reachBottomText);
                        this._$bottomPocket.append(this._$reachBottom);
                        this._$content.append(this._$bottomPocket)
                    }
                    _initLoadPanel() {
                        const $loadPanelElement = (0, _renderer.default)("<div>").addClass("dx-scrollview-loadpanel").appendTo(this.$element());
                        const {
                            refreshingText: refreshingText
                        } = this.option();
                        this._loadPanel = this._createComponent($loadPanelElement, _m_load_panel.default, {
                            shading: false,
                            delay: 400,
                            message: refreshingText,
                            position: {
                                of: this.$element()
                            }
                        })
                    }
                    _updateReachBottomText() {
                        const {
                            reachBottomText: reachBottomText
                        } = this.option();
                        this._$reachBottomText.text(reachBottomText)
                    }
                    _createStrategy() {
                        const {
                            useNative: useNative,
                            refreshStrategy: refreshStrategy
                        } = this.option();
                        const strategyName = useNative ? refreshStrategy : "simulated";
                        const strategyClass = refreshStrategies[strategyName];
                        this._strategy = new strategyClass(this);
                        this._strategy.pullDownCallbacks.add(this._pullDownHandler.bind(this));
                        this._strategy.releaseCallbacks.add(this._releaseHandler.bind(this));
                        this._strategy.reachBottomCallbacks.add(this._reachBottomHandler.bind(this))
                    }
                    _createActions() {
                        super._createActions();
                        this._pullDownAction = this._createActionByOption("onPullDown");
                        this._reachBottomAction = this._createActionByOption("onReachBottom");
                        this._tryRefreshPocketState()
                    }
                    _tryRefreshPocketState() {
                        this._pullDownEnable(this.hasActionSubscription("onPullDown"));
                        this._reachBottomEnable(this.hasActionSubscription("onReachBottom"))
                    }
                    on(eventName) {
                        const result = super.on.apply(this, arguments);
                        if ("pullDown" === eventName || "reachBottom" === eventName) {
                            this._tryRefreshPocketState()
                        }
                        return result
                    }
                    _pullDownEnable(enabled) {
                        if (0 === arguments.length) {
                            return this._pullDownEnabled
                        }
                        if (this._$pullDown && this._strategy) {
                            this._$pullDown.toggle(enabled);
                            this._strategy.pullDownEnable(enabled);
                            this._pullDownEnabled = enabled
                        }
                    }
                    _reachBottomEnable(enabled) {
                        if (0 === arguments.length) {
                            return this._reachBottomEnabled
                        }
                        if (this._$reachBottom && this._strategy) {
                            this._$reachBottom.toggle(enabled);
                            this._strategy.reachBottomEnable(enabled);
                            this._reachBottomEnabled = enabled
                        }
                    }
                    _pullDownHandler() {
                        this._loadingIndicator(false);
                        this._pullDownLoading()
                    }
                    _loadingIndicator(value) {
                        if (arguments.length < 1) {
                            return this._loadingIndicatorEnabled
                        }
                        this._loadingIndicatorEnabled = value
                    }
                    _pullDownLoading() {
                        var _this$_pullDownAction;
                        this.startLoading();
                        null === (_this$_pullDownAction = this._pullDownAction) || void 0 === _this$_pullDownAction || _this$_pullDownAction.call(this)
                    }
                    _reachBottomHandler() {
                        this._loadingIndicator(false);
                        this._reachBottomLoading()
                    }
                    _reachBottomLoading() {
                        var _this$_reachBottomAct;
                        this.startLoading();
                        null === (_this$_reachBottomAct = this._reachBottomAction) || void 0 === _this$_reachBottomAct || _this$_reachBottomAct.call(this)
                    }
                    _releaseHandler() {
                        this.finishLoading();
                        this._loadingIndicator(true)
                    }
                    _optionChanged(args) {
                        switch (args.name) {
                            case "onPullDown":
                            case "onReachBottom":
                                this._createActions();
                                break;
                            case "pullingDownText":
                            case "pulledDownText":
                            case "refreshingText":
                            case "refreshStrategy":
                                this._invalidate();
                                break;
                            case "reachBottomText":
                                this._updateReachBottomText();
                                break;
                            default:
                                super._optionChanged(args)
                        }
                    }
                    content() {
                        return (0, _element.getPublicElement)(this._$content.children().eq(1))
                    }
                    release(preventReachBottom) {
                        if (void 0 !== preventReachBottom) {
                            this.toggleLoading(!preventReachBottom)
                        }
                        return this._strategy.release()
                    }
                    toggleLoading(showOrHide) {
                        this._reachBottomEnable(showOrHide)
                    }
                    refresh() {
                        if (!this.hasActionSubscription("onPullDown")) {
                            return
                        }
                        this._strategy.pendingRelease();
                        this._pullDownLoading()
                    }
                    startLoading() {
                        if (this._loadingIndicator() && this.$element().is(":visible")) {
                            this._loadPanel.show()
                        }
                        this._lock()
                    }
                    finishLoading() {
                        this._loadPanel.hide();
                        this._unlock()
                    }
                    isBottomReached() {
                        return this._strategy.isBottomReached()
                    }
                    _dispose() {
                        this._strategy.dispose();
                        super._dispose();
                        if (this._loadPanel) {
                            this._loadPanel.$element().remove()
                        }
                    }
                }
                exports.ScrollView = ScrollView;
                (0, _component_registrator.default)("dxScrollView", isServerSide ? ScrollViewServerSide : ScrollView);
                exports.default = isServerSide ? ScrollViewServerSide : ScrollView
            },
        83493:
            /*!*********************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/ui/scroll_view/m_scroll_view.native.pull_down.js ***!
              \*********************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _translator = __webpack_require__( /*! ../../../common/core/animation/translator */ 88603);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553));
                var _callbacks = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/callbacks */ 84718));
                var _deferred = __webpack_require__( /*! ../../../core/utils/deferred */ 87739);
                var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274);
                var _load_indicator = _interopRequireDefault(__webpack_require__( /*! ../../../ui/load_indicator */ 11979));
                var _m_scrollable = _interopRequireDefault(__webpack_require__( /*! ./m_scrollable.native */ 97265));

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                class PullDownNativeScrollViewStrategy extends _m_scrollable.default {
                    _init(scrollView) {
                        super._init(scrollView);
                        this._$topPocket = scrollView._$topPocket;
                        this._$pullDown = scrollView._$pullDown;
                        this._$refreshingText = scrollView._$refreshingText;
                        this._$scrollViewContent = (0, _renderer.default)(scrollView.content());
                        this._$container = (0, _renderer.default)(scrollView.container());
                        this._initCallbacks()
                    }
                    _initCallbacks() {
                        this.pullDownCallbacks = (0, _callbacks.default)();
                        this.releaseCallbacks = (0, _callbacks.default)();
                        this.reachBottomCallbacks = (0, _callbacks.default)()
                    }
                    render() {
                        super.render();
                        this._renderPullDown();
                        this._releaseState()
                    }
                    _renderPullDown() {
                        const $image = (0, _renderer.default)("<div>").addClass("dx-scrollview-pull-down-image");
                        const $loadContainer = (0, _renderer.default)("<div>").addClass("dx-scrollview-pull-down-indicator");
                        const $loadIndicator = new _load_indicator.default((0, _renderer.default)("<div>")).$element();
                        const $text = this._$pullDownText = (0, _renderer.default)("<div>").addClass("dx-scrollview-pull-down-text");
                        this._$pullingDownText = (0, _renderer.default)("<div>").text(this.option("pullingDownText")).appendTo($text);
                        this._$pulledDownText = (0, _renderer.default)("<div>").text(this.option("pulledDownText")).appendTo($text);
                        this._$refreshingText = (0, _renderer.default)("<div>").text(this.option("refreshingText")).appendTo($text);
                        this._$pullDown.empty().append($image).append($loadContainer.append($loadIndicator)).append($text)
                    }
                    _releaseState() {
                        this._state = 0;
                        this._refreshPullDownText()
                    }
                    _refreshPullDownText() {
                        const that = this;
                        const pullDownTextItems = [{
                            element: this._$pullingDownText,
                            visibleState: 0
                        }, {
                            element: this._$pulledDownText,
                            visibleState: 1
                        }, {
                            element: this._$refreshingText,
                            visibleState: 2
                        }];
                        (0, _iterator.each)(pullDownTextItems, ((_, item) => {
                            const action = that._state === item.visibleState ? "addClass" : "removeClass";
                            item.element[action]("dx-scrollview-pull-down-text-visible")
                        }))
                    }
                    update() {
                        super.update();
                        this._setTopPocketOffset()
                    }
                    _updateDimensions() {
                        super._updateDimensions();
                        this._topPocketSize = this._$topPocket.get(0).clientHeight;
                        const contentEl = this._$scrollViewContent.get(0);
                        const containerEl = this._$container.get(0);
                        this._bottomBoundary = Math.max(contentEl.clientHeight - containerEl.clientHeight, 0)
                    }
                    _allowedDirections() {
                        const allowedDirections = super._allowedDirections();
                        allowedDirections.vertical = allowedDirections.vertical || this._pullDownEnabled;
                        return allowedDirections
                    }
                    _setTopPocketOffset() {
                        this._$topPocket.css({
                            top: -this._topPocketSize
                        })
                    }
                    handleEnd() {
                        super.handleEnd();
                        this._complete()
                    }
                    handleStop() {
                        super.handleStop();
                        this._complete()
                    }
                    _complete() {
                        if (1 === this._state) {
                            this._setPullDownOffset(this._topPocketSize);
                            clearTimeout(this._pullDownRefreshTimeout);
                            this._pullDownRefreshTimeout = setTimeout((() => {
                                this._pullDownRefreshing()
                            }), 400)
                        }
                    }
                    _setPullDownOffset(offset) {
                        (0, _translator.move)(this._$topPocket, {
                            top: offset
                        });
                        (0, _translator.move)(this._$scrollViewContent, {
                            top: offset
                        })
                    }
                    handleScroll(e) {
                        super.handleScroll(e);
                        if (2 === this._state) {
                            return
                        }
                        const currentLocation = this.location().top;
                        const scrollDelta = (this._location || 0) - currentLocation;
                        this._location = currentLocation;
                        if (this._isPullDown()) {
                            this._pullDownReady()
                        } else if (scrollDelta > 0 && this._isReachBottom()) {
                            this._reachBottom()
                        } else {
                            this._stateReleased()
                        }
                    }
                    _isPullDown() {
                        return this._pullDownEnabled && this._location >= this._topPocketSize
                    }
                    _isReachBottom() {
                        return this._reachBottomEnabled && this.isBottomReached()
                    }
                    isBottomReached() {
                        return Math.round(this._bottomBoundary + Math.floor(this._location)) <= 1
                    }
                    _reachBottom() {
                        if (3 === this._state) {
                            return
                        }
                        this._state = 3;
                        this.reachBottomCallbacks.fire()
                    }
                    _pullDownReady() {
                        if (1 === this._state) {
                            return
                        }
                        this._state = 1;
                        this._$pullDown.addClass("dx-scrollview-pull-down-ready");
                        this._refreshPullDownText()
                    }
                    _stateReleased() {
                        if (0 === this._state) {
                            return
                        }
                        this._$pullDown.removeClass("dx-scrollview-pull-down-loading").removeClass("dx-scrollview-pull-down-ready");
                        this._releaseState()
                    }
                    _pullDownRefreshing() {
                        if (2 === this._state) {
                            return
                        }
                        this._state = 2;
                        this._$pullDown.addClass("dx-scrollview-pull-down-loading").removeClass("dx-scrollview-pull-down-ready");
                        this._refreshPullDownText();
                        this.pullDownCallbacks.fire()
                    }
                    pullDownEnable(enabled) {
                        if (enabled) {
                            this._updateDimensions();
                            this._setTopPocketOffset()
                        }
                        this._pullDownEnabled = enabled
                    }
                    reachBottomEnable(enabled) {
                        this._reachBottomEnabled = enabled
                    }
                    pendingRelease() {
                        this._state = 1
                    }
                    release() {
                        const deferred = (0, _deferred.Deferred)();
                        this._updateDimensions();
                        clearTimeout(this._releaseTimeout);
                        if (3 === this._state) {
                            this._state = 0
                        }
                        this._releaseTimeout = setTimeout((() => {
                            this._setPullDownOffset(0);
                            this._stateReleased();
                            this.releaseCallbacks.fire();
                            this._updateAction();
                            deferred.resolve()
                        }), 400);
                        return deferred.promise()
                    }
                    dispose() {
                        clearTimeout(this._pullDownRefreshTimeout);
                        clearTimeout(this._releaseTimeout);
                        super.dispose()
                    }
                }
                exports.default = PullDownNativeScrollViewStrategy
            },
        14286:
            /*!**********************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/ui/scroll_view/m_scroll_view.native.swipe_down.js ***!
              \**********************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _translator = __webpack_require__( /*! ../../../common/core/animation/translator */ 88603);
                var _index = __webpack_require__( /*! ../../../common/core/events/utils/index */ 98834);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553));
                var _callbacks = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/callbacks */ 84718));
                var _deferred = __webpack_require__( /*! ../../../core/utils/deferred */ 87739);
                var _size = __webpack_require__( /*! ../../../core/utils/size */ 57653);
                var _load_indicator = _interopRequireDefault(__webpack_require__( /*! ../../../ui/load_indicator */ 11979));
                var _m_scrollable = _interopRequireDefault(__webpack_require__( /*! ./m_scrollable.native */ 97265));

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                class SwipeDownNativeScrollViewStrategy extends _m_scrollable.default {
                    _init(scrollView) {
                        super._init(scrollView);
                        this._$topPocket = scrollView._$topPocket;
                        this._$pullDown = scrollView._$pullDown;
                        this._$scrollViewContent = (0, _renderer.default)(scrollView.content());
                        this._$container = (0, _renderer.default)(scrollView.container());
                        this._initCallbacks();
                        this._location = 0
                    }
                    _initCallbacks() {
                        this.pullDownCallbacks = (0, _callbacks.default)();
                        this.releaseCallbacks = (0, _callbacks.default)();
                        this.reachBottomCallbacks = (0, _callbacks.default)()
                    }
                    render() {
                        super.render();
                        this._renderPullDown();
                        this._releaseState()
                    }
                    _renderPullDown() {
                        const $loadContainer = (0, _renderer.default)("<div>").addClass("dx-scrollview-pull-down-indicator");
                        const $loadIndicator = new _load_indicator.default((0, _renderer.default)("<div>")).$element();
                        this._$icon = (0, _renderer.default)("<div>").addClass("dx-icon-pulldown");
                        this._$pullDown.empty().append(this._$icon).append($loadContainer.append($loadIndicator))
                    }
                    _releaseState() {
                        this._state = 0;
                        this._releasePullDown();
                        this._updateDimensions()
                    }
                    _releasePullDown() {
                        this._$pullDown.css({
                            opacity: 0
                        })
                    }
                    _updateDimensions() {
                        super._updateDimensions();
                        this._topPocketSize = this._$topPocket.get(0).clientHeight;
                        const contentEl = this._$scrollViewContent.get(0);
                        const containerEl = this._$container.get(0);
                        this._bottomBoundary = Math.max(contentEl.clientHeight - containerEl.clientHeight, 0)
                    }
                    _allowedDirections() {
                        const allowedDirections = super._allowedDirections();
                        allowedDirections.vertical = allowedDirections.vertical || this._pullDownEnabled;
                        return allowedDirections
                    }
                    handleInit(e) {
                        super.handleInit(e);
                        if (0 === this._state && 0 === this._location) {
                            this._startClientY = (0, _index.eventData)(e.originalEvent).y;
                            this._state = 4
                        }
                    }
                    handleMove(e) {
                        super.handleMove(e);
                        this._deltaY = (0, _index.eventData)(e.originalEvent).y - this._startClientY;
                        if (4 === this._state) {
                            if (this._pullDownEnabled && this._deltaY > 0) {
                                this._state = 5
                            } else {
                                this._complete()
                            }
                        }
                        if (5 === this._state) {
                            e.preventDefault();
                            this._movePullDown()
                        }
                    }
                    _movePullDown() {
                        const pullDownHeight = this._getPullDownHeight();
                        const top = Math.min(3 * pullDownHeight, this._deltaY + this._getPullDownStartPosition());
                        const angle = 180 * top / pullDownHeight / 3;
                        this._$pullDown.css({
                            opacity: 1
                        }).toggleClass("dx-scrollview-pull-down-refreshing", top < pullDownHeight);
                        (0, _translator.move)(this._$pullDown, {
                            top: top
                        });
                        this._$icon.css({
                            transform: `rotate(${angle}deg)`
                        })
                    }
                    _isPullDown() {
                        return this._pullDownEnabled && 5 === this._state && this._deltaY >= this._getPullDownHeight() - this._getPullDownStartPosition()
                    }
                    _getPullDownHeight() {
                        return Math.round(.05 * (0, _size.getOuterHeight)(this._$element))
                    }
                    _getPullDownStartPosition() {
                        return -Math.round(1.5 * (0, _size.getOuterHeight)(this._$pullDown))
                    }
                    handleEnd() {
                        if (this._isPullDown()) {
                            this._pullDownRefreshing()
                        }
                        this._complete()
                    }
                    handleStop() {
                        this._complete()
                    }
                    _complete() {
                        if (4 === this._state || 5 === this._state) {
                            this._releaseState()
                        }
                    }
                    handleScroll(e) {
                        super.handleScroll(e);
                        if (2 === this._state) {
                            return
                        }
                        const currentLocation = this.location().top;
                        const scrollDelta = this._location - currentLocation;
                        this._location = currentLocation;
                        if (scrollDelta > 0 && this._isReachBottom()) {
                            this._reachBottom()
                        } else {
                            this._stateReleased()
                        }
                    }
                    _isReachBottom() {
                        return this._reachBottomEnabled && this.isBottomReached()
                    }
                    isBottomReached() {
                        return Math.round(this._bottomBoundary + Math.floor(this._location)) <= 1
                    }
                    _reachBottom() {
                        this.reachBottomCallbacks.fire()
                    }
                    _stateReleased() {
                        if (0 === this._state) {
                            return
                        }
                        this._$pullDown.removeClass("dx-scrollview-pull-down-loading");
                        this._releaseState()
                    }
                    _pullDownRefreshing() {
                        this._state = 2;
                        this._pullDownRefreshHandler()
                    }
                    _pullDownRefreshHandler() {
                        this._refreshPullDown();
                        this.pullDownCallbacks.fire()
                    }
                    _refreshPullDown() {
                        this._$pullDown.addClass("dx-scrollview-pull-down-loading");
                        (0, _translator.move)(this._$pullDown, {
                            top: this._getPullDownHeight()
                        })
                    }
                    pullDownEnable(enabled) {
                        this._$topPocket.toggle(enabled);
                        this._pullDownEnabled = enabled
                    }
                    reachBottomEnable(enabled) {
                        this._reachBottomEnabled = enabled
                    }
                    pendingRelease() {
                        this._state = 1
                    }
                    release() {
                        const deferred = (0, _deferred.Deferred)();
                        this._updateDimensions();
                        clearTimeout(this._releaseTimeout);
                        this._releaseTimeout = setTimeout((() => {
                            this._stateReleased();
                            this.releaseCallbacks.fire();
                            this._updateAction();
                            deferred.resolve()
                        }), 800);
                        return deferred.promise()
                    }
                    dispose() {
                        clearTimeout(this._pullDownRefreshTimeout);
                        clearTimeout(this._releaseTimeout);
                        super.dispose()
                    }
                }
                exports.default = SwipeDownNativeScrollViewStrategy
            },
        94492:
            /*!**************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/ui/scroll_view/m_scroll_view.simulated.js ***!
              \**************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = exports.ScrollViewScroller = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553));
                var _callbacks = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/callbacks */ 84718));
                var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781);
                var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274);
                var _size = __webpack_require__( /*! ../../../core/utils/size */ 57653);
                var _load_indicator = _interopRequireDefault(__webpack_require__( /*! ../../../ui/load_indicator */ 11979));
                var _m_scrollable = __webpack_require__( /*! ./m_scrollable.simulated */ 74638);

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }

                function _extends() {
                    return _extends = Object.assign ? Object.assign.bind() : function(n) {
                        for (var e = 1; e < arguments.length; e++) {
                            var t = arguments[e];
                            for (var r in t) {
                                ({}).hasOwnProperty.call(t, r) && (n[r] = t[r])
                            }
                        }
                        return n
                    }, _extends.apply(null, arguments)
                }
                class ScrollViewScroller extends _m_scrollable.Scroller {
                    ctor() {
                        this._topPocketSize = 0;
                        this._bottomPocketSize = 0;
                        super.ctor.apply(this, arguments);
                        this._initCallbacks();
                        this._releaseState()
                    }
                    _releaseState() {
                        this._state = 0;
                        this._refreshPullDownText()
                    }
                    _refreshPullDownText() {
                        const that = this;
                        const pullDownTextItems = [{
                            element: this._$pullingDownText,
                            visibleState: 0
                        }, {
                            element: this._$pulledDownText,
                            visibleState: 1
                        }, {
                            element: this._$refreshingText,
                            visibleState: 2
                        }];
                        (0, _iterator.each)(pullDownTextItems, ((_, item) => {
                            const action = that._state === item.visibleState ? "addClass" : "removeClass";
                            item.element[action]("dx-scrollview-pull-down-text-visible")
                        }))
                    }
                    _initCallbacks() {
                        this.pullDownCallbacks = (0, _callbacks.default)();
                        this.releaseCallbacks = (0, _callbacks.default)();
                        this.reachBottomCallbacks = (0, _callbacks.default)()
                    }
                    _updateBounds() {
                        const considerPockets = "horizontal" !== this._direction;
                        if (considerPockets) {
                            this._topPocketSize = this._$topPocket.get(0).clientHeight;
                            this._bottomPocketSize = this._$bottomPocket.get(0).clientHeight;
                            const containerEl = this._$container.get(0);
                            const contentEl = this._$content.get(0);
                            this._bottomBoundary = Math.max(contentEl.clientHeight - this._bottomPocketSize - containerEl.clientHeight, 0)
                        }
                        super._updateBounds()
                    }
                    _updateScrollbar() {
                        this._scrollbar.option({
                            containerSize: this._containerSize(),
                            contentSize: this._contentSize() - this._topPocketSize - this._bottomPocketSize,
                            scaleRatio: this._getScaleRatio()
                        })
                    }
                    _moveContent() {
                        super._moveContent();
                        if (this._isPullDown()) {
                            this._pullDownReady()
                        } else if (this._isReachBottom()) {
                            this._reachBottomReady()
                        } else if (0 !== this._state) {
                            this._stateReleased()
                        }
                    }
                    _moveScrollbar() {
                        this._scrollbar.moveTo(this._topPocketSize + this._location)
                    }
                    _isPullDown() {
                        return this._pullDownEnabled && this._location >= 0
                    }
                    _isReachBottom() {
                        return this._reachBottomEnabled && this.isBottomReached()
                    }
                    isBottomReached() {
                        const containerEl = this._$container.get(0);
                        return Math.round(this._bottomBoundary - Math.ceil(containerEl.scrollTop)) <= 1
                    }
                    _scrollComplete() {
                        if (this._inBounds() && 1 === this._state) {
                            this._pullDownRefreshing()
                        } else if (this._inBounds() && 3 === this._state) {
                            this._reachBottomLoading()
                        } else {
                            super._scrollComplete()
                        }
                    }
                    _reachBottomReady() {
                        if (3 === this._state) {
                            return
                        }
                        this._state = 3;
                        this._minOffset = this._getMinOffset()
                    }
                    _getMaxOffset() {
                        return -this._topPocketSize
                    }
                    _getMinOffset() {
                        return Math.min(super._getMinOffset(), -this._topPocketSize)
                    }
                    _reachBottomLoading() {
                        this.reachBottomCallbacks.fire()
                    }
                    _pullDownReady() {
                        if (1 === this._state) {
                            return
                        }
                        this._state = 1;
                        this._maxOffset = 0;
                        this._$pullDown.addClass("dx-scrollview-pull-down-ready");
                        this._refreshPullDownText()
                    }
                    _stateReleased() {
                        if (0 === this._state) {
                            return
                        }
                        this._releaseState();
                        this._updateBounds();
                        this._$pullDown.removeClass("dx-scrollview-pull-down-loading").removeClass("dx-scrollview-pull-down-ready");
                        this.releaseCallbacks.fire()
                    }
                    _pullDownRefreshing() {
                        if (2 === this._state) {
                            return
                        }
                        this._state = 2;
                        this._$pullDown.addClass("dx-scrollview-pull-down-loading").removeClass("dx-scrollview-pull-down-ready");
                        this._refreshPullDownText();
                        this.pullDownCallbacks.fire()
                    }
                    _releaseHandler() {
                        var _this$_releaseTask;
                        if (0 === this._state) {
                            this._moveToBounds()
                        }
                        this._update();
                        if (this._releaseTask) {
                            this._releaseTask.abort()
                        }
                        this._releaseTask = (0, _common.executeAsync)(this._release.bind(this));
                        return null === (_this$_releaseTask = this._releaseTask) || void 0 === _this$_releaseTask ? void 0 : _this$_releaseTask.promise
                    }
                    _release() {
                        this._stateReleased();
                        this._scrollComplete()
                    }
                    _reachBottomEnablingHandler(enabled) {
                        if (this._reachBottomEnabled === enabled) {
                            return
                        }
                        this._reachBottomEnabled = enabled;
                        this._updateBounds()
                    }
                    _pullDownEnablingHandler(enabled) {
                        if (this._pullDownEnabled === enabled) {
                            return
                        }
                        this._pullDownEnabled = enabled;
                        this._considerTopPocketChange();
                        this._updateHandler()
                    }
                    _considerTopPocketChange() {
                        this._location -= (0, _size.getHeight)(this._$topPocket) || -this._topPocketSize;
                        this._maxOffset = 0;
                        this._move()
                    }
                    _pendingReleaseHandler() {
                        this._state = 1
                    }
                    dispose() {
                        if (this._releaseTask) {
                            this._releaseTask.abort()
                        }
                        super.dispose()
                    }
                }
                exports.ScrollViewScroller = ScrollViewScroller;
                class SimulatedScrollViewStrategy extends _m_scrollable.SimulatedStrategy {
                    _init(scrollView) {
                        super._init(scrollView);
                        this._$pullDown = scrollView._$pullDown;
                        this._$topPocket = scrollView._$topPocket;
                        this._$bottomPocket = scrollView._$bottomPocket;
                        this._initCallbacks()
                    }
                    _initCallbacks() {
                        this.pullDownCallbacks = (0, _callbacks.default)();
                        this.releaseCallbacks = (0, _callbacks.default)();
                        this.reachBottomCallbacks = (0, _callbacks.default)()
                    }
                    render() {
                        this._renderPullDown();
                        super.render()
                    }
                    _renderPullDown() {
                        const $image = (0, _renderer.default)("<div>").addClass("dx-scrollview-pull-down-image");
                        const $loadContainer = (0, _renderer.default)("<div>").addClass("dx-scrollview-pull-down-indicator");
                        const $loadIndicator = new _load_indicator.default((0, _renderer.default)("<div>")).$element();
                        const $text = this._$pullDownText = (0, _renderer.default)("<div>").addClass("dx-scrollview-pull-down-text");
                        this._$pullingDownText = (0, _renderer.default)("<div>").text(this.option("pullingDownText")).appendTo($text);
                        this._$pulledDownText = (0, _renderer.default)("<div>").text(this.option("pulledDownText")).appendTo($text);
                        this._$refreshingText = (0, _renderer.default)("<div>").text(this.option("refreshingText")).appendTo($text);
                        this._$pullDown.empty().append($image).append($loadContainer.append($loadIndicator)).append($text)
                    }
                    pullDownEnable(enabled) {
                        this._eventHandler("pullDownEnabling", enabled)
                    }
                    reachBottomEnable(enabled) {
                        this._eventHandler("reachBottomEnabling", enabled)
                    }
                    _createScroller(direction) {
                        const that = this;
                        const scroller = that._scrollers[direction] = new ScrollViewScroller(that._scrollerOptions(direction));
                        scroller.pullDownCallbacks.add((() => {
                            that.pullDownCallbacks.fire()
                        }));
                        scroller.releaseCallbacks.add((() => {
                            that.releaseCallbacks.fire()
                        }));
                        scroller.reachBottomCallbacks.add((() => {
                            that.reachBottomCallbacks.fire()
                        }))
                    }
                    _scrollerOptions(direction) {
                        return _extends({}, super._scrollerOptions(direction), {
                            $topPocket: this._$topPocket,
                            $bottomPocket: this._$bottomPocket,
                            $pullDown: this._$pullDown,
                            $pullDownText: this._$pullDownText,
                            $pullingDownText: this._$pullingDownText,
                            $pulledDownText: this._$pulledDownText,
                            $refreshingText: this._$refreshingText
                        })
                    }
                    pendingRelease() {
                        this._eventHandler("pendingRelease")
                    }
                    release() {
                        return this._eventHandler("release").done(this._updateAction)
                    }
                    location() {
                        const location = super.location();
                        location.top += (0, _size.getHeight)(this._$topPocket);
                        return location
                    }
                    isBottomReached() {
                        return this._scrollers.vertical.isBottomReached()
                    }
                    dispose() {
                        (0, _iterator.each)(this._scrollers, (function() {
                            this.dispose()
                        }));
                        super.dispose()
                    }
                }
                exports.default = SimulatedScrollViewStrategy
            },
        65180:
            /*!**********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/ui/scroll_view/m_scrollable.device.js ***!
              \**********************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.deviceDependentOptions = void 0;
                var _devices = _interopRequireDefault(__webpack_require__( /*! ../../../core/devices */ 65951));
                var _m_support = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/m_support */ 85991));

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                exports.deviceDependentOptions = function() {
                    return [{
                        device: () => !_m_support.default.nativeScrolling,
                        options: {
                            useNative: false
                        }
                    }, {
                        device: device => !_devices.default.isSimulator() && "desktop" === _devices.default.real().deviceType && "generic" === device.platform,
                        options: {
                            bounceEnabled: false,
                            scrollByThumb: true,
                            scrollByContent: _m_support.default.touch,
                            showScrollbar: "onHover"
                        }
                    }]
                }
            },
        94790:
            /*!***************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/ui/scroll_view/m_scrollable.js ***!
              \***************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774));
                var _emitterGesture = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/gesture/emitter.gesture.scroll */ 86548));
                var _index = __webpack_require__( /*! ../../../common/core/events/utils/index */ 98834);
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../core/component_registrator */ 92848));
                var _devices = _interopRequireDefault(__webpack_require__( /*! ../../../core/devices */ 65951));
                var _element = __webpack_require__( /*! ../../../core/element */ 61404);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553));
                var _browser = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/browser */ 48314));
                var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781);
                var _deferred = __webpack_require__( /*! ../../../core/utils/deferred */ 87739);
                var _size = __webpack_require__( /*! ../../../core/utils/size */ 57653);
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528);
                var _window = __webpack_require__( /*! ../../../core/utils/window */ 3104);
                var _dom_component = _interopRequireDefault(__webpack_require__( /*! ../../core/widget/dom_component */ 22331));
                var _get_element_location_internal = __webpack_require__( /*! ../../ui/scroll_view/utils/get_element_location_internal */ 62504);
                var _m_support = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/m_support */ 85991));
                var _m_scrollable = __webpack_require__( /*! ./m_scrollable.device */ 65180);
                var _m_scrollable2 = _interopRequireDefault(__webpack_require__( /*! ./m_scrollable.native */ 97265));
                var _m_scrollable3 = __webpack_require__( /*! ./m_scrollable.simulated */ 74638);

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }

                function _extends() {
                    return _extends = Object.assign ? Object.assign.bind() : function(n) {
                        for (var e = 1; e < arguments.length; e++) {
                            var t = arguments[e];
                            for (var r in t) {
                                ({}).hasOwnProperty.call(t, r) && (n[r] = t[r])
                            }
                        }
                        return n
                    }, _extends.apply(null, arguments)
                }
                const SCROLLABLE = "dxScrollable";
                class Scrollable extends _dom_component.default {
                    _getDefaultOptions() {
                        return _extends({}, super._getDefaultOptions(), {
                            disabled: false,
                            onScroll: null,
                            direction: "vertical",
                            showScrollbar: "onScroll",
                            useNative: true,
                            bounceEnabled: true,
                            scrollByContent: true,
                            scrollByThumb: false,
                            onUpdated: null,
                            onStart: null,
                            onEnd: null,
                            onBounce: null,
                            useSimulatedScrollbar: false,
                            useKeyboard: true,
                            inertiaEnabled: true,
                            updateManually: false,
                            _onVisibilityChanged: _common.noop
                        })
                    }
                    _defaultOptionsRules() {
                        return super._defaultOptionsRules().concat((0, _m_scrollable.deviceDependentOptions)(), [{
                            device: () => _m_support.default.nativeScrolling && "android" === _devices.default.real().platform && !_browser.default.mozilla,
                            options: {
                                useSimulatedScrollbar: true
                            }
                        }])
                    }
                    _initOptions(options) {
                        super._initOptions(options);
                        if (!("useSimulatedScrollbar" in options)) {
                            this._setUseSimulatedScrollbar()
                        }
                    }
                    _setUseSimulatedScrollbar() {
                        if (!this.initialOption("useSimulatedScrollbar")) {
                            this.option("useSimulatedScrollbar", !this.option("useNative"))
                        }
                    }
                    _init() {
                        super._init();
                        this._initScrollableMarkup();
                        this._locked = false
                    }
                    _visibilityChanged(visible) {
                        if (visible) {
                            this.update();
                            this._updateRtlPosition();
                            this._savedScrollOffset && this.scrollTo(this._savedScrollOffset);
                            delete this._savedScrollOffset;
                            const {
                                _onVisibilityChanged: onVisibilityChanged
                            } = this.option();
                            null === onVisibilityChanged || void 0 === onVisibilityChanged || onVisibilityChanged(this)
                        } else {
                            this._savedScrollOffset = this.scrollOffset()
                        }
                    }
                    _initScrollableMarkup() {
                        const $element = this.$element().addClass("dx-scrollable");
                        const $container = (0, _renderer.default)("<div>").addClass("dx-scrollable-container");
                        const $wrapper = (0, _renderer.default)("<div>").addClass("dx-scrollable-wrapper");
                        const $content = (0, _renderer.default)("<div>").addClass("dx-scrollable-content");
                        this._$container = $container;
                        this._$wrapper = $wrapper;
                        this._$content = $content;
                        $content.append($element.contents()).appendTo($container);
                        $container.appendTo($wrapper);
                        $wrapper.appendTo($element)
                    }
                    _dimensionChanged() {
                        this.update();
                        this._updateRtlPosition()
                    }
                    _initMarkup() {
                        super._initMarkup();
                        this._renderDirection()
                    }
                    _render() {
                        this._renderStrategy();
                        this._attachEventHandlers();
                        this._renderDisabledState();
                        this._createActions();
                        this.update();
                        super._render();
                        this._updateRtlPosition(true)
                    }
                    _updateRtlPosition(needInitializeRtlConfig) {
                        this._strategy.updateRtlPosition(needInitializeRtlConfig)
                    }
                    _getMaxOffset() {
                        const {
                            scrollWidth: scrollWidth,
                            clientWidth: clientWidth,
                            scrollHeight: scrollHeight,
                            clientHeight: clientHeight
                        } = (0, _renderer.default)(this.container()).get(0);
                        return {
                            left: scrollWidth - clientWidth,
                            top: scrollHeight - clientHeight
                        }
                    }
                    _attachEventHandlers() {
                        const strategy = this._strategy;
                        const initEventData = {
                            getDirection: strategy.getDirection.bind(strategy),
                            validate: this._validate.bind(this),
                            isNative: this.option("useNative"),
                            scrollTarget: this._$container
                        };
                        _events_engine.default.off(this._$wrapper, `.${SCROLLABLE}`);
                        _events_engine.default.on(this._$wrapper, (0, _index.addNamespace)(_emitterGesture.default.init, SCROLLABLE), initEventData, this._initHandler.bind(this));
                        _events_engine.default.on(this._$wrapper, (0, _index.addNamespace)(_emitterGesture.default.start, SCROLLABLE), strategy.handleStart.bind(strategy));
                        _events_engine.default.on(this._$wrapper, (0, _index.addNamespace)(_emitterGesture.default.move, SCROLLABLE), strategy.handleMove.bind(strategy));
                        _events_engine.default.on(this._$wrapper, (0, _index.addNamespace)(_emitterGesture.default.end, SCROLLABLE), strategy.handleEnd.bind(strategy));
                        _events_engine.default.on(this._$wrapper, (0, _index.addNamespace)(_emitterGesture.default.cancel, SCROLLABLE), strategy.handleCancel.bind(strategy));
                        _events_engine.default.on(this._$wrapper, (0, _index.addNamespace)(_emitterGesture.default.stop, SCROLLABLE), strategy.handleStop.bind(strategy));
                        _events_engine.default.off(this._$container, `.${SCROLLABLE}`);
                        _events_engine.default.on(this._$container, (0, _index.addNamespace)("scroll", SCROLLABLE), strategy.handleScroll.bind(strategy))
                    }
                    _validate(e) {
                        if (this._isLocked()) {
                            return false
                        }
                        this._updateIfNeed();
                        return this._moveIsAllowed(e)
                    }
                    _moveIsAllowed(e) {
                        return this._strategy.validate(e)
                    }
                    handleMove(e) {
                        this._strategy.handleMove(e)
                    }
                    _prepareDirections(value) {
                        this._strategy._prepareDirections(value)
                    }
                    _initHandler() {
                        const strategy = this._strategy;
                        strategy.handleInit.apply(strategy, arguments)
                    }
                    _renderDisabledState() {
                        const {
                            disabled: disabled
                        } = this.option();
                        this.$element().toggleClass("dx-scrollable-disabled", disabled);
                        if (this.option("disabled")) {
                            this._lock()
                        } else {
                            this._unlock()
                        }
                    }
                    _renderDirection() {
                        const {
                            direction: direction
                        } = this.option();
                        this.$element().removeClass("dx-scrollable-horizontal").removeClass("dx-scrollable-vertical").removeClass("dx-scrollable-both").addClass(`dx-scrollable-${direction}`)
                    }
                    _renderStrategy() {
                        this._createStrategy();
                        this._strategy.render();
                        this.$element().data("dxScrollableStrategy", this._strategy)
                    }
                    _createStrategy() {
                        this._strategy = this.option("useNative") ? new _m_scrollable2.default(this) : new _m_scrollable3.SimulatedStrategy(this)
                    }
                    _createActions() {
                        var _this$_strategy;
                        null === (_this$_strategy = this._strategy) || void 0 === _this$_strategy || _this$_strategy.createActions()
                    }
                    _clean() {
                        var _this$_strategy2;
                        null === (_this$_strategy2 = this._strategy) || void 0 === _this$_strategy2 || _this$_strategy2.dispose()
                    }
                    _optionChanged(args) {
                        var _this$_strategy3;
                        switch (args.name) {
                            case "onStart":
                            case "onEnd":
                            case "onUpdated":
                            case "onScroll":
                            case "onBounce":
                                this._createActions();
                                break;
                            case "direction":
                                this._resetInactiveDirection();
                                this._invalidate();
                                break;
                            case "useNative":
                                this._setUseSimulatedScrollbar();
                                this._invalidate();
                                break;
                            case "inertiaEnabled":
                            case "scrollByThumb":
                            case "bounceEnabled":
                            case "useKeyboard":
                            case "showScrollbar":
                            case "useSimulatedScrollbar":
                                this._invalidate();
                                break;
                            case "disabled":
                                this._renderDisabledState();
                                null === (_this$_strategy3 = this._strategy) || void 0 === _this$_strategy3 || _this$_strategy3.disabledChanged();
                                break;
                            case "updateManually":
                            case "scrollByContent":
                            case "_onVisibilityChanged":
                                break;
                            case "width":
                                super._optionChanged(args);
                                this._updateRtlPosition();
                                break;
                            default:
                                super._optionChanged(args)
                        }
                    }
                    _resetInactiveDirection() {
                        const inactiveProp = this._getInactiveProp();
                        if (!inactiveProp || !(0, _window.hasWindow)()) {
                            return
                        }
                        const scrollOffset = this.scrollOffset();
                        scrollOffset[inactiveProp] = 0;
                        this.scrollTo(scrollOffset)
                    }
                    _getInactiveProp() {
                        const {
                            direction: direction
                        } = this.option();
                        if ("vertical" === direction) {
                            return "left"
                        }
                        if ("horizontal" === direction) {
                            return "top"
                        }
                    }
                    _location() {
                        return this._strategy.location()
                    }
                    _normalizeLocation(location) {
                        if ((0, _type.isPlainObject)(location)) {
                            const left = (0, _common.ensureDefined)(location.left, location.x);
                            const top = (0, _common.ensureDefined)(location.top, location.y);
                            return {
                                left: (0, _type.isDefined)(left) ? -left : void 0,
                                top: (0, _type.isDefined)(top) ? -top : void 0
                            }
                        }
                        const {
                            direction: direction
                        } = this.option();
                        return {
                            left: "vertical" !== direction ? -location : void 0,
                            top: "horizontal" !== direction ? -location : void 0
                        }
                    }
                    _isLocked() {
                        return this._locked
                    }
                    _lock() {
                        this._locked = true
                    }
                    _unlock() {
                        if (!this.option("disabled")) {
                            this._locked = false
                        }
                    }
                    _isDirection(direction) {
                        const {
                            direction: current
                        } = this.option();
                        if ("vertical" === direction) {
                            return "horizontal" !== current
                        }
                        if ("horizontal" === direction) {
                            return "vertical" !== current
                        }
                        return current === direction
                    }
                    _updateAllowedDirection() {
                        const allowedDirections = this._strategy._allowedDirections();
                        if (this._isDirection("both") && allowedDirections.vertical && allowedDirections.horizontal) {
                            this._allowedDirectionValue = "both"
                        } else if (this._isDirection("horizontal") && allowedDirections.horizontal) {
                            this._allowedDirectionValue = "horizontal"
                        } else if (this._isDirection("vertical") && allowedDirections.vertical) {
                            this._allowedDirectionValue = "vertical"
                        } else {
                            this._allowedDirectionValue = null
                        }
                    }
                    _allowedDirection() {
                        return this._allowedDirectionValue
                    }
                    $content() {
                        return this._$content
                    }
                    content() {
                        return (0, _element.getPublicElement)(this._$content)
                    }
                    container() {
                        return (0, _element.getPublicElement)(this._$container)
                    }
                    scrollOffset() {
                        return this._strategy._getScrollOffset()
                    }
                    _isRtlNativeStrategy() {
                        const {
                            useNative: useNative,
                            rtlEnabled: rtlEnabled
                        } = this.option();
                        return useNative && rtlEnabled
                    }
                    scrollTop() {
                        return this.scrollOffset().top
                    }
                    scrollLeft() {
                        return this.scrollOffset().left
                    }
                    clientHeight() {
                        return (0, _size.getHeight)(this._$container)
                    }
                    scrollHeight() {
                        return (0, _size.getOuterHeight)(this.$content())
                    }
                    clientWidth() {
                        return (0, _size.getWidth)(this._$container)
                    }
                    scrollWidth() {
                        return (0, _size.getOuterWidth)(this.$content())
                    }
                    update() {
                        if (!this._strategy) {
                            return
                        }
                        return (0, _deferred.when)(this._strategy.update()).done((() => {
                            this._updateAllowedDirection()
                        }))
                    }
                    scrollBy(distance) {
                        distance = this._normalizeLocation(distance);
                        if (!distance.top && !distance.left) {
                            return
                        }
                        this._updateIfNeed();
                        this._strategy.scrollBy(distance)
                    }
                    scrollTo(targetLocation) {
                        if (!(0, _window.hasWindow)()) {
                            return
                        }
                        targetLocation = this._normalizeLocation(targetLocation);
                        this._updateIfNeed();
                        let location = this._location();
                        const {
                            useNative: useNative
                        } = this.option();
                        if (!useNative) {
                            const strategy = this._strategy;
                            targetLocation = strategy._applyScaleRatio(targetLocation);
                            location = strategy._applyScaleRatio(location)
                        }
                        if (this._isRtlNativeStrategy()) {
                            location.left -= this._getMaxOffset().left
                        }
                        const distance = this._normalizeLocation({
                            left: location.left - (0, _common.ensureDefined)(targetLocation.left, location.left),
                            top: location.top - (0, _common.ensureDefined)(targetLocation.top, location.top)
                        });
                        if (!distance.top && !distance.left) {
                            return
                        }
                        this._strategy.scrollBy(distance)
                    }
                    scrollToElement(element, offset) {
                        const $element = (0, _renderer.default)(element);
                        const elementInsideContent = this.$content().find(element).length;
                        const elementIsInsideContent = $element.parents(".dx-scrollable").length - $element.parents(".dx-scrollable-content").length === 0;
                        if (!elementInsideContent || !elementIsInsideContent) {
                            return
                        }
                        const scrollPosition = {
                            top: 0,
                            left: 0
                        };
                        const {
                            direction: direction
                        } = this.option();
                        if ("vertical" !== direction) {
                            scrollPosition.left = this.getScrollElementPosition($element, "horizontal", offset)
                        }
                        if ("horizontal" !== direction) {
                            scrollPosition.top = this.getScrollElementPosition($element, "vertical", offset)
                        }
                        this.scrollTo(scrollPosition)
                    }
                    getScrollElementPosition($element, direction, offset) {
                        const scrollOffset = this.scrollOffset();
                        return (0, _get_element_location_internal.getElementLocationInternal)($element.get(0), direction, (0, _renderer.default)(this.container()).get(0), scrollOffset, offset)
                    }
                    _updateIfNeed() {
                        if (!this.option("updateManually")) {
                            this.update()
                        }
                    }
                    _useTemplates() {
                        return false
                    }
                    isRenovated() {
                        return !!Scrollable.IS_RENOVATED_WIDGET
                    }
                }(0, _component_registrator.default)(SCROLLABLE, Scrollable);
                exports.default = Scrollable
            },
        97265:
            /*!**********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/ui/scroll_view/m_scrollable.native.js ***!
              \**********************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774));
                var _index = __webpack_require__( /*! ../../../common/core/events/utils/index */ 98834);
                var _class = _interopRequireDefault(__webpack_require__( /*! ../../../core/class */ 55620));
                var _devices = _interopRequireDefault(__webpack_require__( /*! ../../../core/devices */ 65951));
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553));
                var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274);
                var _size = __webpack_require__( /*! ../../../core/utils/size */ 57653);
                var _m_scrollbar = _interopRequireDefault(__webpack_require__( /*! ./m_scrollbar */ 86853));

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                class NativeStrategy extends(_class.default.inherit({})) {
                    ctor(scrollable) {
                        this._init(scrollable)
                    }
                    _init(scrollable) {
                        this._component = scrollable;
                        this._$element = scrollable.$element();
                        this._$container = (0, _renderer.default)(scrollable.container());
                        this._$content = scrollable.$content();
                        const {
                            direction: direction,
                            useSimulatedScrollbar: useSimulatedScrollbar
                        } = scrollable.option();
                        this._direction = direction;
                        this._useSimulatedScrollbar = useSimulatedScrollbar;
                        this.option = scrollable.option.bind(scrollable);
                        this._createActionByOption = scrollable._createActionByOption.bind(scrollable);
                        this._isLocked = scrollable._isLocked.bind(scrollable);
                        this._isDirection = scrollable._isDirection.bind(scrollable);
                        this._allowedDirection = scrollable._allowedDirection.bind(scrollable);
                        this._getMaxOffset = scrollable._getMaxOffset.bind(scrollable);
                        this._isRtlNativeStrategy = scrollable._isRtlNativeStrategy.bind(scrollable)
                    }
                    render() {
                        const device = _devices.default.real();
                        const deviceType = device.platform;
                        this._$element.addClass("dx-scrollable-native").addClass(`dx-scrollable-native-${deviceType}`).toggleClass("dx-scrollable-scrollbars-hidden", !this._isScrollbarVisible());
                        if (this._isScrollbarVisible() && this._useSimulatedScrollbar) {
                            this._renderScrollbars()
                        }
                    }
                    updateRtlPosition(isFirstRender) {
                        if (isFirstRender && this.option("rtlEnabled")) {
                            if (this._isScrollbarVisible() && this._useSimulatedScrollbar) {
                                this._moveScrollbars()
                            }
                        }
                    }
                    _renderScrollbars() {
                        this._scrollbars = {};
                        this._hideScrollbarTimeout = 0;
                        this._$element.addClass("dx-scrollable-scrollbar-simulated");
                        this._renderScrollbar("vertical");
                        this._renderScrollbar("horizontal")
                    }
                    _renderScrollbar(direction) {
                        if (!this._isDirection(direction)) {
                            return
                        }
                        this._scrollbars[direction] = new _m_scrollbar.default((0, _renderer.default)("<div>").appendTo(this._$element), {
                            direction: direction,
                            expandable: this._component.option("scrollByThumb")
                        })
                    }
                    handleInit(e) {}
                    handleStart() {}
                    handleMove(e) {
                        if (this._isLocked()) {
                            e.cancel = true;
                            return
                        }
                        if (this._allowedDirection()) {
                            e.originalEvent.isScrollingEvent = true
                        }
                    }
                    handleEnd() {}
                    handleCancel() {}
                    handleStop() {}
                    _eachScrollbar(callback) {
                        callback = callback.bind(this);
                        (0, _iterator.each)(this._scrollbars || {}, ((direction, scrollbar) => {
                            callback(scrollbar, direction)
                        }))
                    }
                    createActions() {
                        this._scrollAction = this._createActionByOption("onScroll");
                        this._updateAction = this._createActionByOption("onUpdated")
                    }
                    _createActionArgs() {
                        const {
                            left: left,
                            top: top
                        } = this.location();
                        return {
                            event: this._eventForUserAction,
                            scrollOffset: this._getScrollOffset(),
                            reachedLeft: this._isRtlNativeStrategy() ? this._isReachedRight(-left) : this._isReachedLeft(left),
                            reachedRight: this._isRtlNativeStrategy() ? this._isReachedLeft(-Math.abs(left)) : this._isReachedRight(left),
                            reachedTop: this._isDirection("vertical") ? Math.round(top) >= 0 : void 0,
                            reachedBottom: this._isDirection("vertical") ? Math.round(Math.abs(top) - this._getMaxOffset().top) >= 0 : void 0
                        }
                    }
                    _getScrollOffset() {
                        const {
                            top: top,
                            left: left
                        } = this.location();
                        return {
                            top: -top,
                            left: this._normalizeOffsetLeft(-left)
                        }
                    }
                    _normalizeOffsetLeft(scrollLeft) {
                        if (this._isRtlNativeStrategy()) {
                            return this._getMaxOffset().left + scrollLeft
                        }
                        return scrollLeft
                    }
                    _isReachedLeft(left) {
                        return this._isDirection("horizontal") ? Math.round(left) >= 0 : void 0
                    }
                    _isReachedRight(left) {
                        return this._isDirection("horizontal") ? Math.round(Math.abs(left) - this._getMaxOffset().left) >= 0 : void 0
                    }
                    _isScrollbarVisible() {
                        const {
                            showScrollbar: showScrollbar
                        } = this.option();
                        return "never" !== showScrollbar && false !== showScrollbar
                    }
                    handleScroll(e) {
                        var _this$_scrollAction;
                        this._eventForUserAction = e;
                        this._moveScrollbars();
                        null === (_this$_scrollAction = this._scrollAction) || void 0 === _this$_scrollAction || _this$_scrollAction.call(this, this._createActionArgs())
                    }
                    _moveScrollbars() {
                        const {
                            top: top,
                            left: left
                        } = this._getScrollOffset();
                        this._eachScrollbar((scrollbar => {
                            scrollbar.moveTo({
                                top: -top,
                                left: -left
                            });
                            scrollbar.option("visible", true)
                        }));
                        this._hideScrollbars()
                    }
                    _hideScrollbars() {
                        clearTimeout(this._hideScrollbarTimeout);
                        this._hideScrollbarTimeout = setTimeout((() => {
                            this._eachScrollbar((scrollbar => {
                                scrollbar.option("visible", false)
                            }))
                        }), 500)
                    }
                    location() {
                        return {
                            left: -this._$container.scrollLeft(),
                            top: -this._$container.scrollTop()
                        }
                    }
                    disabledChanged() {}
                    update() {
                        this._update();
                        this._updateAction(this._createActionArgs())
                    }
                    _update() {
                        this._updateDimensions();
                        this._updateScrollbars()
                    }
                    _updateDimensions() {
                        this._containerSize = {
                            height: (0, _size.getHeight)(this._$container),
                            width: (0, _size.getWidth)(this._$container)
                        };
                        this._componentContentSize = {
                            height: (0, _size.getHeight)(this._component.$content()),
                            width: (0, _size.getWidth)(this._component.$content())
                        };
                        this._contentSize = {
                            height: (0, _size.getHeight)(this._$content),
                            width: (0, _size.getWidth)(this._$content)
                        }
                    }
                    _updateScrollbars() {
                        this._eachScrollbar((function(scrollbar, direction) {
                            const dimension = "vertical" === direction ? "height" : "width";
                            scrollbar.option({
                                containerSize: this._containerSize[dimension],
                                contentSize: this._componentContentSize[dimension]
                            });
                            scrollbar.update()
                        }))
                    }
                    _allowedDirections() {
                        return {
                            vertical: this._isDirection("vertical") && this._contentSize.height > this._containerSize.height,
                            horizontal: this._isDirection("horizontal") && this._contentSize.width > this._containerSize.width
                        }
                    }
                    dispose() {
                        const {
                            className: className
                        } = this._$element.get(0);
                        const scrollableNativeRegexp = new RegExp("dx-scrollable-native\\S*", "g");
                        if (scrollableNativeRegexp.test(className)) {
                            this._$element.removeClass(className.match(scrollableNativeRegexp).join(" "))
                        }
                        _events_engine.default.off(this._$element, ".dxNativeScrollable");
                        _events_engine.default.off(this._$container, ".dxNativeScrollable");
                        this._removeScrollbars();
                        clearTimeout(this._hideScrollbarTimeout)
                    }
                    _removeScrollbars() {
                        this._eachScrollbar((scrollbar => {
                            scrollbar.$element().remove()
                        }))
                    }
                    scrollBy(distance) {
                        const location = this.location();
                        this._$container.scrollTop(Math.round(-location.top - distance.top));
                        this._$container.scrollLeft(Math.round(-location.left - distance.left))
                    }
                    validate(e) {
                        const {
                            disabled: disabled
                        } = this.option();
                        if (disabled) {
                            return false
                        }
                        if ((0, _index.isDxMouseWheelEvent)(e) && this._isScrolledInMaxDirection(e)) {
                            return false
                        }
                        return !!this._allowedDirection()
                    }
                    _isScrolledInMaxDirection(e) {
                        const container = this._$container.get(0);
                        let result;
                        if (e.delta > 0) {
                            result = e.shiftKey ? !container.scrollLeft : !container.scrollTop
                        } else if (e.shiftKey) {
                            result = container.scrollLeft >= this._getMaxOffset().left
                        } else {
                            result = container.scrollTop >= this._getMaxOffset().top
                        }
                        return result
                    }
                    getDirection() {
                        return this._allowedDirection()
                    }
                }
                exports.default = NativeStrategy
            },
        74638:
            /*!*************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/ui/scroll_view/m_scrollable.simulated.js ***!
              \*************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.SimulatedStrategy = exports.Scroller = void 0;
                var _translator = __webpack_require__( /*! ../../../common/core/animation/translator */ 88603);
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774));
                var _index = __webpack_require__( /*! ../../../common/core/events/utils/index */ 98834);
                var _class = _interopRequireDefault(__webpack_require__( /*! ../../../core/class */ 55620));
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../core/dom_adapter */ 64960));
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553));
                var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781);
                var _deferred = __webpack_require__( /*! ../../../core/utils/deferred */ 87739);
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576);
                var _inflector = __webpack_require__( /*! ../../../core/utils/inflector */ 53124);
                var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274);
                var _position = __webpack_require__( /*! ../../../core/utils/position */ 41639);
                var _size = __webpack_require__( /*! ../../../core/utils/size */ 57653);
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528);
                var _window = __webpack_require__( /*! ../../../core/utils/window */ 3104);
                var _m_animator = _interopRequireDefault(__webpack_require__( /*! ./m_animator */ 99762));
                var _m_scrollbar = _interopRequireDefault(__webpack_require__( /*! ./m_scrollbar */ 86853));

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const HORIZONTAL = "horizontal";
                const FRAME_DURATION = Math.round(1e3 / 60);
                const BOUNCE_FRAMES = 400 / FRAME_DURATION;
                const BOUNCE_ACCELERATION_SUM = (1 - .92 ** BOUNCE_FRAMES) / (1 - .92);
                const KEY_CODES_PAGE_UP = "pageUp",
                    KEY_CODES_PAGE_DOWN = "pageDown",
                    KEY_CODES_END = "end",
                    KEY_CODES_HOME = "home",
                    KEY_CODES_LEFT = "leftArrow",
                    KEY_CODES_UP = "upArrow",
                    KEY_CODES_RIGHT = "rightArrow",
                    KEY_CODES_DOWN = "downArrow",
                    KEY_CODES_TAB = "tab";
                class InertiaAnimator extends _m_animator.default {
                    constructor() {
                        super(...arguments);
                        this.VELOCITY_LIMIT = 1
                    }
                    ctor(scroller) {
                        super.ctor();
                        this.scroller = scroller
                    }
                    _isFinished() {
                        return Math.abs(this.scroller._velocity) <= this.VELOCITY_LIMIT
                    }
                    _step() {
                        this.scroller._scrollStep(this.scroller._velocity);
                        this.scroller._velocity *= this._acceleration()
                    }
                    _acceleration() {
                        return this.scroller._inBounds() ? .92 : .5
                    }
                    _complete() {
                        this.scroller._scrollComplete()
                    }
                }
                class BounceAnimator extends InertiaAnimator {
                    constructor() {
                        super(...arguments);
                        this.VELOCITY_LIMIT = .2
                    }
                    _isFinished() {
                        return this.scroller._crossBoundOnNextStep() || super._isFinished()
                    }
                    _acceleration() {
                        return .92
                    }
                    _complete() {
                        this.scroller._move(this.scroller._bounceLocation);
                        super._complete()
                    }
                }
                class Scroller extends(_class.default.inherit({})) {
                    ctor(options) {
                        this._initOptions(options);
                        this._initAnimators();
                        this._initScrollbar()
                    }
                    _initOptions(options) {
                        this._location = 0;
                        this._topReached = false;
                        this._bottomReached = false;
                        this._axis = options.direction === HORIZONTAL ? "x" : "y";
                        this._prop = options.direction === HORIZONTAL ? "left" : "top";
                        this._dimension = options.direction === HORIZONTAL ? "width" : "height";
                        this._scrollProp = options.direction === HORIZONTAL ? "scrollLeft" : "scrollTop";
                        (0, _iterator.each)(options, ((optionName, optionValue) => {
                            this[`_${optionName}`] = optionValue
                        }))
                    }
                    _initAnimators() {
                        this._inertiaAnimator = new InertiaAnimator(this);
                        this._bounceAnimator = new BounceAnimator(this)
                    }
                    _initScrollbar() {
                        this._scrollbar = new _m_scrollbar.default((0, _renderer.default)("<div>").appendTo(this._$container), {
                            direction: this._direction,
                            visible: this._scrollByThumb,
                            visibilityMode: this._visibilityModeNormalize(this._scrollbarVisible),
                            expandable: this._scrollByThumb
                        });
                        this._$scrollbar = this._scrollbar.$element()
                    }
                    _visibilityModeNormalize(mode) {
                        return true === mode ? "onScroll" : false === mode ? "never" : mode
                    }
                    _scrollStep(delta) {
                        const prevLocation = this._location;
                        this._location += delta;
                        this._suppressBounce();
                        this._move();
                        if (Math.abs(prevLocation - this._location) < 1) {
                            return
                        }
                        _events_engine.default.triggerHandler(this._$container, {
                            type: "scroll"
                        })
                    }
                    _suppressBounce() {
                        if (this._bounceEnabled || this._inBounds(this._location)) {
                            return
                        }
                        this._velocity = 0;
                        this._location = this._boundLocation()
                    }
                    _boundLocation(location) {
                        location = void 0 !== location ? location : this._location;
                        return Math.max(Math.min(location, this._maxOffset), this._minOffset)
                    }
                    _move(location) {
                        this._location = void 0 !== location ? location * this._getScaleRatio() : this._location;
                        this._moveContent();
                        this._moveScrollbar()
                    }
                    _moveContent() {
                        const location = this._location;
                        this._$container[this._scrollProp](-location / this._getScaleRatio());
                        this._moveContentByTranslator(location)
                    }
                    _getScaleRatio() {
                        if ((0, _window.hasWindow)() && !this._scaleRatio) {
                            const element = this._$element.get(0);
                            const realDimension = this._getRealDimension(element, this._dimension);
                            const baseDimension = this._getBaseDimension(element, this._dimension);
                            this._scaleRatio = Math.round(realDimension / baseDimension * 100) / 100
                        }
                        return this._scaleRatio || 1
                    }
                    _getRealDimension(element, dimension) {
                        return Math.round((0, _position.getBoundingRect)(element)[dimension])
                    }
                    _getBaseDimension(element, dimension) {
                        const dimensionName = `offset${(0,_inflector.titleize)(dimension)}`;
                        return element[dimensionName]
                    }
                    _moveContentByTranslator(location) {
                        let translateOffset;
                        const minOffset = -this._maxScrollPropValue;
                        if (location > 0) {
                            translateOffset = location
                        }
                        if (location <= minOffset) {
                            translateOffset = location - minOffset
                        }
                        if (this._translateOffset === translateOffset) {
                            return
                        }
                        const targetLocation = {};
                        targetLocation[this._prop] = translateOffset;
                        this._translateOffset = translateOffset;
                        if (!translateOffset) {
                            (0, _translator.resetPosition)(this._$content);
                            return
                        }(0, _translator.move)(this._$content, targetLocation)
                    }
                    _moveScrollbar() {
                        this._scrollbar.moveTo(this._location)
                    }
                    _scrollComplete() {
                        if (this._inBounds()) {
                            this._hideScrollbar();
                            if (this._completeDeferred) {
                                this._completeDeferred.resolve()
                            }
                        }
                        this._scrollToBounds()
                    }
                    _scrollToBounds() {
                        var _this$_bounceAction;
                        if (this._inBounds()) {
                            return
                        }
                        null === (_this$_bounceAction = this._bounceAction) || void 0 === _this$_bounceAction || _this$_bounceAction.call(this);
                        this._setupBounce();
                        this._bounceAnimator.start()
                    }
                    _setupBounce() {
                        const boundLocation = this._bounceLocation = this._boundLocation();
                        const bounceDistance = boundLocation - this._location;
                        this._velocity = bounceDistance / BOUNCE_ACCELERATION_SUM
                    }
                    _inBounds(location) {
                        location = void 0 !== location ? location : this._location;
                        return this._boundLocation(location) === location
                    }
                    _crossBoundOnNextStep() {
                        const location = this._location;
                        const nextLocation = location + this._velocity;
                        return location < this._minOffset && nextLocation >= this._minOffset || location > this._maxOffset && nextLocation <= this._maxOffset
                    }
                    _initHandler(e) {
                        this._stopScrolling();
                        this._prepareThumbScrolling(e)
                    }
                    _stopScrolling() {
                        (0, _common.deferRenderer)((() => {
                            this._hideScrollbar();
                            this._inertiaAnimator.stop();
                            this._bounceAnimator.stop()
                        }))()
                    }
                    _prepareThumbScrolling(e) {
                        if ((0, _index.isDxMouseWheelEvent)(e.originalEvent)) {
                            return
                        }
                        const $target = (0, _renderer.default)(e.originalEvent.target);
                        const scrollbarClicked = this._isScrollbar($target);
                        if (scrollbarClicked) {
                            this._moveToMouseLocation(e)
                        }
                        this._thumbScrolling = scrollbarClicked || this._isThumb($target);
                        this._crossThumbScrolling = !this._thumbScrolling && this._isAnyThumbScrolling($target);
                        if (this._thumbScrolling) {
                            this._scrollbar.feedbackOn()
                        }
                    }
                    _isThumbScrollingHandler($target) {
                        return this._isThumb($target)
                    }
                    _moveToMouseLocation(e) {
                        const mouseLocation = e[`page${this._axis.toUpperCase()}`] - this._$element.offset()[this._prop];
                        const location = this._location + mouseLocation / this._containerToContentRatio() - (0, _size.getHeight)(this._$container) / 2;
                        this._scrollStep(-Math.round(location))
                    }
                    _startHandler() {
                        this._showScrollbar()
                    }
                    _moveHandler(delta) {
                        if (this._crossThumbScrolling) {
                            return
                        }
                        if (this._thumbScrolling) {
                            delta[this._axis] = -Math.round(delta[this._axis] / this._containerToContentRatio())
                        }
                        this._scrollBy(delta)
                    }
                    _scrollBy(delta) {
                        delta = delta[this._axis];
                        if (!this._inBounds()) {
                            delta *= .5
                        }
                        this._scrollStep(delta)
                    }
                    _scrollByHandler(delta) {
                        if (!delta.x && !delta.y) {
                            return
                        }
                        this._scrollBy(delta);
                        this._scrollComplete()
                    }
                    _containerToContentRatio() {
                        return this._scrollbar.containerToContentRatio()
                    }
                    _endHandler(velocity) {
                        this._completeDeferred = (0, _deferred.Deferred)();
                        this._velocity = velocity[this._axis];
                        this._inertiaHandler();
                        this._resetThumbScrolling();
                        return this._completeDeferred.promise()
                    }
                    _inertiaHandler() {
                        this._suppressInertia();
                        this._inertiaAnimator.start()
                    }
                    _suppressInertia() {
                        if (!this._inertiaEnabled || this._thumbScrolling) {
                            this._velocity = 0
                        }
                    }
                    _resetThumbScrolling() {
                        this._thumbScrolling = false;
                        this._crossThumbScrolling = false
                    }
                    _stopHandler() {
                        if (this._thumbScrolling) {
                            this._scrollComplete()
                        }
                        this._resetThumbScrolling();
                        this._scrollToBounds()
                    }
                    _disposeHandler() {
                        this._stopScrolling();
                        this._$scrollbar.remove()
                    }
                    _updateHandler() {
                        this._update();
                        this._moveToBounds()
                    }
                    _update() {
                        this._stopScrolling();
                        return (0, _common.deferUpdate)((() => {
                            this._resetScaleRatio();
                            this._updateLocation();
                            this._updateBounds();
                            this._updateScrollbar();
                            (0, _common.deferRender)((() => {
                                this._moveScrollbar();
                                this._scrollbar.update()
                            }))
                        }))
                    }
                    _resetScaleRatio() {
                        this._scaleRatio = null
                    }
                    _updateLocation() {
                        this._location = ((0, _translator.locate)(this._$content)[this._prop] - this._$container[this._scrollProp]()) * this._getScaleRatio()
                    }
                    _updateBounds() {
                        this._maxOffset = this._getMaxOffset();
                        this._minOffset = this._getMinOffset()
                    }
                    _getMaxOffset() {
                        return 0
                    }
                    _getMinOffset() {
                        this._maxScrollPropValue = Math.max(this._contentSize() - this._containerSize(), 0);
                        return -this._maxScrollPropValue
                    }
                    _updateScrollbar() {
                        (0, _common.deferUpdater)((() => {
                            const containerSize = this._containerSize();
                            const contentSize = this._contentSize();
                            const baseContainerSize = this._getBaseDimension(this._$container.get(0), this._dimension);
                            const baseContentSize = this._getBaseDimension(this._$content.get(0), this._dimension);
                            (0, _common.deferRender)((() => {
                                this._scrollbar.option({
                                    containerSize: containerSize,
                                    contentSize: contentSize,
                                    baseContainerSize: baseContainerSize,
                                    baseContentSize: baseContentSize,
                                    scaleRatio: this._getScaleRatio()
                                })
                            }))
                        }))()
                    }
                    _moveToBounds() {
                        (0, _common.deferRenderer)((0, _common.deferUpdater)((0, _common.deferRenderer)((() => {
                            const location = this._boundLocation();
                            const locationChanged = location !== this._location;
                            this._location = location;
                            this._move();
                            if (locationChanged) {
                                var _this$_scrollAction;
                                null === (_this$_scrollAction = this._scrollAction) || void 0 === _this$_scrollAction || _this$_scrollAction.call(this)
                            }
                        }))))()
                    }
                    _createActionsHandler(actions) {
                        this._scrollAction = actions.scroll;
                        this._bounceAction = actions.bounce
                    }
                    _showScrollbar() {
                        this._scrollbar.option("visible", true)
                    }
                    _hideScrollbar() {
                        this._scrollbar.option("visible", false)
                    }
                    _containerSize() {
                        return this._getRealDimension(this._$container.get(0), this._dimension)
                    }
                    _contentSize() {
                        const isOverflowHidden = "hidden" === this._$content.css(`overflow${this._axis.toUpperCase()}`);
                        let contentSize = this._getRealDimension(this._$content.get(0), this._dimension);
                        if (!isOverflowHidden) {
                            const containerScrollSize = this._$content[0][`scroll${(0,_inflector.titleize)(this._dimension)}`] * this._getScaleRatio();
                            contentSize = Math.max(containerScrollSize, contentSize)
                        }
                        return contentSize
                    }
                    _validateEvent(e) {
                        const $target = (0, _renderer.default)(e.originalEvent.target);
                        return this._isThumb($target) || this._isScrollbar($target)
                    }
                    _isThumb($element) {
                        return this._scrollByThumb && this._scrollbar.isThumb($element)
                    }
                    _isScrollbar($element) {
                        return this._scrollByThumb && (null === $element || void 0 === $element ? void 0 : $element.is(this._$scrollbar))
                    }
                    _reachedMin() {
                        return Math.round(this._location - this._minOffset) <= 0
                    }
                    _reachedMax() {
                        return Math.round(this._location - this._maxOffset) >= 0
                    }
                    _cursorEnterHandler() {
                        this._resetScaleRatio();
                        this._updateScrollbar();
                        this._scrollbar.cursorEnter()
                    }
                    _cursorLeaveHandler() {
                        this._scrollbar.cursorLeave()
                    }
                    dispose() {}
                }
                exports.Scroller = Scroller;
                let hoveredScrollable;
                let activeScrollable;
                class SimulatedStrategy extends(_class.default.inherit({})) {
                    ctor(scrollable) {
                        this._init(scrollable)
                    }
                    _init(scrollable) {
                        this._component = scrollable;
                        this._$element = scrollable.$element();
                        this._$container = (0, _renderer.default)(scrollable.container());
                        this._$wrapper = scrollable._$wrapper;
                        this._$content = scrollable.$content();
                        this.option = scrollable.option.bind(scrollable);
                        this._createActionByOption = scrollable._createActionByOption.bind(scrollable);
                        this._isLocked = scrollable._isLocked.bind(scrollable);
                        this._isDirection = scrollable._isDirection.bind(scrollable);
                        this._allowedDirection = scrollable._allowedDirection.bind(scrollable);
                        this._getMaxOffset = scrollable._getMaxOffset.bind(scrollable)
                    }
                    render() {
                        this._$element.addClass("dx-scrollable-simulated");
                        this._createScrollers();
                        if (this.option("useKeyboard")) {
                            this._$container.prop("tabIndex", 0)
                        }
                        this._attachKeyboardHandler();
                        this._attachCursorHandlers()
                    }
                    _createScrollers() {
                        this._scrollers = {};
                        if (this._isDirection(HORIZONTAL)) {
                            this._createScroller(HORIZONTAL)
                        }
                        if (this._isDirection("vertical")) {
                            this._createScroller("vertical")
                        }
                        this._$element.toggleClass("dx-scrollable-scrollbars-alwaysvisible", "always" === this.option("showScrollbar"))
                    }
                    _createScroller(direction) {
                        this._scrollers[direction] = new Scroller(this._scrollerOptions(direction))
                    }
                    _scrollerOptions(direction) {
                        return {
                            direction: direction,
                            $content: this._$content,
                            $container: this._$container,
                            $wrapper: this._$wrapper,
                            $element: this._$element,
                            scrollByThumb: this.option("scrollByThumb"),
                            scrollbarVisible: this.option("showScrollbar"),
                            bounceEnabled: this.option("bounceEnabled"),
                            inertiaEnabled: this.option("inertiaEnabled"),
                            isAnyThumbScrolling: this._isAnyThumbScrolling.bind(this)
                        }
                    }
                    _applyScaleRatio(targetLocation) {
                        for (const direction in this._scrollers) {
                            const prop = this._getPropByDirection(direction);
                            if ((0, _type.isDefined)(targetLocation[prop])) {
                                const scroller = this._scrollers[direction];
                                targetLocation[prop] *= scroller._getScaleRatio()
                            }
                        }
                        return targetLocation
                    }
                    _isAnyThumbScrolling($target) {
                        let result = false;
                        this._eventHandler("isThumbScrolling", $target).done(((isThumbScrollingVertical, isThumbScrollingHorizontal) => {
                            result = isThumbScrollingVertical || isThumbScrollingHorizontal
                        }));
                        return result
                    }
                    handleInit(e) {
                        this._suppressDirections(e);
                        this._eventForUserAction = e;
                        this._eventHandler("init", e)
                    }
                    _suppressDirections(e) {
                        if ((0, _index.isDxMouseWheelEvent)(e.originalEvent)) {
                            this._prepareDirections(true);
                            return
                        }
                        this._prepareDirections();
                        this._eachScroller((function(scroller, direction) {
                            const $target = (0, _renderer.default)(e.originalEvent.target);
                            const isValid = scroller._validateEvent(e) || this.option("scrollByContent") && this._isContent($target);
                            this._validDirections[direction] = isValid
                        }))
                    }
                    _isContent($element) {
                        return !!$element.closest(this._$element).length
                    }
                    _prepareDirections(value) {
                        value = value || false;
                        this._validDirections = {};
                        this._validDirections[HORIZONTAL] = value;
                        this._validDirections.vertical = value
                    }
                    _eachScroller(callback) {
                        callback = callback.bind(this);
                        (0, _iterator.each)(this._scrollers, ((direction, scroller) => {
                            callback(scroller, direction)
                        }))
                    }
                    handleStart(e) {
                        this._eventForUserAction = e;
                        this._eventHandler("start").done(this._startAction)
                    }
                    _saveActive() {
                        activeScrollable = this
                    }
                    _resetActive() {
                        if (activeScrollable === this) {
                            activeScrollable = null
                        }
                    }
                    handleMove(e) {
                        var _e$preventDefault;
                        if (this._isLocked()) {
                            e.cancel = true;
                            this._resetActive();
                            return
                        }
                        this._saveActive();
                        null === (_e$preventDefault = e.preventDefault) || void 0 === _e$preventDefault || _e$preventDefault.call(e);
                        this._adjustDistance(e, e.delta);
                        this._eventForUserAction = e;
                        this._eventHandler("move", e.delta)
                    }
                    _adjustDistance(e, distance) {
                        distance.x *= this._validDirections[HORIZONTAL];
                        distance.y *= this._validDirections.vertical;
                        const devicePixelRatio = this._tryGetDevicePixelRatio();
                        if (devicePixelRatio && (0, _index.isDxMouseWheelEvent)(e.originalEvent)) {
                            distance.x = Math.round(distance.x / devicePixelRatio * 100) / 100;
                            distance.y = Math.round(distance.y / devicePixelRatio * 100) / 100
                        }
                    }
                    _tryGetDevicePixelRatio() {
                        if ((0, _window.hasWindow)()) {
                            return (0, _window.getWindow)().devicePixelRatio
                        }
                    }
                    handleEnd(e) {
                        var _e$originalEvent;
                        this._resetActive();
                        this._refreshCursorState(null === (_e$originalEvent = e.originalEvent) || void 0 === _e$originalEvent ? void 0 : _e$originalEvent.target);
                        this._adjustDistance(e, e.velocity);
                        this._eventForUserAction = e;
                        return this._eventHandler("end", e.velocity).done(this._endAction)
                    }
                    handleCancel(e) {
                        this._resetActive();
                        this._eventForUserAction = e;
                        return this._eventHandler("end", {
                            x: 0,
                            y: 0
                        })
                    }
                    handleStop() {
                        this._resetActive();
                        this._eventHandler("stop")
                    }
                    handleScroll() {
                        var _this$_scrollAction2;
                        this._updateRtlConfig();
                        null === (_this$_scrollAction2 = this._scrollAction) || void 0 === _this$_scrollAction2 || _this$_scrollAction2.call(this)
                    }
                    _attachKeyboardHandler() {
                        _events_engine.default.off(this._$element, ".dxSimulatedScrollableKeyboard");
                        if (!this.option("disabled") && this.option("useKeyboard")) {
                            _events_engine.default.on(this._$element, (0, _index.addNamespace)("keydown", "dxSimulatedScrollableKeyboard"), this._keyDownHandler.bind(this))
                        }
                    }
                    _keyDownHandler(e) {
                        clearTimeout(this._updateHandlerTimeout);
                        this._updateHandlerTimeout = setTimeout((() => {
                            if ((0, _index.normalizeKeyName)(e) === KEY_CODES_TAB) {
                                this._eachScroller((scroller => {
                                    scroller._updateHandler()
                                }))
                            }
                        }));
                        if (!this._$container.is(_dom_adapter.default.getActiveElement(this._$container.get(0)))) {
                            return
                        }
                        let handled = true;
                        switch ((0, _index.normalizeKeyName)(e)) {
                            case KEY_CODES_DOWN:
                                this._scrollByLine({
                                    y: 1
                                });
                                break;
                            case KEY_CODES_UP:
                                this._scrollByLine({
                                    y: -1
                                });
                                break;
                            case KEY_CODES_RIGHT:
                                this._scrollByLine({
                                    x: 1
                                });
                                break;
                            case KEY_CODES_LEFT:
                                this._scrollByLine({
                                    x: -1
                                });
                                break;
                            case KEY_CODES_PAGE_DOWN:
                                this._scrollByPage(1);
                                break;
                            case KEY_CODES_PAGE_UP:
                                this._scrollByPage(-1);
                                break;
                            case KEY_CODES_HOME:
                                this._scrollToHome();
                                break;
                            case KEY_CODES_END:
                                this._scrollToEnd();
                                break;
                            default:
                                handled = false
                        }
                        if (handled) {
                            e.stopPropagation();
                            e.preventDefault()
                        }
                    }
                    _scrollByLine(lines) {
                        const devicePixelRatio = this._tryGetDevicePixelRatio();
                        let scrollOffset = 40;
                        if (devicePixelRatio) {
                            scrollOffset = Math.abs(scrollOffset / devicePixelRatio * 100) / 100
                        }
                        this.scrollBy({
                            top: (lines.y || 0) * -scrollOffset,
                            left: (lines.x || 0) * -scrollOffset
                        })
                    }
                    _scrollByPage(page) {
                        const prop = this._wheelProp();
                        const dimension = this._dimensionByProp(prop);
                        const distance = {};
                        const getter = "width" === dimension ? _size.getWidth : _size.getHeight;
                        distance[prop] = page * -getter(this._$container);
                        this.scrollBy(distance)
                    }
                    _dimensionByProp(prop) {
                        return "left" === prop ? "width" : "height"
                    }
                    _getPropByDirection(direction) {
                        return direction === HORIZONTAL ? "left" : "top"
                    }
                    _scrollToHome() {
                        const prop = this._wheelProp();
                        const distance = {};
                        distance[prop] = 0;
                        this._component.scrollTo(distance)
                    }
                    _scrollToEnd() {
                        const prop = this._wheelProp();
                        const dimension = this._dimensionByProp(prop);
                        const distance = {};
                        const getter = "width" === dimension ? _size.getWidth : _size.getHeight;
                        distance[prop] = getter(this._$content) - getter(this._$container);
                        this._component.scrollTo(distance)
                    }
                    createActions() {
                        this._startAction = this._createActionHandler("onStart");
                        this._endAction = this._createActionHandler("onEnd");
                        this._updateAction = this._createActionHandler("onUpdated");
                        this._createScrollerActions()
                    }
                    _createScrollerActions() {
                        this._scrollAction = this._createActionHandler("onScroll");
                        this._bounceAction = this._createActionHandler("onBounce");
                        this._eventHandler("createActions", {
                            scroll: this._scrollAction,
                            bounce: this._bounceAction
                        })
                    }
                    _createActionHandler(optionName) {
                        const actionHandler = this._createActionByOption(optionName);
                        return () => {
                            actionHandler((0, _extend.extend)(this._createActionArgs(), arguments))
                        }
                    }
                    _createActionArgs() {
                        const {
                            horizontal: scrollerX,
                            vertical: scrollerY
                        } = this._scrollers;
                        const offset = this._getScrollOffset();
                        this._scrollOffset = {
                            top: scrollerY && offset.top,
                            left: scrollerX && offset.left
                        };
                        return {
                            event: this._eventForUserAction,
                            scrollOffset: this._scrollOffset,
                            reachedLeft: null === scrollerX || void 0 === scrollerX ? void 0 : scrollerX._reachedMax(),
                            reachedRight: null === scrollerX || void 0 === scrollerX ? void 0 : scrollerX._reachedMin(),
                            reachedTop: null === scrollerY || void 0 === scrollerY ? void 0 : scrollerY._reachedMax(),
                            reachedBottom: null === scrollerY || void 0 === scrollerY ? void 0 : scrollerY._reachedMin()
                        }
                    }
                    _getScrollOffset() {
                        return {
                            top: -this.location().top,
                            left: -this.location().left
                        }
                    }
                    _eventHandler(eventName, location) {
                        const args = [].slice.call(arguments).slice(1);
                        const deferreds = (0, _iterator.map)(this._scrollers, (scroller => scroller[`_${eventName}Handler`].apply(scroller, args)));
                        return _deferred.when.apply(_renderer.default, deferreds).promise()
                    }
                    location() {
                        const location = (0, _translator.locate)(this._$content);
                        location.top -= this._$container.scrollTop();
                        location.left -= this._$container.scrollLeft();
                        return location
                    }
                    disabledChanged() {
                        this._attachCursorHandlers()
                    }
                    _attachCursorHandlers() {
                        _events_engine.default.off(this._$element, ".dxSimulatedScrollableCursor");
                        if (!this.option("disabled") && this._isHoverMode()) {
                            _events_engine.default.on(this._$element, (0, _index.addNamespace)("mouseenter", "dxSimulatedScrollableCursor"), this._cursorEnterHandler.bind(this));
                            _events_engine.default.on(this._$element, (0, _index.addNamespace)("mouseleave", "dxSimulatedScrollableCursor"), this._cursorLeaveHandler.bind(this))
                        }
                    }
                    _isHoverMode() {
                        return "onHover" === this.option("showScrollbar")
                    }
                    _cursorEnterHandler(e) {
                        e = e || {};
                        e.originalEvent = e.originalEvent || {};
                        if (activeScrollable || e.originalEvent._hoverHandled) {
                            return
                        }
                        if (hoveredScrollable) {
                            hoveredScrollable._cursorLeaveHandler()
                        }
                        hoveredScrollable = this;
                        this._eventHandler("cursorEnter");
                        e.originalEvent._hoverHandled = true
                    }
                    _cursorLeaveHandler(e) {
                        if (hoveredScrollable !== this || activeScrollable === hoveredScrollable) {
                            return
                        }
                        this._eventHandler("cursorLeave");
                        hoveredScrollable = null;
                        this._refreshCursorState(null === e || void 0 === e ? void 0 : e.relatedTarget)
                    }
                    _refreshCursorState(target) {
                        if (!this._isHoverMode() && (!target || activeScrollable)) {
                            return
                        }
                        const $target = (0, _renderer.default)(target);
                        const $scrollable = $target.closest(".dx-scrollable-simulated:not(.dx-state-disabled)");
                        const targetScrollable = $scrollable.length && $scrollable.data("dxScrollableStrategy");
                        if (hoveredScrollable && hoveredScrollable !== targetScrollable) {
                            hoveredScrollable._cursorLeaveHandler()
                        }
                        if (targetScrollable) {
                            targetScrollable._cursorEnterHandler()
                        }
                    }
                    update() {
                        const result = this._eventHandler("update").done(this._updateAction);
                        return (0, _deferred.when)(result, (0, _common.deferUpdate)((() => {
                            const allowedDirections = this._allowedDirections();
                            (0, _common.deferRender)((() => {
                                let touchDirection = allowedDirections.vertical ? "pan-x" : "";
                                touchDirection = allowedDirections.horizontal ? "pan-y" : touchDirection;
                                touchDirection = allowedDirections.vertical && allowedDirections.horizontal ? "none" : touchDirection;
                                this._$container.css("touchAction", touchDirection)
                            }));
                            return (0, _deferred.when)().promise()
                        })))
                    }
                    _allowedDirections() {
                        const bounceEnabled = this.option("bounceEnabled");
                        const verticalScroller = this._scrollers.vertical;
                        const horizontalScroller = this._scrollers[HORIZONTAL];
                        return {
                            vertical: verticalScroller && (verticalScroller._minOffset < 0 || bounceEnabled),
                            horizontal: horizontalScroller && (horizontalScroller._minOffset < 0 || bounceEnabled)
                        }
                    }
                    _updateBounds() {
                        var _this$_scrollers$HORI;
                        null === (_this$_scrollers$HORI = this._scrollers[HORIZONTAL]) || void 0 === _this$_scrollers$HORI || _this$_scrollers$HORI._updateBounds()
                    }
                    _isHorizontalAndRtlEnabled() {
                        return this.option("rtlEnabled") && "vertical" !== this.option("direction")
                    }
                    updateRtlPosition(needInitializeRtlConfig) {
                        if (needInitializeRtlConfig) {
                            this._rtlConfig = {
                                scrollRight: 0,
                                clientWidth: this._$container.get(0).clientWidth,
                                windowPixelRatio: this._getWindowDevicePixelRatio()
                            }
                        }
                        this._updateBounds();
                        if (this._isHorizontalAndRtlEnabled()) {
                            let scrollLeft = this._getMaxOffset().left - this._rtlConfig.scrollRight;
                            if (scrollLeft <= 0) {
                                scrollLeft = 0;
                                this._rtlConfig.scrollRight = this._getMaxOffset().left
                            }
                            if (this._getScrollOffset().left !== scrollLeft) {
                                this._rtlConfig.skipUpdating = true;
                                this._component.scrollTo({
                                    left: scrollLeft
                                });
                                this._rtlConfig.skipUpdating = false
                            }
                        }
                    }
                    _updateRtlConfig() {
                        if (this._isHorizontalAndRtlEnabled() && !this._rtlConfig.skipUpdating) {
                            const {
                                clientWidth: clientWidth,
                                scrollLeft: scrollLeft
                            } = this._$container.get(0);
                            const windowPixelRatio = this._getWindowDevicePixelRatio();
                            if (this._rtlConfig.windowPixelRatio === windowPixelRatio && this._rtlConfig.clientWidth === clientWidth) {
                                this._rtlConfig.scrollRight = this._getMaxOffset().left - scrollLeft
                            }
                            this._rtlConfig.clientWidth = clientWidth;
                            this._rtlConfig.windowPixelRatio = windowPixelRatio
                        }
                    }
                    _getWindowDevicePixelRatio() {
                        return (0, _window.hasWindow)() ? (0, _window.getWindow)().devicePixelRatio : 1
                    }
                    scrollBy(distance) {
                        var _this$_startAction, _this$_endAction;
                        const verticalScroller = this._scrollers.vertical;
                        const horizontalScroller = this._scrollers[HORIZONTAL];
                        if (verticalScroller) {
                            distance.top = verticalScroller._boundLocation(distance.top + verticalScroller._location) - verticalScroller._location
                        }
                        if (horizontalScroller) {
                            distance.left = horizontalScroller._boundLocation(distance.left + horizontalScroller._location) - horizontalScroller._location
                        }
                        this._prepareDirections(true);
                        null === (_this$_startAction = this._startAction) || void 0 === _this$_startAction || _this$_startAction.call(this);
                        this._eventHandler("scrollBy", {
                            x: distance.left,
                            y: distance.top
                        });
                        null === (_this$_endAction = this._endAction) || void 0 === _this$_endAction || _this$_endAction.call(this);
                        this._updateRtlConfig()
                    }
                    validate(e) {
                        if ((0, _index.isDxMouseWheelEvent)(e) && (0, _index.isCommandKeyPressed)(e)) {
                            return false
                        }
                        if (this.option("disabled")) {
                            return false
                        }
                        if (this.option("bounceEnabled")) {
                            return true
                        }
                        return (0, _index.isDxMouseWheelEvent)(e) ? this._validateWheel(e) : this._validateMove(e)
                    }
                    _validateWheel(e) {
                        const scroller = this._scrollers[this._wheelDirection(e)];
                        const reachedMin = scroller._reachedMin();
                        const reachedMax = scroller._reachedMax();
                        const contentGreaterThanContainer = !reachedMin || !reachedMax;
                        const locatedNotAtBound = !reachedMin && !reachedMax;
                        const scrollFromMin = reachedMin && e.delta > 0;
                        const scrollFromMax = reachedMax && e.delta < 0;
                        let validated = contentGreaterThanContainer && (locatedNotAtBound || scrollFromMin || scrollFromMax);
                        validated = validated || void 0 !== this._validateWheelTimer;
                        if (validated) {
                            clearTimeout(this._validateWheelTimer);
                            this._validateWheelTimer = setTimeout((() => {
                                this._validateWheelTimer = void 0
                            }), 500)
                        }
                        return validated
                    }
                    _validateMove(e) {
                        if (!this.option("scrollByContent") && !(0, _renderer.default)(e.target).closest(".dx-scrollable-scrollbar").length) {
                            return false
                        }
                        return this._allowedDirection()
                    }
                    getDirection(e) {
                        return (0, _index.isDxMouseWheelEvent)(e) ? this._wheelDirection(e) : this._allowedDirection()
                    }
                    _wheelProp() {
                        return this._wheelDirection() === HORIZONTAL ? "left" : "top"
                    }
                    _wheelDirection(e) {
                        switch (this.option("direction")) {
                            case HORIZONTAL:
                                return HORIZONTAL;
                            case "vertical":
                                return "vertical";
                            default:
                                return null !== e && void 0 !== e && e.shiftKey ? HORIZONTAL : "vertical"
                        }
                    }
                    dispose() {
                        this._resetActive();
                        if (hoveredScrollable === this) {
                            hoveredScrollable = null
                        }
                        this._eventHandler("dispose");
                        this._detachEventHandlers();
                        this._$element.removeClass("dx-scrollable-simulated");
                        this._eventForUserAction = null;
                        clearTimeout(this._validateWheelTimer);
                        clearTimeout(this._updateHandlerTimeout)
                    }
                    _detachEventHandlers() {
                        _events_engine.default.off(this._$element, ".dxSimulatedScrollableCursor");
                        _events_engine.default.off(this._$container, ".dxSimulatedScrollableKeyboard")
                    }
                }
                exports.SimulatedStrategy = SimulatedStrategy
            },
        86853:
            /*!**************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/ui/scroll_view/m_scrollbar.js ***!
              \**************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _translator = __webpack_require__( /*! ../../../common/core/animation/translator */ 88603);
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774));
                var _pointer = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/pointer */ 89797));
                var _index = __webpack_require__( /*! ../../../common/core/events/utils/index */ 98834);
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../core/dom_adapter */ 64960));
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553));
                var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781);
                var _ready_callbacks = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/ready_callbacks */ 3122));
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528);
                var _widget = _interopRequireDefault(__webpack_require__( /*! ../../core/widget/widget */ 89275));

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }

                function _extends() {
                    return _extends = Object.assign ? Object.assign.bind() : function(n) {
                        for (var e = 1; e < arguments.length; e++) {
                            var t = arguments[e];
                            for (var r in t) {
                                ({}).hasOwnProperty.call(t, r) && (n[r] = t[r])
                            }
                        }
                        return n
                    }, _extends.apply(null, arguments)
                }
                const SCROLLBAR_VISIBLE_onScroll = "onScroll",
                    SCROLLBAR_VISIBLE_onHover = "onHover",
                    SCROLLBAR_VISIBLE_always = "always",
                    SCROLLBAR_VISIBLE_never = "never";
                let activeScrollbar = null;
                class Scrollbar extends _widget.default {
                    _getDefaultOptions() {
                        return _extends({}, super._getDefaultOptions(), {
                            direction: null,
                            visible: false,
                            activeStateEnabled: false,
                            visibilityMode: SCROLLBAR_VISIBLE_onScroll,
                            containerSize: 0,
                            contentSize: 0,
                            expandable: true,
                            scaleRatio: 1
                        })
                    }
                    _init() {
                        super._init();
                        this._isHovered = false
                    }
                    _initMarkup() {
                        this._renderThumb();
                        super._initMarkup()
                    }
                    _render() {
                        super._render();
                        this._renderDirection();
                        this._update();
                        this._attachPointerDownHandler();
                        this.option("hoverStateEnabled", this._isHoverMode());
                        const {
                            hoverStateEnabled: hoverStateEnabled
                        } = this.option();
                        this.$element().toggleClass("dx-scrollbar-hoverable", hoverStateEnabled)
                    }
                    _renderThumb() {
                        this._$thumb = (0, _renderer.default)("<div>").addClass("dx-scrollable-scroll");
                        (0, _renderer.default)("<div>").addClass("dx-scrollable-scroll-content").appendTo(this._$thumb);
                        this.$element().addClass("dx-scrollable-scrollbar").append(this._$thumb)
                    }
                    isThumb($element) {
                        return !!this.$element().find($element).length
                    }
                    _isHoverMode() {
                        const {
                            visibilityMode: visibilityMode,
                            expandable: expandable
                        } = this.option();
                        return (visibilityMode === SCROLLBAR_VISIBLE_onHover || visibilityMode === SCROLLBAR_VISIBLE_always) && expandable
                    }
                    _renderDirection() {
                        const {
                            direction: direction
                        } = this.option();
                        this.$element().addClass(`dx-scrollbar-${direction}`);
                        this._dimension = "horizontal" === direction ? "width" : "height";
                        this._prop = "horizontal" === direction ? "left" : "top"
                    }
                    _attachPointerDownHandler() {
                        _events_engine.default.on(this._$thumb, (0, _index.addNamespace)(_pointer.default.down, "dxScrollbar"), this.feedbackOn.bind(this))
                    }
                    feedbackOn(e) {
                        null === e || void 0 === e || e.preventDefault();
                        this.$element().addClass("dx-scrollable-scrollbar-active");
                        activeScrollbar = this
                    }
                    feedbackOff() {
                        this.$element().removeClass("dx-scrollable-scrollbar-active");
                        activeScrollbar = null
                    }
                    cursorEnter() {
                        this._isHovered = true;
                        if (this._needScrollbar()) {
                            this.option("visible", true)
                        }
                    }
                    cursorLeave() {
                        this._isHovered = false;
                        this.option("visible", false)
                    }
                    _renderDimensions() {
                        this._$thumb.css({
                            width: this.option("width"),
                            height: this.option("height")
                        })
                    }
                    _toggleVisibility(visible) {
                        const {
                            visibilityMode: visibilityMode
                        } = this.option();
                        if (visibilityMode === SCROLLBAR_VISIBLE_onScroll) {
                            this._$thumb.css("opacity")
                        }
                        visible = this._adjustVisibility(visible);
                        this.option().visible = visible;
                        this._$thumb.toggleClass("dx-state-invisible", !visible)
                    }
                    _adjustVisibility(visible) {
                        if (this._baseContainerToContentRatio && !this._needScrollbar()) {
                            return false
                        }
                        const {
                            visibilityMode: visibilityMode
                        } = this.option();
                        switch (visibilityMode) {
                            case SCROLLBAR_VISIBLE_onScroll:
                                break;
                            case SCROLLBAR_VISIBLE_onHover:
                                visible = visible || !!this._isHovered;
                                break;
                            case SCROLLBAR_VISIBLE_never:
                                visible = false;
                                break;
                            case SCROLLBAR_VISIBLE_always:
                                visible = true
                        }
                        return visible
                    }
                    moveTo(location) {
                        if (this._isHidden()) {
                            return
                        }
                        if ((0, _type.isPlainObject)(location)) {
                            location = location[this._prop] || 0
                        }
                        const scrollBarLocation = {};
                        scrollBarLocation[this._prop] = this._calculateScrollBarPosition(location);
                        (0, _translator.move)(this._$thumb, scrollBarLocation)
                    }
                    _calculateScrollBarPosition(location) {
                        return -location * this._thumbRatio
                    }
                    _update() {
                        const containerSize = Math.round(this.option("containerSize"));
                        const contentSize = Math.round(this.option("contentSize"));
                        let baseContainerSize = Math.round(this.option("baseContainerSize"));
                        let baseContentSize = Math.round(this.option("baseContentSize"));
                        if (isNaN(baseContainerSize)) {
                            baseContainerSize = containerSize;
                            baseContentSize = contentSize
                        }
                        const {
                            scaleRatio: scaleRatio
                        } = this.option();
                        this._baseContainerToContentRatio = baseContentSize ? baseContainerSize / baseContentSize : baseContainerSize;
                        this._realContainerToContentRatio = contentSize ? containerSize / contentSize : containerSize;
                        const thumbSize = Math.round(Math.max(Math.round(containerSize * this._realContainerToContentRatio), 15));
                        this._thumbRatio = (containerSize - thumbSize) / (scaleRatio * (contentSize - containerSize));
                        this.option(this._dimension, thumbSize / scaleRatio);
                        this.$element().css("display", this._needScrollbar() ? "" : "none")
                    }
                    _isHidden() {
                        const {
                            visibilityMode: visibilityMode
                        } = this.option();
                        return visibilityMode === SCROLLBAR_VISIBLE_never
                    }
                    _needScrollbar() {
                        return !this._isHidden() && this._baseContainerToContentRatio < 1
                    }
                    containerToContentRatio() {
                        return this._realContainerToContentRatio
                    }
                    _normalizeSize(size) {
                        return (0, _type.isPlainObject)(size) ? size[this._dimension] || 0 : size
                    }
                    _clean() {
                        super._clean();
                        if (this === activeScrollbar) {
                            activeScrollbar = null
                        }
                        _events_engine.default.off(this._$thumb, ".dxScrollbar")
                    }
                    _optionChanged(args) {
                        if (this._isHidden()) {
                            return
                        }
                        switch (args.name) {
                            case "containerSize":
                            case "contentSize":
                                this.option()[args.name] = this._normalizeSize(args.value);
                                this._update();
                                break;
                            case "baseContentSize":
                            case "baseContainerSize":
                            case "scaleRatio":
                                this._update();
                                break;
                            case "visibilityMode":
                            case "direction":
                                this._invalidate();
                                break;
                            default:
                                super._optionChanged.apply(this, arguments)
                        }
                    }
                    update() {
                        (0, _common.deferRenderer)((() => {
                            this._adjustVisibility() && this.option("visible", true)
                        }))()
                    }
                }
                _ready_callbacks.default.add((() => {
                    _events_engine.default.subscribeGlobal(_dom_adapter.default.getDocument(), (0, _index.addNamespace)(_pointer.default.up, "dxScrollbar"), (() => {
                        if (activeScrollbar) {
                            activeScrollbar.feedbackOff()
                        }
                    }))
                }));
                exports.default = Scrollbar
            },
        62504:
            /*!**************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/ui/scroll_view/utils/get_element_location_internal.js ***!
              \**************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.getElementLocationInternal = function(targetElement, direction, containerElement, scrollOffset, offset) {
                    let scrollableContentClass = arguments.length > 5 && void 0 !== arguments[5] ? arguments[5] : _consts.SCROLLABLE_CONTENT_CLASS;
                    const additionalOffset = _extends({
                        top: 0,
                        left: 0,
                        right: 0,
                        bottom: 0
                    }, offset);
                    const isVertical = direction === _consts.DIRECTION_VERTICAL;
                    const prop = isVertical ? "top" : "left";
                    const inverseProp = isVertical ? "bottom" : "right";
                    const dimension = isVertical ? "height" : "width";
                    const containerOffsetSize = containerElement[`offset${(0,_inflector.titleize)(dimension)}`];
                    const containerClientSize = containerElement[`client${(0,_inflector.titleize)(dimension)}`];
                    const containerSize = containerElement.getBoundingClientRect()[dimension];
                    const elementSize = targetElement.getBoundingClientRect()[dimension];
                    let scale = 1;
                    if (Math.abs(containerSize - containerOffsetSize) > 1) {
                        scale = containerSize / containerOffsetSize
                    }
                    const relativeElementOffset = (0, _get_relative_offset.getRelativeOffset)(scrollableContentClass, targetElement)[prop] / scale;
                    const containerScrollOffset = scrollOffset[prop];
                    const relativeStartOffset = containerScrollOffset - relativeElementOffset + additionalOffset[prop];
                    const relativeEndOffset = containerScrollOffset - relativeElementOffset - elementSize / scale + containerClientSize - additionalOffset[inverseProp];
                    if (relativeStartOffset <= 0 && relativeEndOffset >= 0) {
                        return containerScrollOffset
                    }
                    return containerScrollOffset - (Math.abs(relativeStartOffset) > Math.abs(relativeEndOffset) ? relativeEndOffset : relativeStartOffset)
                };
                var _inflector = __webpack_require__( /*! ../../../../core/utils/inflector */ 53124);
                var _consts = __webpack_require__( /*! ../consts */ 21363);
                var _get_relative_offset = __webpack_require__( /*! ./get_relative_offset */ 91524);

                function _extends() {
                    return _extends = Object.assign ? Object.assign.bind() : function(n) {
                        for (var e = 1; e < arguments.length; e++) {
                            var t = arguments[e];
                            for (var r in t) {
                                ({}).hasOwnProperty.call(t, r) && (n[r] = t[r])
                            }
                        }
                        return n
                    }, _extends.apply(null, arguments)
                }
            },
        91524:
            /*!****************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/ui/scroll_view/utils/get_relative_offset.js ***!
              \****************************************************************************************************/
            function(__unused_webpack_module, exports) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.getRelativeOffset = function(targetElementClass, sourceElement) {
                    const offset = {
                        left: 0,
                        top: 0
                    };
                    let element = sourceElement;
                    while (null !== (_element = element) && void 0 !== _element && _element.offsetParent && !element.classList.contains(targetElementClass)) {
                        var _element;
                        const parentElement = element.offsetParent;
                        const elementRect = element.getBoundingClientRect();
                        const parentElementRect = parentElement.getBoundingClientRect();
                        offset.left += elementRect.left - parentElementRect.left;
                        offset.top += elementRect.top - parentElementRect.top;
                        element = element.offsetParent
                    }
                    return offset
                }
            },
        24491:
            /*!********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/utils/toMilliseconds.js ***!
              \********************************************************************************/
            function(__unused_webpack_module, exports) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.toMilliseconds = function(value) {
                    return timeIntervals[value]
                };
                const timeIntervals = {
                    millisecond: 1,
                    second: 1e3,
                    minute: 6e4,
                    hour: 36e5,
                    day: 864e5,
                    week: 6048e5,
                    month: 2592e6,
                    quarter: 7776e6,
                    year: 31536e6
                }
            },
        20258:
            /*!*************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/utils/version.js ***!
              \*************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.assertDevExtremeVersion = function(packageName, version) {
                    assertedVersions.push({
                        packageName: packageName,
                        version: version
                    })
                };
                exports.assertedVersionsCompatible = function(currentVersion) {
                    const mismatchingVersions = assertedVersions.filter((assertedVersion => {
                        return !(versionA = parseVersion(assertedVersion.version), versionB = currentVersion, versionA.major === versionB.major && versionA.minor === versionB.minor && versionA.patch === versionB.patch);
                        var versionA, versionB
                    }));
                    if (mismatchingVersions.length) {
                        _errors.default.log("W0023", (assertedVersionList = [{
                            packageName: "devextreme",
                            version: stringifyVersion(currentVersion)
                        }, ...mismatchingVersions], assertedVersionList.map((assertedVersion => `${assertedVersion.packageName}: ${assertedVersion.version}`)).join("\n")));
                        return false
                    }
                    var assertedVersionList;
                    return true
                };
                exports.clearAssertedVersions = function() {};
                exports.getPreviousMajorVersion = function(_ref) {
                    let {
                        major: major,
                        minor: minor,
                        patch: patch
                    } = _ref;
                    const previousMajorVersion = minor === MIN_MINOR_VERSION ? {
                        major: major - 1,
                        minor: MAX_MINOR_VERSION,
                        patch: patch
                    } : {
                        major: major,
                        minor: minor - 1,
                        patch: patch
                    };
                    return previousMajorVersion
                };
                exports.parseVersion = parseVersion;
                exports.stringifyVersion = stringifyVersion;
                var _errors = (e = __webpack_require__( /*! ../../core/errors */ 87129), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                const MAX_MINOR_VERSION = 2;
                const MIN_MINOR_VERSION = 1;
                const assertedVersions = [];
                const VERSION_SPLITTER = ".";

                function stringifyVersion(version) {
                    const {
                        major: major,
                        minor: minor,
                        patch: patch
                    } = version;
                    return [major, minor, patch].join(VERSION_SPLITTER)
                }

                function parseVersion(version) {
                    const [major, minor, patch] = version.split(".").map(Number);
                    return {
                        major: major,
                        minor: minor,
                        patch: patch
                    }
                }
            },
        78609:
            /*!*************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/viz/chart_components/m_advanced_chart.js ***!
              \*************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.AdvancedChart = void 0;
                var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781);
                var _extend2 = __webpack_require__( /*! ../../../core/utils/extend */ 52576);
                var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274);
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528);
                var _base_axis = __webpack_require__( /*! ../../../viz/axes/base_axis */ 99091);
                var _series_family = __webpack_require__( /*! ../../../viz/core/series_family */ 11348);
                var _utils = __webpack_require__( /*! ../../../viz/core/utils */ 28779);
                var _range_data_calculator = (e = __webpack_require__( /*! ../../../viz/series/helpers/range_data_calculator */ 34685), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                var _range = __webpack_require__( /*! ../../../viz/translators/range */ 99857);
                var _utils2 = __webpack_require__( /*! ../../../viz/utils */ 2225);
                var _m_base_chart = __webpack_require__( /*! ./m_base_chart */ 9410);

                function _extends() {
                    return _extends = Object.assign ? Object.assign.bind() : function(n) {
                        for (var e = 1; e < arguments.length; e++) {
                            var t = arguments[e];
                            for (var r in t) {
                                ({}).hasOwnProperty.call(t, r) && (n[r] = t[r])
                            }
                        }
                        return n
                    }, _extends.apply(null, arguments)
                }
                const {
                    isArray: isArray
                } = Array;

                function prepareAxis(axisOptions) {
                    if (isArray(axisOptions)) {
                        return 0 === axisOptions.length ? [{}] : axisOptions
                    }
                    return [axisOptions]
                }

                function setAxisVisualRangeByOption(arg, axis, isDirectOption, index) {
                    let options;
                    let visualRange;
                    if (isDirectOption) {
                        visualRange = arg.value;
                        options = {
                            skipEventRising: true
                        };
                        const wrappedVisualRange = wrapVisualRange(arg.fullName, visualRange);
                        if (wrappedVisualRange) {
                            options = {
                                allowPartialUpdate: true
                            };
                            visualRange = wrappedVisualRange
                        }
                    } else {
                        visualRange = ((0, _type.isDefined)(index) ? arg.value[index] : arg.value).visualRange
                    }
                    axis.visualRange(visualRange, options)
                }

                function wrapVisualRange(fullName, value) {
                    const pathElements = fullName.split(".");
                    const destElem = pathElements.at(-1);
                    if ("endValue" === destElem || "startValue" === destElem) {
                        return {
                            [destElem]: value
                        }
                    }
                    return
                }
                exports.AdvancedChart = _m_base_chart.BaseChart.inherit({
                    _fontFields: ["commonAxisSettings.label.font", "commonAxisSettings.title.font"],
                    _partialOptionChangesMap: {
                        visualRange: "VISUAL_RANGE",
                        _customVisualRange: "VISUAL_RANGE",
                        strips: "REFRESH_AXES",
                        constantLines: "REFRESH_AXES"
                    },
                    _partialOptionChangesPath: {
                        argumentAxis: ["strips", "constantLines", "visualRange", "_customVisualRange"],
                        valueAxis: ["strips", "constantLines", "visualRange", "_customVisualRange"]
                    },
                    _initCore() {
                        this._panesClipRects = {};
                        this.callBase()
                    },
                    _disposeCore() {
                        const disposeObjectsInArray = this._disposeObjectsInArray;
                        const panesClipRects = this._panesClipRects;
                        this.callBase();
                        disposeObjectsInArray.call(panesClipRects, "fixed");
                        disposeObjectsInArray.call(panesClipRects, "base");
                        disposeObjectsInArray.call(panesClipRects, "wide");
                        this._panesClipRects = null;
                        this._labelsAxesGroup.linkOff();
                        this._labelsAxesGroup.dispose();
                        this._labelsAxesGroup = null
                    },
                    _dispose() {
                        const disposeObjectsInArray = this._disposeObjectsInArray;
                        this.callBase();
                        this.panes = null;
                        if (this._legend) {
                            this._legend.dispose();
                            this._legend = null
                        }
                        disposeObjectsInArray.call(this, "panesBackground");
                        disposeObjectsInArray.call(this, "seriesFamilies");
                        this._disposeAxes()
                    },
                    _createPanes() {
                        this._cleanPanesClipRects("fixed");
                        this._cleanPanesClipRects("base");
                        this._cleanPanesClipRects("wide")
                    },
                    _cleanPanesClipRects(clipArrayName) {
                        const clipArray = this._panesClipRects[clipArrayName];
                        (clipArray || []).forEach((clipRect => {
                            null === clipRect || void 0 === clipRect || clipRect.dispose()
                        }));
                        this._panesClipRects[clipArrayName] = []
                    },
                    _getElementsClipRectID(paneName) {
                        const clipShape = this._panesClipRects.fixed[this._getPaneIndex(paneName)];
                        return null === clipShape || void 0 === clipShape ? void 0 : clipShape.id
                    },
                    _getPaneIndex(paneName) {
                        const name = paneName || "default";
                        return this.panes.findIndex((pane => pane.name === name))
                    },
                    _updateSize(forceUpdateCanvas) {
                        this.callBase();
                        if (forceUpdateCanvas && (0, _utils2.areCanvasesDifferent)(this.__currentCanvas, this._canvas)) {
                            this.__currentCanvas = (0, _utils2.floorCanvasDimensions)(this._canvas)
                        }(0, _utils.setCanvasValues)(this._canvas)
                    },
                    _reinitAxes() {
                        this.panes = this._createPanes();
                        this._populateAxes();
                        this._axesReinitialized = true
                    },
                    _populateAxes() {
                        const {
                            panes: panes
                        } = this;
                        const rotated = this._isRotated();
                        const argumentAxesOptions = prepareAxis(this.option("argumentAxis") || {})[0];
                        const valueAxisOption = this.option("valueAxis");
                        const valueAxesOptions = prepareAxis(valueAxisOption || {});
                        let argumentAxesPopulatedOptions = [];
                        const valueAxesPopulatedOptions = [];
                        const axisNames = [];
                        let valueAxesCounter = 0;
                        let paneWithNonVirtualAxis;
                        const crosshairMargins = this._getCrosshairMargins();

                        function getNextAxisName() {
                            const name = "defaultAxisName" + String(valueAxesCounter);
                            valueAxesCounter += 1;
                            return name
                        }
                        if (rotated) {
                            paneWithNonVirtualAxis = "right" === argumentAxesOptions.position ? panes[panes.length - 1].name : panes[0].name
                        } else {
                            paneWithNonVirtualAxis = "top" === argumentAxesOptions.position ? panes[0].name : panes[panes.length - 1].name
                        }
                        argumentAxesPopulatedOptions = (0, _utils.map)(panes, (pane => {
                            const virtual = pane.name !== paneWithNonVirtualAxis;
                            return this._populateAxesOptions("argumentAxis", argumentAxesOptions, {
                                pane: pane.name,
                                name: null,
                                optionPath: "argumentAxis",
                                crosshairMargin: rotated ? crosshairMargins.x : crosshairMargins.y
                            }, rotated, virtual)
                        }));
                        valueAxesOptions.forEach(((axisOptions, priority) => {
                            var _axisOptions$panes;
                            let axisPanes = [];
                            const {
                                name: name
                            } = axisOptions;
                            if (name && axisNames.includes(name)) {
                                this._incidentOccurred("E2102");
                                return
                            }
                            if (name) {
                                axisNames.push(name)
                            }
                            if (axisOptions.pane) {
                                axisPanes.push(axisOptions.pane)
                            }
                            if (null !== (_axisOptions$panes = axisOptions.panes) && void 0 !== _axisOptions$panes && _axisOptions$panes.length) {
                                axisPanes = axisPanes.concat(axisOptions.panes.slice(0))
                            }
                            axisPanes = (0, _utils.unique)(axisPanes);
                            if (!axisPanes.length) {
                                axisPanes.push(void 0)
                            }
                            axisPanes.forEach((pane => {
                                const optionPath = isArray(valueAxisOption) ? `valueAxis[${String(priority)}]` : "valueAxis";
                                valueAxesPopulatedOptions.push(this._populateAxesOptions("valueAxis", axisOptions, {
                                    name: name || getNextAxisName(),
                                    pane: pane,
                                    priority: priority,
                                    optionPath: optionPath,
                                    crosshairMargin: rotated ? crosshairMargins.y : crosshairMargins.x
                                }, rotated))
                            }))
                        }));
                        this._redesignAxes(argumentAxesPopulatedOptions, true, paneWithNonVirtualAxis);
                        this._redesignAxes(valueAxesPopulatedOptions, false)
                    },
                    _redesignAxes(options, isArgumentAxes, paneWithNonVirtualAxis) {
                        const axesBasis = [];
                        let axes = isArgumentAxes ? this._argumentAxes : this._valueAxes;
                        options.forEach((opt => {
                            var _axes;
                            const curAxes = null === (_axes = axes) || void 0 === _axes ? void 0 : _axes.filter((a => a.name === opt.name && (!(0, _type.isDefined)(opt.pane) && this.panes.some((p => p.name === a.pane)) || a.pane === opt.pane)));
                            if (null !== curAxes && void 0 !== curAxes && curAxes.length) {
                                curAxes.forEach((axis => {
                                    const axisTypes = function(groupsData, axis, isArgumentAxes) {
                                        if (isArgumentAxes) {
                                            return {
                                                argumentAxisType: groupsData.argumentAxisType,
                                                argumentType: groupsData.argumentType
                                            }
                                        }
                                        const {
                                            valueAxisType: valueAxisType,
                                            valueType: valueType
                                        } = groupsData.groups.find((g => g.valueAxis === axis));
                                        return {
                                            valueAxisType: valueAxisType,
                                            valueType: valueType
                                        }
                                    }(this._groupsData, axis, isArgumentAxes);
                                    axis.updateOptions(opt);
                                    if (isArgumentAxes) {
                                        axis.setTypes(axisTypes.argumentAxisType, axisTypes.argumentType, "argumentType")
                                    } else {
                                        axis.setTypes(axisTypes.valueAxisType, axisTypes.valueType, "valueType")
                                    }
                                    axis.validate();
                                    axesBasis.push({
                                        axis: axis
                                    })
                                }))
                            } else {
                                axesBasis.push({
                                    options: opt
                                })
                            }
                        }));
                        if (axes) {
                            (0, _iterator.reverseEach)(axes, ((index, axis) => {
                                if (!axesBasis.some((basis => basis.axis && basis.axis === axis))) {
                                    this._disposeAxis(index, isArgumentAxes)
                                }
                            }))
                        } else if (isArgumentAxes) {
                            axes = this._argumentAxes = []
                        } else {
                            axes = this._valueAxes = []
                        }
                        axesBasis.forEach((basis => {
                            let {
                                axis: axis
                            } = basis;
                            if (basis.axis && isArgumentAxes) {
                                basis.axis.isVirtual = basis.axis.pane !== paneWithNonVirtualAxis
                            } else if (basis.options) {
                                axis = this._createAxis(isArgumentAxes, basis.options, isArgumentAxes ? basis.options.pane !== paneWithNonVirtualAxis : void 0);
                                axes.push(axis)
                            }
                            axis.applyVisualRangeSetter(this._getVisualRangeSetter())
                        }))
                    },
                    _disposeAxis(index, isArgumentAxis) {
                        const axes = isArgumentAxis ? this._argumentAxes : this._valueAxes;
                        const axis = axes[index];
                        if (!axis) {
                            return
                        }
                        axis.dispose();
                        axes.splice(index, 1)
                    },
                    _disposeAxes() {
                        const disposeObjectsInArray = this._disposeObjectsInArray;
                        disposeObjectsInArray.call(this, "_argumentAxes");
                        disposeObjectsInArray.call(this, "_valueAxes")
                    },
                    _appendAdditionalSeriesGroups() {
                        this._crosshairCursorGroup.linkAppend();
                        if (this._scrollBar) {
                            this._scrollBarGroup.linkAppend()
                        }
                    },
                    _getLegendTargets() {
                        return (this.series || []).map((s => {
                            const item = this._getLegendOptions(s);
                            item.legendData.series = s;
                            if (!s.getOptions().showInLegend) {
                                item.legendData.visible = false
                            }
                            return item
                        }))
                    },
                    _legendItemTextField: "name",
                    _seriesPopulatedHandlerCore() {
                        this._processSeriesFamilies();
                        this._processValueAxisFormat()
                    },
                    _renderTrackers() {
                        for (let i = 0; i < this.series.length; i += 1) {
                            this.series[i].drawTrackers()
                        }
                    },
                    _specialProcessSeries() {
                        this._processSeriesFamilies()
                    },
                    _processSeriesFamilies() {
                        var _this$seriesFamilies;
                        const types = [];
                        const families = [];
                        let paneSeries;
                        const themeManager = this._themeManager;
                        const negativesAsZeroes = themeManager.getOptions("negativesAsZeroes");
                        const negativesAsZeros = themeManager.getOptions("negativesAsZeros");
                        const familyOptions = {
                            minBubbleSize: themeManager.getOptions("minBubbleSize"),
                            maxBubbleSize: themeManager.getOptions("maxBubbleSize"),
                            barGroupPadding: themeManager.getOptions("barGroupPadding"),
                            barGroupWidth: themeManager.getOptions("barGroupWidth"),
                            negativesAsZeroes: (0, _type.isDefined)(negativesAsZeroes) ? negativesAsZeroes : negativesAsZeros
                        };
                        if (null !== (_this$seriesFamilies = this.seriesFamilies) && void 0 !== _this$seriesFamilies && _this$seriesFamilies.length) {
                            this.seriesFamilies.forEach((family => {
                                family.updateOptions(familyOptions);
                                family.adjustSeriesValues()
                            }));
                            return
                        }
                        this.series.forEach((item => {
                            if (!types.includes(item.type)) {
                                types.push(item.type)
                            }
                        }));
                        this._getLayoutTargets().forEach((pane => {
                            paneSeries = this._getSeriesForPane(pane.name);
                            types.forEach((type => {
                                const family = new _series_family.SeriesFamily({
                                    type: type,
                                    pane: pane.name,
                                    minBubbleSize: familyOptions.minBubbleSize,
                                    maxBubbleSize: familyOptions.maxBubbleSize,
                                    barGroupPadding: familyOptions.barGroupPadding,
                                    barGroupWidth: familyOptions.barGroupWidth,
                                    negativesAsZeroes: familyOptions.negativesAsZeroes,
                                    rotated: this._isRotated()
                                });
                                family.add(paneSeries);
                                family.adjustSeriesValues();
                                families.push(family)
                            }))
                        }));
                        this.seriesFamilies = families
                    },
                    _updateSeriesDimensions() {
                        const seriesFamilies = this.seriesFamilies || [];
                        for (let i = 0; i < seriesFamilies.length; i += 1) {
                            const family = seriesFamilies[i];
                            family.updateSeriesValues();
                            family.adjustSeriesDimensions()
                        }
                    },
                    _getLegendCallBack(series) {
                        var _this$_legend;
                        return null === (_this$_legend = this._legend) || void 0 === _this$_legend ? void 0 : _this$_legend.getActionCallback(series)
                    },
                    _appendAxesGroups() {
                        this._stripsGroup.linkAppend();
                        this._gridGroup.linkAppend();
                        this._axesGroup.linkAppend();
                        this._labelsAxesGroup.linkAppend();
                        this._constantLinesGroup.linkAppend();
                        this._stripLabelAxesGroup.linkAppend();
                        this._scaleBreaksGroup.linkAppend()
                    },
                    _populateMarginOptions() {
                        const bubbleSize = function(size, panesCount, maxSize, rotated) {
                            const width = rotated ? size.width / panesCount : size.width;
                            const height = rotated ? size.height : size.height / panesCount;
                            return Math.min(width, height) * maxSize
                        }(this.getSize(), this.panes.length, this._themeManager.getOptions("maxBubbleSize"), this._isRotated());
                        let argumentMarginOptions = {};
                        this._valueAxes.forEach((valueAxis => {
                            const groupSeries = this.series.filter((series => series.getValueAxis() === valueAxis));
                            let marginOptions = {};
                            groupSeries.forEach((series => {
                                if (series.isVisible()) {
                                    const seriesMarginOptions = function(marginOptions, bubbleSize) {
                                        if (marginOptions.processBubbleSize) {
                                            marginOptions.size = bubbleSize
                                        }
                                        return marginOptions
                                    }(series.getMarginOptions(), bubbleSize);
                                    marginOptions = (0, _utils.mergeMarginOptions)(marginOptions, seriesMarginOptions);
                                    argumentMarginOptions = (0, _utils.mergeMarginOptions)(argumentMarginOptions, seriesMarginOptions)
                                }
                            }));
                            valueAxis.setMarginOptions(marginOptions)
                        }));
                        this._argumentAxes.forEach((a => a.setMarginOptions(argumentMarginOptions)))
                    },
                    _populateBusinessRange(updatedAxis, keepRange) {
                        const rotated = this._isRotated();
                        const series = this._getVisibleSeries();
                        const argRanges = {};
                        const commonArgRange = new _range.Range({
                            rotated: !!rotated
                        });
                        const getPaneName = axis => axis.pane || "default";
                        this.panes.forEach((p => {
                            argRanges[p.name] = new _range.Range({
                                rotated: !!rotated
                            })
                        }));
                        this._valueAxes.forEach((valueAxis => {
                            const groupRange = new _range.Range({
                                rotated: !!rotated,
                                pane: valueAxis.pane,
                                axis: valueAxis.name
                            });
                            const groupSeries = series.filter((series => series.getValueAxis() === valueAxis));
                            groupSeries.forEach((series => {
                                const seriesRange = series.getRangeData();
                                groupRange.addRange(seriesRange.val);
                                argRanges[getPaneName(valueAxis)].addRange(seriesRange.arg)
                            }));
                            if (!updatedAxis || updatedAxis && groupSeries.length && valueAxis === updatedAxis) {
                                valueAxis.setGroupSeries(groupSeries);
                                valueAxis.setBusinessRange(groupRange, this._axesReinitialized || keepRange, this._argumentAxes[0]._lastVisualRangeUpdateMode)
                            }
                        }));
                        if (!updatedAxis || updatedAxis && series.length) {
                            Object.keys(argRanges).forEach((p => commonArgRange.addRange(argRanges[p])));
                            const commonInterval = commonArgRange.interval;
                            this._argumentAxes.forEach((a => {
                                const currentInterval = argRanges[getPaneName(a)].interval ?? commonInterval;
                                a.setBusinessRange(new _range.Range(_extends({}, commonArgRange, {
                                    interval: currentInterval
                                })), this._axesReinitialized, void 0, this._groupsData.categories)
                            }))
                        }
                        this._populateMarginOptions()
                    },
                    getArgumentAxis() {
                        return (this._argumentAxes || []).find((a => !a.isVirtual))
                    },
                    getValueAxis(name) {
                        return (this._valueAxes || []).find((0, _type.isDefined)(name) ? a => a.name === name : a => a.pane === this.defaultPane)
                    },
                    _getGroupsData() {
                        const groups = [];
                        this._valueAxes.forEach((axis => {
                            groups.push({
                                series: this.series.filter((series => series.getValueAxis() === axis)),
                                valueAxis: axis,
                                valueOptions: axis.getOptions()
                            })
                        }));
                        return {
                            groups: groups,
                            argumentAxes: this._argumentAxes,
                            argumentOptions: this._argumentAxes[0].getOptions()
                        }
                    },
                    _groupSeries() {
                        this._correctValueAxes(false);
                        this._groupsData = this._getGroupsData()
                    },
                    _processValueAxisFormat() {
                        const axesWithFullStackedFormat = [];
                        this.series.forEach((series => {
                            const axis = series.getValueAxis();
                            if (series.isFullStackedSeries()) {
                                axis.setPercentLabelFormat();
                                axesWithFullStackedFormat.push(axis)
                            }
                        }));
                        this._valueAxes.forEach((axis => {
                            if (!axesWithFullStackedFormat.includes(axis)) {
                                axis.resetAutoLabelFormat()
                            }
                        }))
                    },
                    _populateAxesOptions(typeSelector, userOptions, axisOptions, rotated, virtual) {
                        const preparedUserOptions = this._prepareStripsAndConstantLines(typeSelector, userOptions, rotated);
                        const options = (0, _extend2.extend)(true, {}, preparedUserOptions, axisOptions, this._prepareAxisOptions(typeSelector, preparedUserOptions, rotated));
                        if (virtual) {
                            options.visible = false;
                            options.tick.visible = false;
                            options.minorTick.visible = false;
                            options.label.visible = false;
                            options.title = {}
                        }
                        return options
                    },
                    _getValFilter: series => _range_data_calculator.default.getViewPortFilter(series.getValueAxis().visualRange() || {}),
                    _createAxis(isArgumentAxes, options, virtual) {
                        const typeSelector = isArgumentAxes ? "argumentAxis" : "valueAxis";
                        const renderingSettings = (0, _extend2.extend)({
                            renderer: this._renderer,
                            incidentOccurred: this._incidentOccurred,
                            eventTrigger: this._eventTrigger,
                            axisClass: isArgumentAxes ? "arg" : "val",
                            widgetClass: "dxc",
                            stripsGroup: this._stripsGroup,
                            stripLabelAxesGroup: this._stripLabelAxesGroup,
                            constantLinesGroup: this._constantLinesGroup,
                            scaleBreaksGroup: this._scaleBreaksGroup,
                            axesContainerGroup: this._axesGroup,
                            labelsAxesGroup: this._labelsAxesGroup,
                            gridGroup: this._gridGroup,
                            isArgumentAxis: isArgumentAxes,
                            getTemplate: template => this._getTemplate(template)
                        }, this._getAxisRenderingOptions(typeSelector));
                        const axis = new _base_axis.Axis(renderingSettings);
                        axis.updateOptions(options);
                        axis.isVirtual = virtual;
                        return axis
                    },
                    _applyVisualRangeByVirtualAxes: () => false,
                    _applyCustomVisualRangeOption(axis, range) {
                        if (axis.getOptions().optionPath) {
                            this._parseVisualRangeOption(`${axis.getOptions().optionPath}.visualRange`, range)
                        }
                    },
                    _getVisualRangeSetter() {
                        return (axis, _ref) => {
                            let {
                                skipEventRising: skipEventRising,
                                range: range
                            } = _ref;
                            this._applyCustomVisualRangeOption(axis, range);
                            axis.setCustomVisualRange(range);
                            axis.skipEventRising = skipEventRising;
                            if (!this._applyVisualRangeByVirtualAxes(axis, range)) {
                                if (this._applyingChanges) {
                                    this._change_VISUAL_RANGE()
                                } else {
                                    this._requestChange(["VISUAL_RANGE"])
                                }
                            }
                        }
                    },
                    _getTrackerSettings() {
                        return (0, _extend2.extend)(this.callBase(), {
                            argumentAxis: this.getArgumentAxis()
                        })
                    },
                    _prepareStripsAndConstantLines(typeSelector, userOptions, rotated) {
                        userOptions = this._themeManager.getOptions(typeSelector, userOptions, rotated);
                        if (userOptions.strips) {
                            userOptions.strips.forEach(((line, i) => {
                                userOptions.strips[i] = (0, _extend2.extend)(true, {}, userOptions.stripStyle, line)
                            }))
                        }
                        if (userOptions.constantLines) {
                            userOptions.constantLines.forEach(((line, i) => {
                                userOptions.constantLines[i] = (0, _extend2.extend)(true, {}, userOptions.constantLineStyle, line)
                            }))
                        }
                        return userOptions
                    },
                    refresh() {
                        this._disposeAxes();
                        this.callBase()
                    },
                    _layoutAxes(drawAxes) {
                        drawAxes();
                        const needSpace = this.checkForMoreSpaceForPanesCanvas();
                        if (needSpace) {
                            const rect = this._rect.slice();
                            const size = this._layout.backward(rect, rect, [needSpace.width, needSpace.height]);
                            needSpace.width = Math.max(0, size[0]);
                            needSpace.height = Math.max(0, size[1]);
                            this._canvas = this._createCanvasFromRect(rect);
                            drawAxes(needSpace)
                        }
                    },
                    checkForMoreSpaceForPanesCanvas() {
                        return this.layoutManager.needMoreSpaceForPanesCanvas(this._getLayoutTargets(), this._isRotated())
                    },
                    _parseVisualRangeOption(fullName, value) {
                        const name = fullName.split(/[.[]/)[0];
                        let index = fullName.match(/\d+/g);
                        index = (0, _type.isDefined)(index) ? parseInt(index[0], 10) : index;
                        if (fullName.indexOf("visualRange") > 0) {
                            if ("object" !== (0, _type.type)(value)) {
                                value = wrapVisualRange(fullName, value) ?? value
                            }
                            this._setCustomVisualRange(name, index, value)
                        } else if (("object" === (0, _type.type)(value) || isArray(value)) && name.indexOf("Axis") > 0 && JSON.stringify(value).indexOf("visualRange") > 0) {
                            if ((0, _type.isDefined)(value.visualRange)) {
                                this._setCustomVisualRange(name, index, value.visualRange)
                            } else if (isArray(value)) {
                                value.forEach(((a, i) => {
                                    if ((0, _type.isDefined)(a.visualRange)) {
                                        this._setCustomVisualRange(name, i, a.visualRange)
                                    }
                                }))
                            }
                        }
                    },
                    _setCustomVisualRange(axesName, index, value) {
                        const options = this._options.silent(axesName);
                        if (!options) {
                            return
                        }
                        if (!(0, _type.isDefined)(index)) {
                            options._customVisualRange = value
                        } else {
                            options[index]._customVisualRange = value
                        }
                        this._axesReinitialized = true
                    },
                    _raiseZoomEndHandlers() {
                        this._valueAxes.forEach((axis => axis.handleZoomEnd()))
                    },
                    _setOptionsByReference() {
                        this.callBase();
                        (0, _extend2.extend)(this._optionsByReference, {
                            "valueAxis.visualRange": true
                        })
                    },
                    _notifyOptionChanged(option, value) {
                        this.callBase.apply(this, arguments);
                        if (!this._optionChangedLocker) {
                            this._parseVisualRangeOption(option, value)
                        }
                    },
                    _notifyVisualRange() {
                        this._valueAxes.forEach((axis => {
                            const axisPath = axis.getOptions().optionPath;
                            if (axisPath) {
                                const path = `${axisPath}.visualRange`;
                                const visualRange = (0, _utils.convertVisualRangeObject)(axis.visualRange(), !isArray(this.option(path)));
                                if (!axis.skipEventRising || !(0, _utils.rangesAreEqual)(visualRange, this.option(path))) {
                                    if (!this.option(axisPath) && "valueAxis" !== axisPath) {
                                        this.option(axisPath, {
                                            name: axis.name,
                                            visualRange: visualRange
                                        })
                                    } else {
                                        this.option(path, visualRange)
                                    }
                                } else {
                                    axis.skipEventRising = null
                                }
                            }
                        }))
                    },
                    _notify() {
                        this.callBase();
                        this._axesReinitialized = false;
                        if (true !== this.option("disableTwoWayBinding")) {
                            this.skipOptionsRollBack = true;
                            this._notifyVisualRange();
                            this.skipOptionsRollBack = false
                        }
                    },
                    _getAxesForScaling() {
                        return this._valueAxes
                    },
                    _getAxesByOptionPath(arg, isDirectOption, optionName) {
                        const sourceAxes = this._getAxesForScaling();
                        let axes = [];
                        if (isDirectOption) {
                            let axisPath;
                            if (arg.fullName) {
                                axisPath = arg.fullName.slice(0, arg.fullName.indexOf("."))
                            }
                            axes = sourceAxes.filter((a => a.getOptions().optionPath === axisPath))
                        } else if ("object" === (0, _type.type)(arg.value)) {
                            axes = sourceAxes.filter((a => a.getOptions().optionPath === arg.name))
                        } else if (isArray(arg.value)) {
                            arg.value.forEach(((v, index) => {
                                const axis = sourceAxes.filter((a => a.getOptions().optionPath === `${arg.name}[${index}]`))[0];
                                if ((0, _type.isDefined)(v[optionName]) && (0, _type.isDefined)(axis)) {
                                    axes[index] = axis
                                }
                            }))
                        }
                        return axes
                    },
                    _optionChanged(arg) {
                        if (!this._optionChangedLocker) {
                            const optionName = "visualRange";
                            let axes;
                            const isDirectOption = arg.fullName.indexOf(optionName) > 0 ? true : this.getPartialChangeOptionsName(arg).indexOf(optionName) > -1 ? false : void 0;
                            if ((0, _type.isDefined)(isDirectOption)) {
                                axes = this._getAxesByOptionPath(arg, isDirectOption, optionName);
                                if (axes) {
                                    if (axes.length > 1 || isArray(arg.value)) {
                                        axes.forEach(((a, index) => setAxisVisualRangeByOption(arg, a, isDirectOption, index)))
                                    } else if (1 === axes.length) {
                                        setAxisVisualRangeByOption(arg, axes[0], isDirectOption)
                                    }
                                }
                            }
                        }
                        this.callBase(arg)
                    },
                    _change_VISUAL_RANGE() {
                        this._recreateSizeDependentObjects(false);
                        if (!this._changes.has("FULL_RENDER")) {
                            const resizePanesOnZoom = this.option("resizePanesOnZoom");
                            this._doRender({
                                force: true,
                                drawTitle: false,
                                drawLegend: false,
                                adjustAxes: resizePanesOnZoom ?? (this.option("adjustAxesOnZoom") || false),
                                animate: false
                            });
                            this._raiseZoomEndHandlers()
                        }
                    },
                    resetVisualRange() {
                        this._valueAxes.forEach((axis => {
                            axis.resetVisualRange(false);
                            this._applyCustomVisualRangeOption(axis)
                        }));
                        this._requestChange(["VISUAL_RANGE"])
                    },
                    _getCrosshairMargins: () => ({
                        x: 0,
                        y: 0
                    }),
                    _legendDataField: "series",
                    _adjustSeriesLabels: _common.noop,
                    _correctValueAxes: _common.noop
                })
            },
        9410:
            /*!*********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/viz/chart_components/m_base_chart.js ***!
              \*********************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.overlapping = exports.BaseChart = void 0;
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774));
                var _index = __webpack_require__( /*! ../../../common/core/events/utils/index */ 98834);
                var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781);
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576);
                var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274);
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528);
                var _layout_manager = __webpack_require__( /*! ../../../viz/chart_components/layout_manager */ 14580);
                var trackerModule = function(e, r) {
                    if (!r && e && e.__esModule) {
                        return e
                    }
                    if (null === e || "object" != typeof e && "function" != typeof e) {
                        return {
                            default: e
                        }
                    }
                    var t = _getRequireWildcardCache(r);
                    if (t && t.has(e)) {
                        return t.get(e)
                    }
                    var n = {
                            __proto__: null
                        },
                        a = Object.defineProperty && Object.getOwnPropertyDescriptor;
                    for (var u in e) {
                        if ("default" !== u && {}.hasOwnProperty.call(e, u)) {
                            var i = a ? Object.getOwnPropertyDescriptor(e, u) : null;
                            i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]
                        }
                    }
                    return n.default = e, t && t.set(e, n), n
                }(__webpack_require__( /*! ../../../viz/chart_components/tracker */ 45912));
                var _chart_theme_manager = __webpack_require__( /*! ../../../viz/components/chart_theme_manager */ 45647);
                var _data_validator = __webpack_require__( /*! ../../../viz/components/data_validator */ 39104);
                var _legend = __webpack_require__( /*! ../../../viz/components/legend */ 67056);
                var _data_source = __webpack_require__( /*! ../../../viz/core/data_source */ 25058);
                var _export = __webpack_require__( /*! ../../../viz/core/export */ 74754);
                var _loading_indicator = __webpack_require__( /*! ../../../viz/core/loading_indicator */ 92528);
                var _title = __webpack_require__( /*! ../../../viz/core/title */ 16216);
                var _tooltip = __webpack_require__( /*! ../../../viz/core/tooltip */ 23277);
                var _utils = __webpack_require__( /*! ../../../viz/core/utils */ 28779);
                var _base_series = __webpack_require__( /*! ../../../viz/series/base_series */ 66151);
                var _m_base_widget = _interopRequireDefault(__webpack_require__( /*! ../core/m_base_widget */ 34506));
                var _rolling_stock = __webpack_require__( /*! ./rolling_stock */ 59282);

                function _getRequireWildcardCache(e) {
                    if ("function" != typeof WeakMap) {
                        return null
                    }
                    var r = new WeakMap,
                        t = new WeakMap;
                    return (_getRequireWildcardCache = function(e) {
                        return e ? t : r
                    })(e)
                }

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const {
                    isArray: isArray
                } = Array;
                const ACTIONS_BY_PRIORITY = ["_reinit", "_updateDataSource", "_dataInit", "_forceRender", "_resize"];

                function findAndKillSmallValue(rollingStocks) {
                    const smallestObject = rollingStocks.reduce(((prev, rollingStock, index) => {
                        if (!rollingStock) {
                            return prev
                        }
                        const value = rollingStock.value();
                        return value < prev.value ? {
                            value: value,
                            rollingStock: rollingStock,
                            index: index
                        } : prev
                    }), {
                        rollingStock: void 0,
                        value: 1 / 0,
                        index: void 0
                    });
                    smallestObject.rollingStock.getLabels()[0].draw(false);
                    const {
                        width: width
                    } = smallestObject.rollingStock.getBoundingRect();
                    rollingStocks[smallestObject.index] = null;
                    return width
                }

                function checkStacksOverlapping(firstRolling, secondRolling, inTwoSides) {
                    if (!firstRolling || !secondRolling) {
                        return
                    }
                    const firstRect = firstRolling.getBoundingRect();
                    const secondRect = secondRolling.getBoundingRect();
                    const oppositeOverlapping = inTwoSides ? firstRect.oppositeStart <= secondRect.oppositeStart && firstRect.oppositeEnd > secondRect.oppositeStart || secondRect.oppositeStart <= firstRect.oppositeStart && secondRect.oppositeEnd > firstRect.oppositeStart : true;
                    return firstRect.end > secondRect.start && oppositeOverlapping
                }

                function rollingStocksIsOut(rollingStock, canvas) {
                    return rollingStock.getBoundingRect().end > canvas.end
                }
                exports.overlapping = {
                    resolveLabelOverlappingInOneDirection: function(points, canvas, isRotated, isInverted, shiftFunction) {
                        let customSorting = arguments.length > 5 && void 0 !== arguments[5] ? arguments[5] : () => 0;
                        const rollingStocks = [];
                        const stubCanvas = {
                            start: isRotated ? canvas.left : canvas.top,
                            end: isRotated ? canvas.width - canvas.right : canvas.height - canvas.bottom
                        };
                        let hasStackedSeries = false;
                        let sortRollingStocks;
                        points.forEach((p => {
                            if (!p) {
                                return
                            }
                            hasStackedSeries = hasStackedSeries || p.series.isStackedSeries() || p.series.isFullStackedSeries();
                            p.getLabels().forEach((l => {
                                if (l.isVisible()) {
                                    rollingStocks.push(new _rolling_stock.RollingStock(l, isRotated, shiftFunction))
                                }
                            }))
                        }));
                        if (hasStackedSeries) {
                            if (Number(!isRotated) ^ Number(isInverted)) {
                                rollingStocks.reverse()
                            }
                            sortRollingStocks = isInverted ? rollingStocks : function(rollingStocks) {
                                const positiveRollingStocks = [];
                                const negativeRollingStocks = [];
                                rollingStocks.forEach((stock => {
                                    if (stock.value() > 0) {
                                        positiveRollingStocks.push(stock)
                                    } else {
                                        negativeRollingStocks.unshift(stock)
                                    }
                                }));
                                return positiveRollingStocks.concat(negativeRollingStocks)
                            }(rollingStocks)
                        } else {
                            const rollingStocksTmp = rollingStocks.slice();
                            sortRollingStocks = rollingStocks.sort(((a, b) => customSorting(a, b) || a.getInitialPosition() - b.getInitialPosition() || rollingStocksTmp.indexOf(a) - rollingStocksTmp.indexOf(b)))
                        }
                        if (! function(rollingStocks) {
                                let i;
                                let j;
                                let iLength;
                                let jLength;
                                let overlap = false;
                                for (i = 0, iLength = rollingStocks.length - 1; i < iLength; i++) {
                                    for (j = i + 1, jLength = rollingStocks.length; j < jLength; j++) {
                                        if (i !== j && checkStacksOverlapping(rollingStocks[i], rollingStocks[j], true)) {
                                            overlap = true;
                                            break
                                        }
                                    }
                                    if (overlap) {
                                        break
                                    }
                                }
                                return overlap
                            }(sortRollingStocks)) {
                            return false
                        }! function(rollingStocks, stubCanvas) {
                            const canvasSize = stubCanvas.end - stubCanvas.start;
                            let size = 0;
                            rollingStocks.forEach((rollingStock => {
                                size += rollingStock.getBoundingRect().width
                            }));
                            while (canvasSize < size) {
                                size -= findAndKillSmallValue(rollingStocks)
                            }
                        }(sortRollingStocks, stubCanvas);
                        ! function(rollingStocks) {
                            let root;
                            for (let i = 0; i < rollingStocks.length - 1; i += 1) {
                                const currentRollingStock = root || rollingStocks[i];
                                if (checkStacksOverlapping(currentRollingStock, rollingStocks[i + 1])) {
                                    currentRollingStock.toChain(rollingStocks[i + 1]);
                                    rollingStocks[i + 1] = null;
                                    root = currentRollingStock
                                } else {
                                    root = rollingStocks[i + 1] || currentRollingStock
                                }
                            }
                        }(sortRollingStocks);
                        sortRollingStocks.reverse();
                        ! function(rollingStocks, canvas) {
                            for (let i = 0; i < rollingStocks.length; i += 1) {
                                const currentRollingStock = rollingStocks[i];
                                let shouldSetCanvas = true;
                                if (null !== currentRollingStock && rollingStocksIsOut(currentRollingStock, canvas)) {
                                    const currentBBox = currentRollingStock.getBoundingRect();
                                    for (let j = i + 1; j < rollingStocks.length; j += 1) {
                                        const nextRollingStock = rollingStocks[j];
                                        if (nextRollingStock) {
                                            const nextBBox = nextRollingStock.getBoundingRect();
                                            if (nextBBox.end > currentBBox.start - (currentBBox.end - canvas.end)) {
                                                nextRollingStock.toChain(currentRollingStock);
                                                shouldSetCanvas = false;
                                                break
                                            }
                                        }
                                    }
                                }
                                if (shouldSetCanvas) {
                                    null === currentRollingStock || void 0 === currentRollingStock || currentRollingStock.setRollingStockInCanvas(canvas)
                                }
                            }
                        }(sortRollingStocks, stubCanvas);
                        return true
                    }
                };
                const BaseChart = exports.BaseChart = _m_base_widget.default.inherit({
                    _eventsMap: {
                        onSeriesClick: {
                            name: "seriesClick"
                        },
                        onPointClick: {
                            name: "pointClick"
                        },
                        onArgumentAxisClick: {
                            name: "argumentAxisClick"
                        },
                        onLegendClick: {
                            name: "legendClick"
                        },
                        onSeriesSelectionChanged: {
                            name: "seriesSelectionChanged"
                        },
                        onPointSelectionChanged: {
                            name: "pointSelectionChanged"
                        },
                        onSeriesHoverChanged: {
                            name: "seriesHoverChanged"
                        },
                        onPointHoverChanged: {
                            name: "pointHoverChanged"
                        },
                        onDone: {
                            name: "done",
                            actionSettings: {
                                excludeValidators: ["disabled"]
                            }
                        },
                        onZoomStart: {
                            name: "zoomStart"
                        },
                        onZoomEnd: {
                            name: "zoomEnd"
                        }
                    },
                    _fontFields: ["legend.font", "legend.title.font", "legend.title.subtitle.font", "commonSeriesSettings.label.font"],
                    _rootClassPrefix: "dxc",
                    _rootClass: "dxc-chart",
                    _initialChanges: ["INIT"],
                    _themeDependentChanges: ["REFRESH_SERIES_REINIT"],
                    _getThemeManagerOptions() {
                        const themeOptions = this.callBase.apply(this, arguments);
                        themeOptions.options = this.option();
                        return themeOptions
                    },
                    _createThemeManager() {
                        const chartOption = this.option();
                        const themeManager = new _chart_theme_manager.ThemeManager(this._getThemeManagerOptions());
                        themeManager.setTheme(chartOption.theme, chartOption.rtlEnabled);
                        return themeManager
                    },
                    _initCore() {
                        this._canvasClipRect = this._renderer.clipRect();
                        this._createHtmlStructure();
                        this._createLegend();
                        this._createTracker();
                        this._needHandleRenderComplete = true;
                        this.layoutManager = new _layout_manager.LayoutManager;
                        this._createScrollBar();
                        _events_engine.default.on(this._$element, "contextmenu", (event => {
                            if ((0, _index.isTouchEvent)(event) || (0, _index.isPointerEvent)(event)) {
                                event.preventDefault()
                            }
                        }));
                        _events_engine.default.on(this._$element, "MSHoldVisual", (event => {
                            event.preventDefault()
                        }))
                    },
                    _getLayoutItems: _common.noop,
                    _layoutManagerOptions() {
                        return this._themeManager.getOptions("adaptiveLayout")
                    },
                    _reinit() {
                        (0, _utils.setCanvasValues)(this._canvas);
                        this._reinitAxes();
                        this._requestChange(["DATA_SOURCE", "DATA_INIT", "CORRECT_AXIS", "FULL_RENDER"])
                    },
                    _correctAxes: _common.noop,
                    _createHtmlStructure() {
                        const renderer = this._renderer;
                        const {
                            root: root
                        } = renderer;
                        const createConstantLinesGroup = function() {
                            return renderer.g().attr({
                                class: "dxc-constant-lines-group"
                            }).linkOn(root, "constant-lines")
                        };
                        this._constantLinesGroup = {
                            dispose() {
                                this.under.dispose();
                                this.above.dispose()
                            },
                            linkOff() {
                                this.under.linkOff();
                                this.above.linkOff()
                            },
                            clear() {
                                this.under.linkRemove().clear();
                                this.above.linkRemove().clear()
                            },
                            linkAppend() {
                                this.under.linkAppend();
                                this.above.linkAppend()
                            }
                        };
                        this._labelsAxesGroup = renderer.g().attr({
                            class: "dxc-elements-axes-group"
                        });
                        const appendLabelsAxesGroup = () => {
                            this._labelsAxesGroup.linkOn(root, "elements")
                        };
                        this._backgroundRect = renderer.rect().attr({
                            fill: "gray",
                            opacity: 1e-4
                        }).append(root);
                        this._panesBackgroundGroup = renderer.g().attr({
                            class: "dxc-background"
                        }).append(root);
                        this._stripsGroup = renderer.g().attr({
                            class: "dxc-strips-group"
                        }).linkOn(root, "strips");
                        this._gridGroup = renderer.g().attr({
                            class: "dxc-grids-group"
                        }).linkOn(root, "grids");
                        this._panesBorderGroup = renderer.g().attr({
                            class: "dxc-border"
                        }).linkOn(root, "border");
                        this._axesGroup = renderer.g().attr({
                            class: "dxc-axes-group"
                        }).linkOn(root, "axes");
                        this._executeAppendBeforeSeries(appendLabelsAxesGroup);
                        this._stripLabelAxesGroup = renderer.g().attr({
                            class: "dxc-strips-labels-group"
                        }).linkOn(root, "strips-labels");
                        this._constantLinesGroup.under = createConstantLinesGroup();
                        this._seriesGroup = renderer.g().attr({
                            class: "dxc-series-group"
                        }).linkOn(root, "series");
                        this._executeAppendAfterSeries(appendLabelsAxesGroup);
                        this._constantLinesGroup.above = createConstantLinesGroup();
                        this._scaleBreaksGroup = renderer.g().attr({
                            class: "dxc-scale-breaks"
                        }).linkOn(root, "scale-breaks");
                        this._labelsGroup = renderer.g().attr({
                            class: "dxc-labels-group"
                        }).linkOn(root, "labels");
                        this._crosshairCursorGroup = renderer.g().attr({
                            class: "dxc-crosshair-cursor"
                        }).linkOn(root, "crosshair");
                        this._legendGroup = renderer.g().attr({
                            class: "dxc-legend",
                            "clip-path": this._getCanvasClipRectID()
                        }).linkOn(root, "legend").linkAppend(root).enableLinks();
                        this._scrollBarGroup = renderer.g().attr({
                            class: "dxc-scroll-bar"
                        }).linkOn(root, "scroll-bar")
                    },
                    _executeAppendBeforeSeries() {},
                    _executeAppendAfterSeries() {},
                    _disposeObjectsInArray(propName, fieldNames) {
                        (this[propName] || []).forEach((item => {
                            if (fieldNames && item) {
                                fieldNames.forEach((field => {
                                    var _item$field;
                                    null === (_item$field = item[field]) || void 0 === _item$field || _item$field.dispose()
                                }))
                            } else {
                                null === item || void 0 === item || item.dispose()
                            }
                        }));
                        this[propName] = null
                    },
                    _disposeCore() {
                        const disposeObject = propName => {
                            if (this[propName]) {
                                this[propName].dispose();
                                this[propName] = null
                            }
                        };
                        const unlinkGroup = name => {
                            this[name].linkOff()
                        };
                        const disposeObjectsInArray = this._disposeObjectsInArray;
                        this._renderer.stopAllAnimations();
                        disposeObjectsInArray.call(this, "series");
                        disposeObject("_tracker");
                        disposeObject("_crosshair");
                        this.layoutManager = this._userOptions = this._canvas = this._groupsData = null;
                        unlinkGroup("_stripsGroup");
                        unlinkGroup("_gridGroup");
                        unlinkGroup("_axesGroup");
                        unlinkGroup("_constantLinesGroup");
                        unlinkGroup("_stripLabelAxesGroup");
                        unlinkGroup("_panesBorderGroup");
                        unlinkGroup("_seriesGroup");
                        unlinkGroup("_labelsGroup");
                        unlinkGroup("_crosshairCursorGroup");
                        unlinkGroup("_legendGroup");
                        unlinkGroup("_scrollBarGroup");
                        unlinkGroup("_scaleBreaksGroup");
                        disposeObject("_canvasClipRect");
                        disposeObject("_panesBackgroundGroup");
                        disposeObject("_backgroundRect");
                        disposeObject("_stripsGroup");
                        disposeObject("_gridGroup");
                        disposeObject("_axesGroup");
                        disposeObject("_constantLinesGroup");
                        disposeObject("_stripLabelAxesGroup");
                        disposeObject("_panesBorderGroup");
                        disposeObject("_seriesGroup");
                        disposeObject("_labelsGroup");
                        disposeObject("_crosshairCursorGroup");
                        disposeObject("_legendGroup");
                        disposeObject("_scrollBarGroup");
                        disposeObject("_scaleBreaksGroup")
                    },
                    _getAnimationOptions() {
                        return this._themeManager.getOptions("animation")
                    },
                    _getDefaultSize: () => ({
                        width: 400,
                        height: 400
                    }),
                    _getOption(name) {
                        return this._themeManager.getOptions(name)
                    },
                    _applySize(rect) {
                        this._rect = rect.slice();
                        if (!this._changes.has("FULL_RENDER")) {
                            this._processRefreshData("_resize")
                        }
                    },
                    _resize() {
                        this._doRender(this.__renderOptions || {
                            animate: false,
                            isResize: true
                        })
                    },
                    _trackerType: "ChartTracker",
                    _createTracker() {
                        this._tracker = new trackerModule[this._trackerType]({
                            seriesGroup: this._seriesGroup,
                            renderer: this._renderer,
                            tooltip: this._tooltip,
                            legend: this._legend,
                            eventTrigger: this._eventTrigger
                        })
                    },
                    _getTrackerSettings() {
                        return (0, _extend.extend)({
                            chart: this
                        }, this._getSelectionModes())
                    },
                    _getSelectionModes() {
                        const themeManager = this._themeManager;
                        return {
                            seriesSelectionMode: themeManager.getOptions("seriesSelectionMode"),
                            pointSelectionMode: themeManager.getOptions("pointSelectionMode")
                        }
                    },
                    _updateTracker(trackerCanvases) {
                        this._tracker.update(this._getTrackerSettings());
                        this._tracker.setCanvases({
                            left: 0,
                            right: this._canvas.width,
                            top: 0,
                            bottom: this._canvas.height
                        }, trackerCanvases)
                    },
                    _createCanvasFromRect(rect) {
                        const currentCanvas = this._canvas;
                        return (0, _utils.setCanvasValues)({
                            left: rect[0],
                            top: rect[1],
                            right: currentCanvas.width - rect[2],
                            bottom: currentCanvas.height - rect[3],
                            width: currentCanvas.width,
                            height: currentCanvas.height
                        })
                    },
                    _doRender(_options) {
                        if (0 === this._canvas.width && 0 === this._canvas.height) {
                            return
                        }
                        this._resetIsReady();
                        const drawOptions = this._prepareDrawOptions(_options);
                        const {
                            recreateCanvas: recreateCanvas
                        } = drawOptions;
                        this._preserveOriginalCanvas();
                        if (recreateCanvas) {
                            this.__currentCanvas = this._canvas
                        } else {
                            this._canvas = this.__currentCanvas
                        }
                        recreateCanvas && this._updateCanvasClipRect(this._canvas);
                        this._canvas = this._createCanvasFromRect(this._rect);
                        this._renderer.stopAllAnimations(true);
                        this._cleanGroups();
                        const startTime = new Date;
                        this._renderElements(drawOptions);
                        this._lastRenderingTime = Number(new Date) - Number(startTime)
                    },
                    _preserveOriginalCanvas() {
                        this.__originalCanvas = this._canvas;
                        this._canvas = (0, _extend.extend)({}, this._canvas)
                    },
                    _layoutAxes: _common.noop,
                    _renderElements(drawOptions) {
                        const preparedOptions = this._prepareToRender(drawOptions);
                        const isRotated = this._isRotated();
                        const isLegendInside = this._isLegendInside();
                        const trackerCanvases = [];
                        (0, _extend.extend)({}, this._canvas);
                        let argBusinessRange;
                        let zoomMinArg;
                        let zoomMaxArg;
                        this._renderer.lock();
                        if (drawOptions.drawLegend && this._legend) {
                            this._legendGroup.linkAppend()
                        }
                        this.layoutManager.setOptions(this._layoutManagerOptions());
                        const layoutTargets = this._getLayoutTargets();
                        this._layoutAxes((needSpace => {
                            const axisDrawOptions = needSpace ? (0, _extend.extend)({}, drawOptions, {
                                animate: false,
                                recreateCanvas: true
                            }) : drawOptions;
                            const canvas = this._renderAxes(axisDrawOptions, preparedOptions);
                            this._shrinkAxes(needSpace, canvas)
                        }));
                        this._applyClipRects(preparedOptions);
                        this._appendSeriesGroups();
                        this._createCrosshairCursor();
                        layoutTargets.forEach((_ref => {
                            let {
                                canvas: canvas
                            } = _ref;
                            trackerCanvases.push({
                                left: canvas.left,
                                right: canvas.width - canvas.right,
                                top: canvas.top,
                                bottom: canvas.height - canvas.bottom
                            })
                        }));
                        if (this._scrollBar) {
                            argBusinessRange = this._argumentAxes[0].getTranslator().getBusinessRange();
                            if ("discrete" === argBusinessRange.axisType && argBusinessRange.categories && argBusinessRange.categories.length <= 1 || "discrete" !== argBusinessRange.axisType && argBusinessRange.min === argBusinessRange.max) {
                                zoomMinArg = zoomMaxArg = void 0
                            } else {
                                zoomMinArg = argBusinessRange.minVisible;
                                zoomMaxArg = argBusinessRange.maxVisible
                            }
                            this._scrollBar.init(argBusinessRange, !this._argumentAxes[0].getOptions().valueMarginsEnabled).setPosition(zoomMinArg, zoomMaxArg)
                        }
                        this._updateTracker(trackerCanvases);
                        this._updateLegendPosition(drawOptions, isLegendInside);
                        this._applyPointMarkersAutoHiding();
                        this._renderSeries(drawOptions, isRotated, isLegendInside);
                        this._renderGraphicObjects();
                        this._renderer.unlock()
                    },
                    _updateLegendPosition: _common.noop,
                    _createCrosshairCursor: _common.noop,
                    _appendSeriesGroups() {
                        this._seriesGroup.linkAppend();
                        this._labelsGroup.linkAppend();
                        this._appendAdditionalSeriesGroups()
                    },
                    _renderSeries(drawOptions, isRotated, isLegendInside) {
                        this._calculateSeriesLayout(drawOptions, isRotated);
                        this._renderSeriesElements(drawOptions, isLegendInside)
                    },
                    _calculateSeriesLayout(drawOptions, isRotated) {
                        drawOptions.hideLayoutLabels = this.layoutManager.needMoreSpaceForPanesCanvas(this._getLayoutTargets(), isRotated) && !this._themeManager.getOptions("adaptiveLayout").keepLabels;
                        this._updateSeriesDimensions(drawOptions)
                    },
                    _getArgFilter: () => () => true,
                    _getValFilter: () => () => true,
                    _getPointsToAnimation(series) {
                        const argViewPortFilter = this._getArgFilter();
                        return series.map((s => {
                            const valViewPortFilter = this._getValFilter(s);
                            return s.getPoints().filter((p => p.getOptions().visible && argViewPortFilter(p.argument) && (valViewPortFilter(p.getMinValue(true)) || valViewPortFilter(p.getMaxValue(true))))).length
                        }))
                    },
                    _renderSeriesElements(drawOptions, isLegendInside) {
                        const {
                            series: series
                        } = this;
                        const resolveLabelOverlapping = this._themeManager.getOptions("resolveLabelOverlapping");
                        const pointsToAnimation = this._getPointsToAnimation(series);
                        series.forEach(((singleSeries, index) => {
                            this._applyExtraSettings(singleSeries, drawOptions);
                            const animationEnabled = drawOptions.animate && pointsToAnimation[index] <= drawOptions.animationPointsLimit && this._renderer.animationEnabled();
                            singleSeries.draw(animationEnabled, drawOptions.hideLayoutLabels, this._getLegendCallBack(singleSeries))
                        }));
                        if ("none" === resolveLabelOverlapping) {
                            this._adjustSeriesLabels(false)
                        } else {
                            this._locateLabels(resolveLabelOverlapping)
                        }
                        this._renderTrackers(isLegendInside);
                        this._tracker.repairTooltip();
                        this._renderExtraElements();
                        this._clearCanvas();
                        this._seriesElementsDrawn = true
                    },
                    _changesApplied() {
                        if (this._seriesElementsDrawn) {
                            this._seriesElementsDrawn = false;
                            this._drawn();
                            this._renderCompleteHandler()
                        }
                    },
                    _locateLabels(resolveLabelOverlapping) {
                        this._resolveLabelOverlapping(resolveLabelOverlapping)
                    },
                    _renderExtraElements() {},
                    _clearCanvas() {
                        this._canvas = this.__originalCanvas
                    },
                    _resolveLabelOverlapping(resolveLabelOverlapping) {
                        let func;
                        switch (resolveLabelOverlapping) {
                            case "stack":
                                func = this._resolveLabelOverlappingStack;
                                break;
                            case "hide":
                                func = this._resolveLabelOverlappingHide;
                                break;
                            case "shift":
                                func = this._resolveLabelOverlappingShift
                        }
                        return (0, _type.isFunction)(func) && func.call(this)
                    },
                    _getVisibleSeries() {
                        return (0, _common.grep)(this.getAllSeries(), (series => series.isVisible()))
                    },
                    _resolveLabelOverlappingHide() {
                        const labels = [];
                        let currentLabel;
                        let nextLabel;
                        let currentLabelRect;
                        let nextLabelRect;
                        let i;
                        let j;
                        let points;
                        const series = this._getVisibleSeries();
                        for (i = 0; i < series.length; i++) {
                            points = series[i].getVisiblePoints();
                            for (j = 0; j < points.length; j++) {
                                labels.push.apply(labels, points[j].getLabels())
                            }
                        }
                        for (i = 0; i < labels.length; i++) {
                            currentLabel = labels[i];
                            if (!currentLabel.isVisible()) {
                                continue
                            }
                            currentLabelRect = currentLabel.getBoundingRect();
                            for (j = i + 1; j < labels.length; j++) {
                                nextLabel = labels[j];
                                nextLabelRect = nextLabel.getBoundingRect();
                                if (firstRect = currentLabelRect, secondRect = nextLabelRect, (firstRect.x <= secondRect.x && secondRect.x <= firstRect.x + firstRect.width || firstRect.x >= secondRect.x && firstRect.x <= secondRect.x + secondRect.width) && (firstRect.y <= secondRect.y && secondRect.y <= firstRect.y + firstRect.height || firstRect.y >= secondRect.y && firstRect.y <= secondRect.y + secondRect.height)) {
                                    nextLabel.draw(false)
                                }
                            }
                        }
                        var firstRect, secondRect
                    },
                    _cleanGroups() {
                        this._stripsGroup.linkRemove().clear();
                        this._gridGroup.linkRemove().clear();
                        this._axesGroup.linkRemove().clear();
                        this._constantLinesGroup.clear();
                        this._stripLabelAxesGroup.linkRemove().clear();
                        this._labelsGroup.linkRemove().clear();
                        this._crosshairCursorGroup.linkRemove().clear();
                        this._scaleBreaksGroup.linkRemove().clear()
                    },
                    _allowLegendInsidePosition: () => false,
                    _createLegend() {
                        const legendSettings = function(legendDataField) {
                            const formatObjectFields = (name = legendDataField, {
                                nameField: `${name}Name`,
                                colorField: `${name}Color`,
                                indexField: `${name}Index`
                            });
                            var name;
                            return {
                                getFormatObject(data) {
                                    const res = {};
                                    res[formatObjectFields.indexField] = data.id;
                                    res[formatObjectFields.colorField] = data.states.normal.fill;
                                    res[formatObjectFields.nameField] = data.text;
                                    return res
                                },
                                textField: formatObjectFields.nameField
                            }
                        }(this._legendDataField);
                        this._legend = new _legend.Legend({
                            renderer: this._renderer,
                            widget: this,
                            group: this._legendGroup,
                            backgroundClass: "dxc-border",
                            itemGroupClass: "dxc-item",
                            titleGroupClass: "dxc-title",
                            textField: legendSettings.textField,
                            getFormatObject: legendSettings.getFormatObject,
                            allowInsidePosition: this._allowLegendInsidePosition()
                        });
                        this._updateLegend();
                        this._layout.add(this._legend)
                    },
                    _updateLegend() {
                        const themeManager = this._themeManager;
                        const legendOptions = themeManager.getOptions("legend");
                        const legendData = this._getLegendData();
                        legendOptions.containerBackgroundColor = themeManager.getOptions("containerBackgroundColor");
                        legendOptions._incidentOccurred = this._incidentOccurred;
                        this._legend.update(legendData, legendOptions, themeManager.theme("legend").title);
                        this._change(["LAYOUT"])
                    },
                    _prepareDrawOptions(drawOptions) {
                        const animationOptions = this._getAnimationOptions();
                        const options = (0, _extend.extend)({}, {
                            force: false,
                            adjustAxes: true,
                            drawLegend: true,
                            drawTitle: true,
                            animate: animationOptions.enabled,
                            animationPointsLimit: animationOptions.maxPointCountSupported
                        }, drawOptions, this.__renderOptions);
                        if (!(0, _type.isDefined)(options.recreateCanvas)) {
                            options.recreateCanvas = options.adjustAxes && options.drawLegend && options.drawTitle
                        }
                        return options
                    },
                    _processRefreshData(newRefreshAction) {
                        const currentRefreshActionPosition = ACTIONS_BY_PRIORITY.indexOf(this._currentRefreshData);
                        const newRefreshActionPosition = ACTIONS_BY_PRIORITY.indexOf(newRefreshAction);
                        if (!this._currentRefreshData || currentRefreshActionPosition >= 0 && newRefreshActionPosition < currentRefreshActionPosition) {
                            this._currentRefreshData = newRefreshAction
                        }
                        this._requestChange(["REFRESH"])
                    },
                    _getLegendData() {
                        return (0, _utils.map)(this._getLegendTargets(), (item => {
                            const {
                                legendData: legendData
                            } = item;
                            const style = item.getLegendStyles;
                            let {
                                opacity: opacity
                            } = style.normal;
                            if (!item.visible) {
                                if (!(0, _type.isDefined)(opacity) || opacity > .3) {
                                    opacity = .3
                                }
                                legendData.textOpacity = .3
                            }
                            const opacityStyle = {
                                opacity: opacity
                            };
                            legendData.states = {
                                hover: (0, _extend.extend)({}, style.hover, opacityStyle),
                                selection: (0, _extend.extend)({}, style.selection, opacityStyle),
                                normal: (0, _extend.extend)({}, style.normal, opacityStyle)
                            };
                            return legendData
                        }))
                    },
                    _getLegendOptions(item) {
                        return {
                            legendData: {
                                text: item[this._legendItemTextField],
                                id: item.index,
                                visible: true
                            },
                            getLegendStyles: item.getLegendStyles(),
                            visible: item.isVisible()
                        }
                    },
                    _disposeSeries(seriesIndex) {
                        var _this$series;
                        if (this.series) {
                            if ((0, _type.isDefined)(seriesIndex)) {
                                this.series[seriesIndex].dispose();
                                this.series.splice(seriesIndex, 1)
                            } else {
                                this.series.forEach((s => s.dispose()));
                                this.series.length = 0
                            }
                        }
                        if (!(null !== (_this$series = this.series) && void 0 !== _this$series && _this$series.length)) {
                            this.series = []
                        }
                    },
                    _disposeSeriesFamilies() {
                        (this.seriesFamilies || []).forEach((family => {
                            family.dispose()
                        }));
                        this.seriesFamilies = null;
                        this._needHandleRenderComplete = true
                    },
                    _optionChanged(arg) {
                        this._themeManager.resetOptions(arg.name);
                        this.callBase.apply(this, arguments)
                    },
                    _applyChanges() {
                        this._themeManager.update(this._options.silent());
                        this.callBase(...arguments)
                    },
                    _optionChangesMap: {
                        animation: "ANIMATION",
                        dataSource: "DATA_SOURCE",
                        palette: "PALETTE",
                        paletteExtensionMode: "PALETTE",
                        legend: "FORCE_DATA_INIT",
                        seriesTemplate: "FORCE_DATA_INIT",
                        export: "FORCE_RENDER",
                        valueAxis: "AXES_AND_PANES",
                        argumentAxis: "AXES_AND_PANES",
                        commonAxisSettings: "AXES_AND_PANES",
                        panes: "AXES_AND_PANES",
                        commonPaneSettings: "AXES_AND_PANES",
                        defaultPane: "AXES_AND_PANES",
                        containerBackgroundColor: "AXES_AND_PANES",
                        rotated: "ROTATED",
                        autoHidePointMarkers: "REFRESH_SERIES_REINIT",
                        customizePoint: "REFRESH_SERIES_REINIT",
                        customizeLabel: "REFRESH_SERIES_REINIT",
                        scrollBar: "SCROLL_BAR"
                    },
                    _optionChangesOrder: ["ROTATED", "PALETTE", "REFRESH_SERIES_REINIT", "USE_SPIDER_WEB", "AXES_AND_PANES", "INIT", "REINIT", "DATA_SOURCE", "REFRESH_SERIES_DATA_INIT", "DATA_INIT", "FORCE_DATA_INIT", "REFRESH_AXES", "CORRECT_AXIS"],
                    _customChangesOrder: ["ANIMATION", "REFRESH_SERIES_FAMILIES", "FORCE_FIRST_DRAWING", "FORCE_DRAWING", "FORCE_RENDER", "VISUAL_RANGE", "SCROLL_BAR", "REINIT", "REFRESH", "FULL_RENDER"],
                    _change_ANIMATION() {
                        this._renderer.updateAnimationOptions(this._getAnimationOptions())
                    },
                    _change_DATA_SOURCE() {
                        this._needHandleRenderComplete = true;
                        this._updateDataSource()
                    },
                    _change_PALETTE() {
                        this._themeManager.updatePalette();
                        this._refreshSeries("DATA_INIT")
                    },
                    _change_REFRESH_SERIES_DATA_INIT() {
                        this._refreshSeries("DATA_INIT")
                    },
                    _change_DATA_INIT() {
                        if ((!this.series || this.needToPopulateSeries) && !this._changes.has("FORCE_DATA_INIT")) {
                            this._dataInit()
                        }
                    },
                    _change_FORCE_DATA_INIT() {
                        this._dataInit()
                    },
                    _change_REFRESH_SERIES_FAMILIES() {
                        this._processSeriesFamilies();
                        this._populateBusinessRange();
                        this._processRefreshData("_forceRender")
                    },
                    _change_FORCE_RENDER() {
                        this._processRefreshData("_forceRender")
                    },
                    _change_AXES_AND_PANES() {
                        this._refreshSeries("INIT")
                    },
                    _change_ROTATED() {
                        this._createScrollBar();
                        this._refreshSeries("INIT")
                    },
                    _change_REFRESH_SERIES_REINIT() {
                        this._refreshSeries("INIT")
                    },
                    _change_REFRESH_AXES() {
                        (0, _utils.setCanvasValues)(this._canvas);
                        this._reinitAxes();
                        this._requestChange(["CORRECT_AXIS", "FULL_RENDER"])
                    },
                    _change_SCROLL_BAR() {
                        this._createScrollBar();
                        this._processRefreshData("_forceRender")
                    },
                    _change_REINIT() {
                        this._processRefreshData("_reinit")
                    },
                    _change_FORCE_DRAWING() {
                        this._resetComponentsAnimation()
                    },
                    _change_FORCE_FIRST_DRAWING() {
                        this._resetComponentsAnimation(true)
                    },
                    _resetComponentsAnimation(isFirstDrawing) {
                        this.series.forEach((s => {
                            s.resetApplyingAnimation(isFirstDrawing)
                        }));
                        this._resetAxesAnimation(isFirstDrawing)
                    },
                    _resetAxesAnimation: _common.noop,
                    _refreshSeries(actionName) {
                        this.needToPopulateSeries = true;
                        this._requestChange([actionName])
                    },
                    _change_CORRECT_AXIS() {
                        this._correctAxes()
                    },
                    _doRefresh() {
                        const methodName = this._currentRefreshData;
                        if (methodName) {
                            this._currentRefreshData = null;
                            this._renderer.stopAllAnimations(true);
                            this[methodName]()
                        }
                    },
                    _updateCanvasClipRect(canvas) {
                        const width = Math.max(canvas.width - canvas.left - canvas.right, 0);
                        const height = Math.max(canvas.height - canvas.top - canvas.bottom, 0);
                        this._canvasClipRect.attr({
                            x: canvas.left,
                            y: canvas.top,
                            width: width,
                            height: height
                        });
                        this._backgroundRect.attr({
                            x: canvas.left,
                            y: canvas.top,
                            width: width,
                            height: height
                        })
                    },
                    _getCanvasClipRectID() {
                        return this._canvasClipRect.id
                    },
                    _dataSourceChangedHandler() {
                        if (this._changes.has("INIT")) {
                            this._requestChange(["DATA_INIT"])
                        } else {
                            this._requestChange(["FORCE_DATA_INIT"])
                        }
                    },
                    _dataInit() {
                        this._dataSpecificInit(true)
                    },
                    _processSingleSeries(singleSeries) {
                        singleSeries.createPoints(false)
                    },
                    _handleSeriesDataUpdated() {
                        if (this._getVisibleSeries().some((s => s.useAggregation()))) {
                            this._populateMarginOptions()
                        }
                        this.series.forEach((s => this._processSingleSeries(s)), this)
                    },
                    _dataSpecificInit(needRedraw) {
                        if (!this.series || this.needToPopulateSeries) {
                            this.series = this._populateSeries()
                        }
                        this._repopulateSeries();
                        this._seriesPopulatedHandlerCore();
                        this._populateBusinessRange();
                        this._tracker.updateSeries(this.series, this._changes.has("INIT"));
                        this._updateLegend();
                        if (needRedraw) {
                            this._requestChange(["FULL_RENDER"])
                        }
                    },
                    _forceRender() {
                        this._doRender({
                            force: true
                        })
                    },
                    _repopulateSeries() {
                        const themeManager = this._themeManager;
                        const data = this._dataSourceItems();
                        const dataValidatorOptions = themeManager.getOptions("dataPrepareSettings");
                        const seriesTemplate = themeManager.getOptions("seriesTemplate");
                        if (seriesTemplate) {
                            this._populateSeries(data)
                        }
                        this._groupSeries();
                        const parsedData = (0, _data_validator.validateData)(data, this._groupsData, this._incidentOccurred, dataValidatorOptions);
                        themeManager.resetPalette();
                        this.series.forEach((singleSeries => {
                            singleSeries.updateData(parsedData[singleSeries.getArgumentField()])
                        }));
                        this._handleSeriesDataUpdated()
                    },
                    _renderCompleteHandler() {
                        let allSeriesInited = true;
                        if (this._needHandleRenderComplete) {
                            this.series.forEach((s => {
                                allSeriesInited = allSeriesInited && s.canRenderCompleteHandle()
                            }));
                            if (allSeriesInited) {
                                this._needHandleRenderComplete = false;
                                this._eventTrigger("done", {
                                    target: this
                                })
                            }
                        }
                    },
                    _dataIsReady() {
                        return (0, _type.isDefined)(this.option("dataSource")) && this._dataIsLoaded()
                    },
                    _populateSeriesOptions(data) {
                        const themeManager = this._themeManager;
                        const seriesTemplate = themeManager.getOptions("seriesTemplate");
                        const seriesOptions = seriesTemplate ? (0, _utils.processSeriesTemplate)(seriesTemplate, data || []) : this.option("series");
                        const allSeriesOptions = isArray(seriesOptions) ? seriesOptions : seriesOptions ? [seriesOptions] : [];
                        const extraOptions = this._getExtraOptions();
                        let particularSeriesOptions;
                        let seriesTheme;
                        const seriesThemes = [];
                        const seriesVisibilityChanged = target => {
                            this._specialProcessSeries();
                            this._populateBusinessRange(target && target.getValueAxis(), true);
                            this._renderer.stopAllAnimations(true);
                            this._updateLegend();
                            this._requestChange(["FULL_RENDER"])
                        };
                        for (let i = 0; i < allSeriesOptions.length; i++) {
                            particularSeriesOptions = (0, _extend.extend)(true, {}, allSeriesOptions[i], extraOptions);
                            if (!(0, _type.isDefined)(particularSeriesOptions.name) || "" === particularSeriesOptions.name) {
                                particularSeriesOptions.name = `Series ${(i+1).toString()}`
                            }
                            particularSeriesOptions.rotated = this._isRotated();
                            particularSeriesOptions.customizePoint = themeManager.getOptions("customizePoint");
                            particularSeriesOptions.customizeLabel = themeManager.getOptions("customizeLabel");
                            particularSeriesOptions.visibilityChanged = seriesVisibilityChanged;
                            particularSeriesOptions.incidentOccurred = this._incidentOccurred;
                            seriesTheme = themeManager.getOptions("series", particularSeriesOptions, allSeriesOptions.length);
                            if (this._checkPaneName(seriesTheme)) {
                                seriesThemes.push(seriesTheme)
                            }
                        }
                        return seriesThemes
                    },
                    _populateSeries(data) {
                        var _this$series3;
                        const seriesBasis = [];
                        const incidentOccurred = this._incidentOccurred;
                        const seriesThemes = this._populateSeriesOptions(data);
                        let particularSeries;
                        let disposeSeriesFamilies = false;
                        this.needToPopulateSeries = false;
                        seriesThemes.forEach((theme => {
                            var _this$series2;
                            const curSeries = null === (_this$series2 = this.series) || void 0 === _this$series2 ? void 0 : _this$series2.find((s => s.name === theme.name && !seriesBasis.map((sb => sb.series)).includes(s)));
                            if (curSeries && curSeries.type === theme.type) {
                                seriesBasis.push({
                                    series: curSeries,
                                    options: theme
                                })
                            } else {
                                seriesBasis.push({
                                    options: theme
                                });
                                disposeSeriesFamilies = true
                            }
                        }));
                        0 !== (null === (_this$series3 = this.series) || void 0 === _this$series3 ? void 0 : _this$series3.length) && this._tracker.clearHover();
                        (0, _iterator.reverseEach)(this.series, ((index, series) => {
                            if (!seriesBasis.some((s => series === s.series))) {
                                this._disposeSeries(index);
                                disposeSeriesFamilies = true
                            }
                        }));
                        !disposeSeriesFamilies && (disposeSeriesFamilies = seriesBasis.some((sb => sb.series.name !== seriesThemes[sb.series.index].name)));
                        this.series = [];
                        disposeSeriesFamilies && this._disposeSeriesFamilies();
                        this._themeManager.resetPalette();
                        const eventPipe = data => {
                            this.series.forEach((currentSeries => {
                                currentSeries.notify(data)
                            }))
                        };
                        seriesBasis.forEach((basis => {
                            var _this$_argumentAxes;
                            const seriesTheme = basis.options;
                            const argumentAxis = (null === (_this$_argumentAxes = this._argumentAxes) || void 0 === _this$_argumentAxes ? void 0 : _this$_argumentAxes.filter((a => a.pane === seriesTheme.pane))[0]) ?? this.getArgumentAxis();
                            const renderSettings = {
                                commonSeriesModes: this._getSelectionModes(),
                                argumentAxis: argumentAxis,
                                valueAxis: this._getValueAxis(seriesTheme.pane, seriesTheme.axis)
                            };
                            if (basis.series) {
                                particularSeries = basis.series;
                                particularSeries.updateOptions(seriesTheme, renderSettings)
                            } else {
                                particularSeries = new _base_series.Series((0, _extend.extend)({
                                    renderer: this._renderer,
                                    seriesGroup: this._seriesGroup,
                                    labelsGroup: this._labelsGroup,
                                    eventTrigger: this._eventTrigger,
                                    eventPipe: eventPipe,
                                    incidentOccurred: incidentOccurred
                                }, renderSettings), seriesTheme)
                            }
                            if (!particularSeries.isUpdated) {
                                incidentOccurred("E2101", [seriesTheme.type])
                            } else {
                                particularSeries.index = this.series.length;
                                this.series.push(particularSeries)
                            }
                        }));
                        return this.series
                    },
                    getStackedPoints(point) {
                        const stackName = point.series.getStackName();
                        return this._getVisibleSeries().reduce(((stackPoints, series) => {
                            if (!(0, _type.isDefined)(series.getStackName()) || !(0, _type.isDefined)(stackName) || stackName === series.getStackName()) {
                                stackPoints = stackPoints.concat(series.getPointsByArg(point.argument))
                            }
                            return stackPoints
                        }), [])
                    },
                    getAllSeries: function() {
                        return (this.series || []).slice()
                    },
                    getSeriesByName: function(name) {
                        const found = (this.series || []).find((singleSeries => singleSeries.name === name));
                        return found || null
                    },
                    getSeriesByPos: function(pos) {
                        return (this.series || [])[pos]
                    },
                    clearSelection: function() {
                        this._tracker.clearSelection()
                    },
                    hideTooltip() {
                        this._tracker._hideTooltip()
                    },
                    clearHover() {
                        this._tracker.clearHover()
                    },
                    render(renderOptions) {
                        this.__renderOptions = renderOptions;
                        this.__forceRender = renderOptions && renderOptions.force;
                        this.callBase.apply(this, arguments);
                        this.__renderOptions = this.__forceRender = null;
                        return this
                    },
                    refresh() {
                        this._disposeSeries();
                        this._disposeSeriesFamilies();
                        this._requestChange(["CONTAINER_SIZE", "REFRESH_SERIES_REINIT"])
                    },
                    _getMinSize() {
                        const adaptiveLayout = this._layoutManagerOptions();
                        return [adaptiveLayout.width, adaptiveLayout.height]
                    },
                    _change_REFRESH() {
                        if (!this._changes.has("INIT")) {
                            this._doRefresh()
                        } else {
                            this._currentRefreshData = null
                        }
                    },
                    _change_FULL_RENDER() {
                        this._forceRender()
                    },
                    _change_INIT() {
                        this._reinit()
                    },
                    _stopCurrentHandling() {
                        if (this._disposed) {
                            return
                        }
                        this._tracker.stopCurrentHandling()
                    }
                });
                ["series", "commonSeriesSettings", "dataPrepareSettings", "seriesSelectionMode", "pointSelectionMode", "synchronizeMultiAxes", "resolveLabelsOverlapping"].forEach((name => {
                    BaseChart.prototype._optionChangesMap[name] = "REFRESH_SERIES_DATA_INIT"
                }));
                ["adaptiveLayout", "crosshair", "resolveLabelOverlapping", "adjustOnZoom", "stickyHovering"].forEach((name => {
                    BaseChart.prototype._optionChangesMap[name] = "FORCE_RENDER"
                }));
                ["minBubbleSize", "maxBubbleSize", "barGroupPadding", "barGroupWidth", "negativesAsZeroes", "negativesAsZeros"].forEach((name => {
                    BaseChart.prototype._optionChangesMap[name] = "REFRESH_SERIES_FAMILIES"
                }));
                BaseChart.addPlugin(_export.plugin);
                BaseChart.addPlugin(_title.plugin);
                BaseChart.addPlugin(_data_source.plugin);
                BaseChart.addPlugin(_tooltip.plugin);
                BaseChart.addPlugin(_loading_indicator.plugin);
                const {
                    _change_TITLE: _change_TITLE
                } = BaseChart.prototype;
                BaseChart.prototype._change_TITLE = function() {
                    _change_TITLE.apply(this, arguments);
                    this._change(["FORCE_RENDER"])
                }
            },
        59282:
            /*!**********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/viz/chart_components/rolling_stock.js ***!
              \**********************************************************************************************/
            function(__unused_webpack_module, exports) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.RollingStock = void 0;
                exports.RollingStock = class {
                    constructor(label, isRotated, shiftFunction) {
                        const bBox = label.getBoundingRect();
                        const {
                            x: x
                        } = bBox;
                        const {
                            y: y
                        } = bBox;
                        const endX = bBox.x + bBox.width;
                        const endY = bBox.y + bBox.height;
                        this.labels = [label];
                        this.shiftFunction = shiftFunction;
                        this.bBox = {
                            start: isRotated ? x : y,
                            width: isRotated ? bBox.width : bBox.height,
                            end: isRotated ? endX : endY,
                            oppositeStart: isRotated ? y : x,
                            oppositeEnd: isRotated ? endY : endX
                        };
                        this.initialPosition = isRotated ? bBox.x : bBox.y
                    }
                    toChain(nextRollingStock) {
                        const nextRollingStockBBox = nextRollingStock.getBoundingRect();
                        nextRollingStock.shift(nextRollingStockBBox.start - this.bBox.end);
                        this.changeBoxWidth(nextRollingStockBBox.width);
                        this.labels = this.labels.concat(nextRollingStock.labels)
                    }
                    getBoundingRect() {
                        return this.bBox
                    }
                    shift(shiftLength) {
                        this.labels.forEach((label => {
                            const bBox = label.getBoundingRect();
                            const coords = this.shiftFunction(bBox, shiftLength);
                            if (!label.hideInsideLabel(coords)) {
                                label.shift(coords.x, coords.y)
                            }
                        }));
                        this.bBox.end -= shiftLength;
                        this.bBox.start -= shiftLength
                    }
                    setRollingStockInCanvas(canvas) {
                        if (this.bBox.end > canvas.end) {
                            this.shift(this.bBox.end - canvas.end)
                        }
                    }
                    getLabels() {
                        return this.labels
                    }
                    value() {
                        return this.labels[0].getData().value
                    }
                    getInitialPosition() {
                        return this.initialPosition
                    }
                    changeBoxWidth(width) {
                        this.bBox.end += width;
                        this.bBox.width += width
                    }
                }
            },
        34506:
            /*!**********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/viz/core/m_base_widget.js ***!
              \**********************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774));
                var _devices = _interopRequireDefault(__webpack_require__( /*! ../../../core/devices */ 65951));
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../core/dom_adapter */ 64960));
                var _dom_component = _interopRequireDefault(__webpack_require__( /*! ../../../core/dom_component */ 97832));
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553));
                var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781);
                var _deferred = __webpack_require__( /*! ../../../core/utils/deferred */ 87739);
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576);
                var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274);
                var _size = __webpack_require__( /*! ../../../core/utils/size */ 57653);
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528);
                var _window = __webpack_require__( /*! ../../../core/utils/window */ 3104);
                var _base_theme_manager = __webpack_require__( /*! ../../../viz/core/base_theme_manager */ 71671);
                var _base_widget = __webpack_require__( /*! ../../../viz/core/base_widget.utils */ 95943);
                var _errors_warnings = _interopRequireDefault(__webpack_require__( /*! ../../../viz/core/errors_warnings */ 38355));
                var _helpers = __webpack_require__( /*! ../../../viz/core/helpers */ 71115);
                var _layout = _interopRequireDefault(__webpack_require__( /*! ../../../viz/core/layout */ 48874));
                var _renderer2 = __webpack_require__( /*! ../../../viz/core/renderers/renderer */ 63022);
                var _utils = __webpack_require__( /*! ../../../viz/core/utils */ 28779);
                var _utils2 = __webpack_require__( /*! ../../../viz/utils */ 2225);
                var _m_charts = _interopRequireDefault(__webpack_require__( /*! ../../common/m_charts */ 55351));

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const {
                    log: log
                } = _errors_warnings.default;
                const baseOptionMethod = _dom_component.default.prototype.option;

                function getTrue() {
                    return true
                }

                function getFalse() {
                    return false
                }

                function defaultOnIncidentOccurred(e) {
                    if (!e.component._eventsStrategy.hasEvent("incidentOccurred")) {
                        log.apply(null, [e.target.id].concat(e.target.args || []))
                    }
                }

                function pickPositiveValue(values) {
                    return values.reduce(((result, value) => value > 0 && !result ? value : result), 0)
                }

                function callForEach(functions) {
                    functions.forEach((c => c()))
                }
                const isServerSide = !(0, _window.hasWindow)();
                const baseWidget = isServerSide ? function() {
                    const emptyComponentConfig = {
                        _initTemplates() {},
                        ctor(element, options) {
                            this.callBase(element, options);
                            const sizedElement = _dom_adapter.default.createElement("div");
                            const width = options && (0, _type.isNumeric)(options.width) ? `${options.width}px` : "100%";
                            const height = options && (0, _type.isNumeric)(options.height) ? `${options.height}px` : `${this._getDefaultSize().height}px`;
                            _dom_adapter.default.setStyle(sizedElement, "width", width);
                            _dom_adapter.default.setStyle(sizedElement, "height", height);
                            _dom_adapter.default.setClass(sizedElement, "dx-sized-element", false);
                            _dom_adapter.default.insertElement(element, sizedElement)
                        }
                    };
                    const EmptyComponent = _dom_component.default.inherit(emptyComponentConfig);
                    const originalInherit = EmptyComponent.inherit;
                    EmptyComponent.inherit = function(config) {
                        Object.keys(config).forEach((field => {
                            if ((0, _type.isFunction)(config[field]) && "_" !== field.substr(0, 1) && "option" !== field || "_dispose" === field || "_optionChanged" === field) {
                                config[field] = _common.noop
                            }
                        }));
                        return originalInherit.call(this, config)
                    };
                    return EmptyComponent
                }() : _dom_component.default.inherit({
                    _eventsMap: {
                        onIncidentOccurred: {
                            name: "incidentOccurred",
                            actionSettings: {
                                excludeValidators: ["disabled"]
                            }
                        },
                        onDrawn: {
                            name: "drawn",
                            actionSettings: {
                                excludeValidators: ["disabled"]
                            }
                        }
                    },
                    _getDefaultOptions() {
                        return (0, _extend.extend)(this.callBase(), {
                            onIncidentOccurred: defaultOnIncidentOccurred
                        })
                    },
                    _useLinks: true,
                    _init() {
                        this._$element.children(".dx-sized-element").remove();
                        this._graphicObjects = {};
                        this.callBase(...arguments);
                        this._changesLocker = 0;
                        this._optionChangedLocker = 0;
                        this._asyncFirstDrawing = true;
                        this._changes = (0, _helpers.changes)();
                        this._suspendChanges();
                        this._themeManager = this._createThemeManager();
                        this._themeManager.setCallback((() => {
                            this._requestChange(this._themeDependentChanges)
                        }));
                        this._renderElementAttributes();
                        this._initRenderer();
                        const useLinks = this._useLinks;
                        if (useLinks) {
                            this._renderer.root.enableLinks().virtualLink("core").virtualLink("peripheral")
                        }
                        this._renderVisibilityChange();
                        this._attachVisibilityChangeHandlers();
                        this._toggleParentsScrollSubscription(this._isVisible());
                        this._initEventTrigger();
                        this._incidentOccurred = (0, _base_widget.createIncidentOccurred)(this.NAME, this._eventTrigger);
                        this._layout = new _layout.default;
                        if (useLinks) {
                            this._renderer.root.linkAfter("core")
                        }
                        this._initPlugins();
                        this._initCore();
                        if (useLinks) {
                            this._renderer.root.linkAfter()
                        }
                        this._change(this._initialChanges)
                    },
                    _createThemeManager() {
                        return new _base_theme_manager.BaseThemeManager(this._getThemeManagerOptions())
                    },
                    _getThemeManagerOptions() {
                        return {
                            themeSection: this._themeSection,
                            fontFields: this._fontFields
                        }
                    },
                    _initialChanges: ["LAYOUT", "RESIZE_HANDLER", "THEME", "DISABLED"],
                    _initPlugins() {
                        (0, _iterator.each)(this._plugins, ((_, plugin) => {
                            plugin.init.call(this)
                        }))
                    },
                    _disposePlugins() {
                        (0, _iterator.each)(this._plugins.slice().reverse(), ((_, plugin) => {
                            plugin.dispose.call(this)
                        }))
                    },
                    _change(codes) {
                        this._changes.add(codes)
                    },
                    _suspendChanges() {
                        this._changesLocker += 1
                    },
                    _resumeChanges() {
                        if (0 === --this._changesLocker && this._changes.count() > 0 && !this._applyingChanges) {
                            this._renderer.lock();
                            this._applyingChanges = true;
                            this._applyChanges();
                            this._changes.reset();
                            this._applyingChanges = false;
                            this._changesApplied();
                            this._renderer.unlock();
                            if (this._optionsQueue) {
                                this._applyQueuedOptions()
                            }
                            this.resolveItemsDeferred(this._legend ? [this._legend] : []);
                            this._optionChangedLocker += 1;
                            this._notify();
                            this._optionChangedLocker -= 1
                        }
                    },
                    resolveItemsDeferred(items) {
                        this._resolveDeferred(this._getTemplatesItems(items))
                    },
                    _collectTemplatesFromItems: items => items.reduce(((prev, i) => ({
                        items: prev.items.concat(i.getTemplatesDef()),
                        groups: prev.groups.concat(i.getTemplatesGroups())
                    })), {
                        items: [],
                        groups: []
                    }),
                    _getTemplatesItems(items) {
                        const elements = this._collectTemplatesFromItems(items);
                        const extraItems = this._getExtraTemplatesItems();
                        return {
                            items: extraItems.items.concat(elements.items),
                            groups: extraItems.groups.concat(elements.groups),
                            launchRequest: [extraItems.launchRequest],
                            doneRequest: [extraItems.doneRequest]
                        }
                    },
                    _getExtraTemplatesItems: () => ({
                        items: [],
                        groups: [],
                        launchRequest: () => {},
                        doneRequest: () => {}
                    }),
                    _resolveDeferred(_ref) {
                        let {
                            items: items,
                            launchRequest: launchRequest,
                            doneRequest: doneRequest,
                            groups: groups
                        } = _ref;
                        this._setGroupsVisibility(groups, "hidden");
                        if (this._changesApplying) {
                            this._changesApplying = false;
                            callForEach(doneRequest);
                            return
                        }
                        let syncRendering = true;
                        _deferred.when.apply(this, items).done((() => {
                            var _groups$;
                            const isGroupInDom = !(null !== (_groups$ = groups[0]) && void 0 !== _groups$ && _groups$.element) || !!(0, _renderer.default)(groups[0].element.closest("svg")).length;
                            if (!isGroupInDom) {
                                return
                            }
                            if (syncRendering) {
                                this._setGroupsVisibility(groups, "visible");
                                return
                            }
                            callForEach(launchRequest);
                            this._changesApplying = true;
                            const changes = ["LAYOUT", "FULL_RENDER"];
                            if (this._asyncFirstDrawing) {
                                changes.push("FORCE_FIRST_DRAWING");
                                this._asyncFirstDrawing = false
                            } else {
                                changes.push("FORCE_DRAWING")
                            }
                            this._requestChange(changes);
                            this._setGroupsVisibility(groups, "visible")
                        }));
                        syncRendering = false
                    },
                    _setGroupsVisibility(groups, visibility) {
                        groups.forEach((g => g.attr({
                            visibility: visibility
                        })))
                    },
                    _applyQueuedOptions() {
                        const queue = this._optionsQueue;
                        this._optionsQueue = null;
                        this.beginUpdate();
                        (0, _iterator.each)(queue, ((_, action) => {
                            action()
                        }));
                        this.endUpdate()
                    },
                    _requestChange(codes) {
                        this._suspendChanges();
                        this._change(codes);
                        this._resumeChanges()
                    },
                    _applyChanges() {
                        const changes = this._changes;
                        const order = this._totalChangesOrder;
                        const changesOrderLength = order.length;
                        for (let i = 0; i < changesOrderLength; i += 1) {
                            if (changes.has(order[i])) {
                                this[`_change_${order[i]}`]()
                            }
                        }
                    },
                    _optionChangesOrder: ["EVENTS", "THEME", "RENDERER", "RESIZE_HANDLER"],
                    _layoutChangesOrder: ["ELEMENT_ATTR", "CONTAINER_SIZE", "LAYOUT"],
                    _customChangesOrder: ["DISABLED"],
                    _change_EVENTS() {
                        this._eventTrigger.applyChanges()
                    },
                    _change_THEME() {
                        this._setThemeAndRtl()
                    },
                    _change_RENDERER() {
                        this._setRendererOptions()
                    },
                    _change_RESIZE_HANDLER() {
                        this._setupResizeHandler()
                    },
                    _change_ELEMENT_ATTR() {
                        this._renderElementAttributes();
                        this._change(["CONTAINER_SIZE"])
                    },
                    _change_CONTAINER_SIZE() {
                        this._updateSize()
                    },
                    _change_LAYOUT() {
                        this._setContentSize()
                    },
                    _change_DISABLED() {
                        const renderer = this._renderer;
                        const {
                            root: root
                        } = renderer;
                        if (this.option("disabled")) {
                            this._initDisabledState = root.attr("pointer-events");
                            root.attr({
                                "pointer-events": "none",
                                filter: renderer.getGrayScaleFilter().id
                            })
                        } else if ("none" === root.attr("pointer-events")) {
                            root.attr({
                                "pointer-events": (0, _type.isDefined)(this._initDisabledState) ? this._initDisabledState : null,
                                filter: null
                            })
                        }
                    },
                    _themeDependentChanges: ["RENDERER"],
                    _initRenderer() {
                        const rawCanvas = this._calculateRawCanvas();
                        this._canvas = (0, _utils2.floorCanvasDimensions)(rawCanvas);
                        this._renderer = new _renderer2.Renderer({
                            cssClass: `${this._rootClassPrefix} ${this._rootClass}`,
                            pathModified: this.option("pathModified"),
                            container: this._$element[0]
                        });
                        this._renderer.resize(this._canvas.width, this._canvas.height)
                    },
                    _disposeRenderer() {
                        this._renderer.dispose()
                    },
                    _disposeGraphicObjects() {
                        Object.keys(this._graphicObjects).forEach((id => {
                            this._graphicObjects[id].dispose()
                        }));
                        this._graphicObjects = null
                    },
                    _getAnimationOptions: _common.noop,
                    render() {
                        this._requestChange(["CONTAINER_SIZE"]);
                        const visible = this._isVisible();
                        this._toggleParentsScrollSubscription(visible);
                        !visible && this._stopCurrentHandling()
                    },
                    _toggleParentsScrollSubscription(subscribe) {
                        let $parents = (0, _renderer.default)(this._renderer.root.element).parents();
                        if ("generic" === _devices.default.real().platform) {
                            $parents = $parents.add((0, _window.getWindow)())
                        }
                        this._proxiedTargetParentsScrollHandler = this._proxiedTargetParentsScrollHandler || function() {
                            this._stopCurrentHandling()
                        }.bind(this);
                        _events_engine.default.off((0, _renderer.default)("").add(this._$prevRootParents), "scroll.viz_widgets", this._proxiedTargetParentsScrollHandler);
                        if (subscribe) {
                            _events_engine.default.on($parents, "scroll.viz_widgets", this._proxiedTargetParentsScrollHandler);
                            this._$prevRootParents = $parents
                        }
                    },
                    _stopCurrentHandling: _common.noop,
                    _dispose() {
                        if (this._disposed) {
                            return
                        }
                        this.callBase(...arguments);
                        this._toggleParentsScrollSubscription(false);
                        this._removeResizeHandler();
                        this._layout.dispose();
                        this._eventTrigger.dispose();
                        this._disposeCore();
                        this._disposePlugins();
                        this._disposeGraphicObjects();
                        this._disposeRenderer();
                        this._themeManager.dispose();
                        this._themeManager = null;
                        this._renderer = null;
                        this._eventTrigger = null
                    },
                    _initEventTrigger() {
                        this._eventTrigger = (0, _base_widget.createEventTrigger)(this._eventsMap, ((name, actionSettings) => this._createActionByOption(name, actionSettings)))
                    },
                    _calculateRawCanvas() {
                        const size = this.option("size") || {};
                        const margin = this.option("margin") || {};
                        const defaultCanvas = this._getDefaultSize() || {};
                        const getSizeOfSide = (size, side, getter) => {
                            if ((value = size[side], (0, _type.isDefined)(value) && value > 0) || !(0, _window.hasWindow)()) {
                                return 0
                            }
                            var value;
                            const elementSize = getter(this._$element);
                            return elementSize <= 1 ? 0 : elementSize
                        };
                        const elementWidth = getSizeOfSide(size, "width", (x => (0, _size.getWidth)(x)));
                        const elementHeight = getSizeOfSide(size, "height", (x => (0, _size.getHeight)(x)));
                        let canvas = {
                            width: size.width <= 0 ? 0 : pickPositiveValue([size.width, elementWidth, defaultCanvas.width]),
                            height: size.height <= 0 ? 0 : pickPositiveValue([size.height, elementHeight, defaultCanvas.height]),
                            left: pickPositiveValue([margin.left, defaultCanvas.left]),
                            top: pickPositiveValue([margin.top, defaultCanvas.top]),
                            right: pickPositiveValue([margin.right, defaultCanvas.right]),
                            bottom: pickPositiveValue([margin.bottom, defaultCanvas.bottom])
                        };
                        if (canvas.width - canvas.left - canvas.right <= 0 || canvas.height - canvas.top - canvas.bottom <= 0) {
                            canvas = {
                                width: 0,
                                height: 0
                            }
                        }
                        return canvas
                    },
                    _updateSize() {
                        const rawCanvas = this._calculateRawCanvas();
                        if ((0, _utils2.areCanvasesDifferent)(this._canvas, rawCanvas) || this.__forceRender) {
                            this._canvas = (0, _utils2.floorCanvasDimensions)(rawCanvas);
                            this._recreateSizeDependentObjects(true);
                            this._renderer.resize(this._canvas.width, this._canvas.height);
                            this._change(["LAYOUT"])
                        }
                    },
                    _recreateSizeDependentObjects: _common.noop,
                    _getMinSize: () => [0, 0],
                    _getAlignmentRect: _common.noop,
                    _setContentSize() {
                        const canvas = this._canvas;
                        const layout = this._layout;
                        let rect = canvas.width > 0 && canvas.height > 0 ? [canvas.left, canvas.top, canvas.width - canvas.right, canvas.height - canvas.bottom] : [0, 0, 0, 0];
                        rect = layout.forward(rect, this._getMinSize());
                        const nextRect = this._applySize(rect) || rect;
                        layout.backward(nextRect, this._getAlignmentRect() || nextRect)
                    },
                    _getOption(name, isScalar) {
                        const theme = this._themeManager.theme(name);
                        const option = this.option(name);
                        return isScalar ? void 0 !== option ? option : theme : (0, _extend.extend)(true, {}, theme, option)
                    },
                    _setupResizeHandler() {
                        const redrawOnResize = (0, _utils.parseScalar)(this._getOption("redrawOnResize", true), true);
                        if (this._disposeResizeHandler) {
                            this._removeResizeHandler()
                        }
                        this._disposeResizeHandler = (0, _base_widget.createResizeHandler)(this._$element[0], redrawOnResize, (() => this._requestChange(["CONTAINER_SIZE"])))
                    },
                    _removeResizeHandler() {
                        if (this._disposeResizeHandler) {
                            this._disposeResizeHandler();
                            this._disposeResizeHandler = null
                        }
                    },
                    _onBeginUpdate: _common.noop,
                    beginUpdate() {
                        if (this._initialized && this._isUpdateAllowed()) {
                            this._onBeginUpdate();
                            this._suspendChanges()
                        }
                        this.callBase(...arguments);
                        return this
                    },
                    endUpdate() {
                        this.callBase();
                        this._isUpdateAllowed() && this._resumeChanges();
                        return this
                    },
                    option(name) {
                        if (this._initialized && this._applyingChanges && (arguments.length > 1 || (0, _type.isObject)(name))) {
                            this._optionsQueue = this._optionsQueue || [];
                            this._optionsQueue.push(this._getActionForUpdating(arguments))
                        } else {
                            return baseOptionMethod.apply(this, arguments)
                        }
                    },
                    _getActionForUpdating(args) {
                        return () => {
                            baseOptionMethod.apply(this, args)
                        }
                    },
                    _clean: _common.noop,
                    _render: _common.noop,
                    _optionChanged(arg) {
                        if (this._optionChangedLocker) {
                            return
                        }
                        const partialChanges = this.getPartialChangeOptionsName(arg);
                        let changes = [];
                        if (partialChanges.length > 0) {
                            partialChanges.forEach((pc => changes.push(this._partialOptionChangesMap[pc])))
                        } else {
                            changes.push(this._optionChangesMap[arg.name])
                        }
                        changes = changes.filter((c => !!c));
                        if (this._eventTrigger.change(arg.name)) {
                            this._change(["EVENTS"])
                        } else if (changes.length > 0) {
                            this._change(changes)
                        } else {
                            this.callBase.apply(this, arguments)
                        }
                    },
                    _notify: _common.noop,
                    _changesApplied: _common.noop,
                    _optionChangesMap: {
                        size: "CONTAINER_SIZE",
                        margin: "CONTAINER_SIZE",
                        redrawOnResize: "RESIZE_HANDLER",
                        theme: "THEME",
                        rtlEnabled: "THEME",
                        encodeHtml: "THEME",
                        elementAttr: "ELEMENT_ATTR",
                        disabled: "DISABLED"
                    },
                    _partialOptionChangesMap: {},
                    _partialOptionChangesPath: {},
                    getPartialChangeOptionsName(changedOption) {
                        const {
                            fullName: fullName
                        } = changedOption;
                        const sections = fullName.split(/[.]/);
                        const {
                            name: name
                        } = changedOption;
                        const {
                            value: value
                        } = changedOption;
                        const options = this._partialOptionChangesPath[name];
                        const partialChangeOptionsName = [];
                        if (options) {
                            if (true === options) {
                                partialChangeOptionsName.push(name)
                            } else {
                                options.forEach((op => {
                                    fullName.indexOf(op) >= 0 && partialChangeOptionsName.push(op)
                                }));
                                if (1 === sections.length) {
                                    if ("object" === (0, _type.type)(value)) {
                                        this._addOptionsNameForPartialUpdate(value, options, partialChangeOptionsName)
                                    } else if ("array" === (0, _type.type)(value)) {
                                        if (value.length > 0 && value.every((item => this._checkOptionsForPartialUpdate(item, options)))) {
                                            value.forEach((item => {
                                                this._addOptionsNameForPartialUpdate(item, options, partialChangeOptionsName)
                                            }))
                                        }
                                    }
                                }
                            }
                        }
                        return partialChangeOptionsName.filter(((value, index, self) => self.indexOf(value) === index))
                    },
                    _checkOptionsForPartialUpdate: (optionObject, options) => !Object.keys(optionObject).some((key => -1 === options.indexOf(key))),
                    _addOptionsNameForPartialUpdate(optionObject, options, partialChangeOptionsName) {
                        const optionKeys = Object.keys(optionObject);
                        if (this._checkOptionsForPartialUpdate(optionObject, options)) {
                            optionKeys.forEach((key => options.indexOf(key) > -1 && partialChangeOptionsName.push(key)))
                        }
                    },
                    _visibilityChanged() {
                        this.render()
                    },
                    _setThemeAndRtl() {
                        this._themeManager.setTheme(this.option("theme"), this.option("rtlEnabled"))
                    },
                    _getRendererOptions() {
                        return {
                            rtl: this.option("rtlEnabled"),
                            encodeHtml: this.option("encodeHtml"),
                            animation: this._getAnimationOptions()
                        }
                    },
                    _setRendererOptions() {
                        this._renderer.setOptions(this._getRendererOptions())
                    },
                    svg() {
                        return this._renderer.svg()
                    },
                    getSize() {
                        const canvas = this._canvas || {};
                        return {
                            width: canvas.width,
                            height: canvas.height
                        }
                    },
                    isReady: getFalse,
                    _dataIsReady: getTrue,
                    _resetIsReady() {
                        this.isReady = getFalse
                    },
                    _renderGraphicObjects() {
                        const renderer = this._renderer;
                        const graphics = _m_charts.default.getGraphicObjects();
                        Object.keys(graphics).forEach((id => {
                            if (!this._graphicObjects[id]) {
                                const {
                                    type: type,
                                    colors: colors,
                                    rotationAngle: rotationAngle,
                                    template: template,
                                    width: width,
                                    height: height
                                } = graphics[id];
                                switch (type) {
                                    case "linear":
                                        this._graphicObjects[id] = renderer.linearGradient(colors, id, rotationAngle);
                                        break;
                                    case "radial":
                                        this._graphicObjects[id] = renderer.radialGradient(colors, id);
                                        break;
                                    case "pattern":
                                        this._graphicObjects[id] = renderer.customPattern(id, this._getTemplate(template), width, height)
                                }
                            }
                        }))
                    },
                    _drawn() {
                        this.isReady = getFalse;
                        if (this._dataIsReady()) {
                            this._renderer.onEndAnimation((() => {
                                this.isReady = getTrue
                            }))
                        }
                        this._eventTrigger("drawn", {})
                    }
                });
                exports.default = baseWidget;
                (0, _helpers.replaceInherit)(baseWidget)
            },
        12638:
            /*!****************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/viz/core/themes/fluent/index.js ***!
              \****************************************************************************************/
            function(__unused_webpack_module, exports) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                exports.default = [{
                    baseThemeName: "material.blue.light",
                    theme: {
                        name: "fluent.blue.light"
                    }
                }, {
                    baseThemeName: "fluent.blue.light",
                    theme: {
                        name: "fluent.blue.light.compact"
                    }
                }, {
                    baseThemeName: "fluent.blue.light",
                    theme: {
                        name: "fluent.saas.light"
                    }
                }, {
                    baseThemeName: "fluent.saas.light",
                    theme: {
                        name: "fluent.saas.light.compact"
                    }
                }, {
                    baseThemeName: "material.blue.dark",
                    theme: {
                        name: "fluent.blue.dark"
                    }
                }, {
                    baseThemeName: "fluent.blue.dark",
                    theme: {
                        name: "fluent.blue.dark.compact"
                    }
                }, {
                    baseThemeName: "fluent.blue.dark",
                    theme: {
                        name: "fluent.saas.dark"
                    }
                }, {
                    baseThemeName: "fluent.saas.dark",
                    theme: {
                        name: "fluent.saas.dark.compact"
                    }
                }]
            },
        58208:
            /*!*******************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/viz/core/themes/generic/carmine.js ***!
              \*******************************************************************************************/
            function(__unused_webpack_module, exports) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                exports.default = [{
                    baseThemeName: "generic.light",
                    theme: {
                        name: "generic.carmine",
                        defaultPalette: "Carmine",
                        backgroundColor: "#fff",
                        primaryTitleColor: "#333",
                        secondaryTitleColor: "#8899a8",
                        gridColor: "#dee1e3",
                        axisColor: "#707070",
                        export: {
                            backgroundColor: "#fff",
                            font: {
                                color: "#333"
                            },
                            button: {
                                default: {
                                    color: "#333",
                                    borderColor: "#b1b7bd",
                                    backgroundColor: "#fff"
                                },
                                hover: {
                                    color: "#333",
                                    borderColor: "#b1b7bd",
                                    backgroundColor: "#faf2f0"
                                },
                                focus: {
                                    color: "#333",
                                    borderColor: "#6d7781",
                                    backgroundColor: "#faf2f0"
                                },
                                active: {
                                    color: "#333",
                                    borderColor: "#6d7781",
                                    backgroundColor: "#f5e7e4"
                                }
                            }
                        },
                        legend: {
                            font: {
                                color: "#707070"
                            }
                        },
                        tooltip: {
                            color: "#fff",
                            border: {
                                color: "#dee1e3"
                            },
                            font: {
                                color: "#333"
                            }
                        },
                        "chart:common": {
                            commonSeriesSettings: {
                                label: {
                                    border: {
                                        color: "#dee1e3"
                                    }
                                }
                            }
                        },
                        "chart:common:annotation": {
                            font: {
                                color: "#333"
                            },
                            border: {
                                color: "#dee1e3"
                            },
                            color: "#fff"
                        },
                        chart: {
                            commonPaneSettings: {
                                border: {
                                    color: "#dee1e3"
                                }
                            },
                            commonAxisSettings: {
                                breakStyle: {
                                    color: "#c1c5c7"
                                }
                            }
                        },
                        rangeSelector: {
                            scale: {
                                breakStyle: {
                                    color: "#c1c5c7"
                                },
                                tick: {
                                    opacity: .12
                                }
                            },
                            selectedRangeColor: "#f05b41",
                            sliderMarker: {
                                color: "#f05b41"
                            },
                            sliderHandle: {
                                color: "#f05b41",
                                opacity: .5
                            }
                        },
                        sparkline: {
                            pointColor: "#fff",
                            minColor: "#f0ad4e",
                            maxColor: "#f74d61"
                        },
                        treeMap: {
                            group: {
                                color: "#dee1e3",
                                label: {
                                    font: {
                                        color: "#8899a8"
                                    }
                                }
                            }
                        },
                        bullet: {
                            color: "#f05b41"
                        },
                        gauge: {
                            valueIndicators: {
                                rangebar: {
                                    color: "#f05b41"
                                },
                                textcloud: {
                                    color: "#f05b41"
                                }
                            }
                        }
                    }
                }, {
                    baseThemeName: "generic.carmine",
                    theme: {
                        name: "generic.carmine.compact"
                    }
                }]
            },
        2611:
            /*!********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/viz/core/themes/generic/contrast.js ***!
              \********************************************************************************************/
            function(__unused_webpack_module, exports) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                const WHITE = "#ffffff";
                const BLACK = "#000000";
                exports.default = [{
                    baseThemeName: "generic.light",
                    theme: {
                        name: "generic.contrast",
                        defaultPalette: "Bright",
                        font: {
                            color: WHITE
                        },
                        backgroundColor: BLACK,
                        primaryTitleColor: WHITE,
                        secondaryTitleColor: WHITE,
                        gridColor: WHITE,
                        axisColor: WHITE,
                        export: {
                            backgroundColor: BLACK,
                            font: {
                                color: WHITE
                            },
                            button: {
                                default: {
                                    color: WHITE,
                                    borderColor: WHITE,
                                    backgroundColor: BLACK
                                },
                                hover: {
                                    color: WHITE,
                                    borderColor: WHITE,
                                    backgroundColor: "#cf00d7"
                                },
                                focus: {
                                    color: WHITE,
                                    borderColor: "#cf00d7",
                                    backgroundColor: BLACK
                                },
                                active: {
                                    color: BLACK,
                                    borderColor: WHITE,
                                    backgroundColor: WHITE
                                }
                            },
                            borderColor: WHITE,
                            menuButtonColor: BLACK,
                            activeBackgroundColor: WHITE,
                            activeColor: BLACK,
                            selectedBorderColor: "#cf00da",
                            selectedColor: "#cf00da",
                            shadowColor: "none"
                        },
                        tooltip: {
                            border: {
                                color: WHITE
                            },
                            font: {
                                color: WHITE
                            },
                            color: BLACK
                        },
                        "chart:common": {
                            commonSeriesSettings: {
                                valueErrorBar: {
                                    color: WHITE
                                },
                                hoverStyle: {
                                    hatching: {
                                        opacity: .5
                                    }
                                },
                                selectionStyle: {
                                    hatching: {
                                        opacity: .35
                                    }
                                },
                                label: {
                                    font: {
                                        color: WHITE
                                    },
                                    border: {
                                        color: WHITE
                                    }
                                }
                            }
                        },
                        "chart:common:axis": {
                            constantLineStyle: {
                                color: WHITE
                            }
                        },
                        "chart:common:annotation": {
                            font: {
                                color: WHITE
                            },
                            border: {
                                color: WHITE
                            },
                            color: BLACK
                        },
                        chart: {
                            commonSeriesSettings: {},
                            crosshair: {
                                color: "#cf00d7"
                            },
                            commonPaneSettings: {
                                backgroundColor: BLACK,
                                border: {
                                    color: WHITE
                                }
                            },
                            scrollBar: {
                                color: WHITE
                            },
                            commonAxisSettings: {
                                breakStyle: {
                                    color: "#cf00d7"
                                }
                            },
                            zoomAndPan: {
                                dragBoxStyle: {
                                    color: WHITE,
                                    opacity: .7
                                }
                            }
                        },
                        pie: {
                            commonSeriesSettings: {
                                pie: {
                                    hoverStyle: {
                                        hatching: {
                                            opacity: .5
                                        }
                                    },
                                    selectionStyle: {
                                        hatching: {
                                            opacity: .35
                                        }
                                    }
                                },
                                doughnut: {
                                    hoverStyle: {
                                        hatching: {
                                            opacity: .5
                                        }
                                    },
                                    selectionStyle: {
                                        hatching: {
                                            opacity: .35
                                        }
                                    }
                                },
                                donut: {
                                    hoverStyle: {
                                        hatching: {
                                            opacity: .5
                                        }
                                    },
                                    selectionStyle: {
                                        hatching: {
                                            opacity: .35
                                        }
                                    }
                                }
                            }
                        },
                        gauge: {
                            rangeContainer: {
                                backgroundColor: WHITE
                            },
                            valueIndicators: {
                                _default: {
                                    color: WHITE
                                },
                                rangebar: {
                                    color: WHITE,
                                    backgroundColor: BLACK
                                },
                                twocolorneedle: {
                                    secondColor: WHITE
                                },
                                trianglemarker: {
                                    color: WHITE
                                },
                                textcloud: {
                                    color: WHITE,
                                    text: {
                                        font: {
                                            color: BLACK
                                        }
                                    }
                                }
                            }
                        },
                        barGauge: {
                            backgroundColor: "#3c3c3c"
                        },
                        rangeSelector: {
                            scale: {
                                tick: {
                                    color: WHITE,
                                    opacity: .4
                                },
                                minorTick: {
                                    color: WHITE,
                                    opacity: .12
                                },
                                breakStyle: {
                                    color: "#cf00d7"
                                }
                            },
                            selectedRangeColor: "#cf00da",
                            sliderMarker: {
                                color: "#cf00da"
                            },
                            sliderHandle: {
                                color: "#cf00da",
                                opacity: 1
                            },
                            shutter: {
                                opacity: .75
                            },
                            background: {
                                color: BLACK
                            }
                        },
                        map: {
                            background: {
                                borderColor: WHITE
                            },
                            layer: {
                                label: {
                                    stroke: BLACK,
                                    font: {
                                        color: WHITE
                                    }
                                }
                            },
                            "layer:area": {
                                borderColor: BLACK,
                                color: "#686868",
                                hoveredBorderColor: WHITE,
                                selectedBorderColor: WHITE,
                                label: {
                                    font: {
                                        opacity: 1
                                    }
                                }
                            },
                            "layer:line": {
                                color: "#267cff",
                                hoveredColor: "#f613ff",
                                selectedColor: WHITE
                            },
                            "layer:marker:dot": {
                                borderColor: BLACK,
                                color: "#f8ca00",
                                backColor: BLACK,
                                backOpacity: .32
                            },
                            "layer:marker:bubble": {
                                color: "#f8ca00",
                                hoveredBorderColor: WHITE,
                                selectedBorderColor: WHITE
                            },
                            "layer:marker:pie": {
                                hoveredBorderColor: WHITE,
                                selectedBorderColor: WHITE
                            },
                            controlBar: {
                                borderColor: WHITE,
                                color: BLACK,
                                opacity: .3
                            }
                        },
                        treeMap: {
                            tile: {
                                color: "#70c92f"
                            },
                            group: {
                                color: "#797979",
                                label: {
                                    font: {
                                        color: WHITE
                                    }
                                }
                            }
                        },
                        sparkline: {
                            pointColor: BLACK
                        },
                        bullet: {},
                        polar: {
                            commonSeriesSettings: {}
                        },
                        funnel: {
                            label: {
                                connector: {
                                    opacity: 1
                                }
                            }
                        },
                        sankey: {
                            label: {
                                font: {
                                    color: WHITE
                                },
                                shadow: {
                                    opacity: 0
                                }
                            },
                            node: {
                                border: {
                                    visible: true,
                                    width: 1,
                                    color: WHITE
                                }
                            },
                            link: {
                                opacity: .5,
                                border: {
                                    visible: true,
                                    width: 1,
                                    color: WHITE
                                },
                                hoverStyle: {
                                    opacity: .9
                                }
                            }
                        }
                    }
                }, {
                    baseThemeName: "generic.contrast",
                    theme: {
                        name: "generic.contrast.compact"
                    }
                }]
            },
        52541:
            /*!****************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/viz/core/themes/generic/dark.js ***!
              \****************************************************************************************/
            function(__unused_webpack_module, exports) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                const WHITE = "#ffffff";
                exports.default = [{
                    baseThemeName: "generic.light",
                    theme: {
                        name: "generic.dark",
                        font: {
                            color: "#808080"
                        },
                        backgroundColor: "#2a2a2a",
                        primaryTitleColor: "#dedede",
                        secondaryTitleColor: "#a3a3a3",
                        gridColor: "#555555",
                        axisColor: "#a3a3a3",
                        export: {
                            backgroundColor: "#2a2a2a",
                            font: {
                                color: "#dbdbdb"
                            },
                            button: {
                                default: {
                                    color: "#dedede",
                                    borderColor: "#4d4d4d",
                                    backgroundColor: "#2e2e2e"
                                },
                                hover: {
                                    color: "#dedede",
                                    borderColor: "#6c6c6c",
                                    backgroundColor: "#444"
                                },
                                focus: {
                                    color: "#dedede",
                                    borderColor: "#8d8d8d",
                                    backgroundColor: "#444444"
                                },
                                active: {
                                    color: "#dedede",
                                    borderColor: "#8d8d8d",
                                    backgroundColor: "#555555"
                                }
                            },
                            shadowColor: "#292929"
                        },
                        tooltip: {
                            color: "#2b2b2b",
                            border: {
                                color: "#494949"
                            },
                            font: {
                                color: "#929292"
                            }
                        },
                        "chart:common": {
                            commonSeriesSettings: {
                                label: {
                                    border: {
                                        color: "#494949"
                                    }
                                },
                                valueErrorBar: {
                                    color: WHITE
                                }
                            }
                        },
                        "chart:common:axis": {
                            constantLineStyle: {
                                color: WHITE
                            }
                        },
                        "chart:common:annotation": {
                            font: {
                                color: "#929292"
                            },
                            border: {
                                color: "#494949"
                            },
                            color: "#2b2b2b",
                            shadow: {
                                opacity: .008,
                                offsetY: 4,
                                blur: 8
                            }
                        },
                        chart: {
                            commonPaneSettings: {
                                border: {
                                    color: "#494949"
                                }
                            },
                            commonAxisSettings: {
                                breakStyle: {
                                    color: "#818181"
                                }
                            },
                            zoomAndPan: {
                                dragBoxStyle: {
                                    color: WHITE
                                }
                            }
                        },
                        gauge: {
                            rangeContainer: {
                                backgroundColor: "#b5b5b5"
                            },
                            valueIndicators: {
                                _default: {
                                    color: "#b5b5b5"
                                },
                                rangebar: {
                                    color: "#84788b"
                                },
                                twocolorneedle: {
                                    secondColor: "#ba544d"
                                },
                                trianglemarker: {
                                    color: "#b7918f"
                                },
                                textcloud: {
                                    color: "#ba544d"
                                }
                            }
                        },
                        barGauge: {
                            backgroundColor: "#3c3c3c"
                        },
                        rangeSelector: {
                            scale: {
                                tick: {
                                    color: WHITE,
                                    opacity: .32
                                },
                                minorTick: {
                                    color: WHITE,
                                    opacity: .1
                                },
                                breakStyle: {
                                    color: "#818181"
                                }
                            },
                            selectedRangeColor: "#b5b5b5",
                            sliderMarker: {
                                color: "#b5b5b5",
                                font: {
                                    color: "#303030"
                                }
                            },
                            sliderHandle: {
                                color: WHITE,
                                opacity: .2
                            },
                            shutter: {
                                color: "#2b2b2b",
                                opacity: .9
                            }
                        },
                        map: {
                            background: {
                                borderColor: "#3f3f3f"
                            },
                            layer: {
                                label: {
                                    stroke: "#000000",
                                    font: {
                                        color: WHITE
                                    }
                                }
                            },
                            "layer:area": {
                                borderColor: "#303030",
                                color: "#686868",
                                hoveredBorderColor: WHITE,
                                selectedBorderColor: WHITE
                            },
                            "layer:line": {
                                color: "#c77244",
                                hoveredColor: "#ff5d04",
                                selectedColor: "#ff784f"
                            },
                            "layer:marker:bubble": {
                                hoveredBorderColor: WHITE,
                                selectedBorderColor: WHITE
                            },
                            "layer:marker:pie": {
                                hoveredBorderColor: WHITE,
                                selectedBorderColor: WHITE
                            },
                            legend: {
                                border: {
                                    color: "#3f3f3f"
                                },
                                font: {
                                    color: WHITE
                                }
                            },
                            controlBar: {
                                borderColor: "#c7c7c7",
                                color: "#303030"
                            }
                        },
                        treeMap: {
                            group: {
                                color: "#4c4c4c",
                                label: {
                                    font: {
                                        color: "#a3a3a3"
                                    }
                                }
                            }
                        },
                        sparkline: {
                            lineColor: "#c7c7c7",
                            firstLastColor: "#c7c7c7",
                            barPositiveColor: "#b8b8b8",
                            barNegativeColor: "#8e8e8e",
                            winColor: "#b8b8b8",
                            lossColor: "#8e8e8e",
                            pointColor: "#303030"
                        },
                        bullet: {
                            targetColor: "#8e8e8e"
                        },
                        funnel: {
                            item: {
                                border: {
                                    color: "#2a2a2a"
                                }
                            }
                        },
                        sankey: {
                            label: {
                                font: {
                                    color: WHITE
                                },
                                shadow: {
                                    opacity: 0
                                }
                            },
                            node: {
                                border: {
                                    color: "#2a2a2a"
                                }
                            },
                            link: {
                                color: "#888888",
                                border: {
                                    color: "#2a2a2a"
                                },
                                hoverStyle: {
                                    color: "#bbbbbb"
                                }
                            }
                        }
                    }
                }, {
                    baseThemeName: "generic.dark",
                    theme: {
                        name: "generic.dark.compact"
                    }
                }]
            },
        9940:
            /*!********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/viz/core/themes/generic/darkmoon.js ***!
              \********************************************************************************************/
            function(__unused_webpack_module, exports) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                exports.default = [{
                    baseThemeName: "generic.dark",
                    theme: {
                        name: "generic.darkmoon",
                        defaultPalette: "Dark Moon",
                        backgroundColor: "#465672",
                        primaryTitleColor: "#fff",
                        secondaryTitleColor: "#919bac",
                        gridColor: "#596980",
                        axisColor: "#c7ccd4",
                        export: {
                            backgroundColor: "#465672",
                            font: {
                                color: "#fff"
                            },
                            button: {
                                default: {
                                    color: "#fff",
                                    borderColor: "#7a889e",
                                    backgroundColor: "#465672"
                                },
                                hover: {
                                    color: "#fff",
                                    borderColor: "#9da8b8",
                                    backgroundColor: "#596e92"
                                },
                                focus: {
                                    color: "#fff",
                                    borderColor: "#c4cad4",
                                    backgroundColor: "#596e92"
                                },
                                active: {
                                    color: "#fff",
                                    borderColor: "#c4cad4",
                                    backgroundColor: "#6b80a4"
                                }
                            }
                        },
                        legend: {
                            font: {
                                color: "#c7ccd4"
                            }
                        },
                        tooltip: {
                            color: "#62789e",
                            border: {
                                color: "#596980"
                            },
                            font: {
                                color: "#fff"
                            }
                        },
                        "chart:common": {
                            commonSeriesSettings: {
                                label: {
                                    border: {
                                        color: "#596980"
                                    }
                                }
                            }
                        },
                        "chart:common:annotation": {
                            font: {
                                color: "#fff"
                            },
                            border: {
                                color: "#596980"
                            },
                            color: "#62789e"
                        },
                        chart: {
                            commonPaneSettings: {
                                border: {
                                    color: "#596980"
                                }
                            },
                            commonAxisSettings: {
                                breakStyle: {
                                    color: "#73869e"
                                }
                            }
                        },
                        gauge: {
                            valueIndicators: {
                                rangebar: {
                                    color: "#3debd3"
                                },
                                textcloud: {
                                    color: "#3debd3",
                                    text: {
                                        font: {
                                            color: "#465672"
                                        }
                                    }
                                }
                            }
                        },
                        barGauge: {
                            backgroundColor: "#526280"
                        },
                        funnel: {
                            item: {
                                border: {
                                    color: "#465672"
                                }
                            }
                        },
                        sparkline: {
                            pointColor: "#465672",
                            minColor: "#f0ad4e",
                            maxColor: "#f9517e"
                        },
                        treeMap: {
                            group: {
                                color: "#596980",
                                label: {
                                    font: {
                                        color: "#fff"
                                    }
                                }
                            }
                        },
                        map: {
                            background: {
                                borderColor: "#596980"
                            },
                            "layer:area": {
                                color: "#97a3b6",
                                borderColor: "#465672"
                            }
                        },
                        rangeSelector: {
                            shutter: {
                                color: "#465672"
                            },
                            scale: {
                                breakStyle: {
                                    color: "#73869e"
                                },
                                tick: {
                                    opacity: .2
                                }
                            },
                            selectedRangeColor: "#3debd3",
                            sliderMarker: {
                                color: "#3debd3",
                                font: {
                                    color: "#000"
                                }
                            },
                            sliderHandle: {
                                color: "#3debd3",
                                opacity: .5
                            }
                        },
                        bullet: {
                            color: "#3debd3"
                        },
                        sankey: {
                            link: {
                                border: {
                                    color: "#465672"
                                }
                            },
                            node: {
                                border: {
                                    color: "#465672"
                                }
                            }
                        }
                    }
                }, {
                    baseThemeName: "generic.darkmoon",
                    theme: {
                        name: "generic.darkmoon.compact"
                    }
                }]
            },
        26374:
            /*!**********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/viz/core/themes/generic/darkviolet.js ***!
              \**********************************************************************************************/
            function(__unused_webpack_module, exports) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                exports.default = [{
                    baseThemeName: "generic.dark",
                    theme: {
                        name: "generic.darkviolet",
                        defaultPalette: "Dark Violet",
                        backgroundColor: "#17171f",
                        primaryTitleColor: "#f5f6f7",
                        secondaryTitleColor: "#fff",
                        gridColor: "#343840",
                        axisColor: "#b2b2b6",
                        export: {
                            backgroundColor: "#17171f",
                            font: {
                                color: "#f5f6f7"
                            },
                            button: {
                                default: {
                                    color: "#f5f6f7",
                                    borderColor: "#414152",
                                    backgroundColor: "#17171f"
                                },
                                hover: {
                                    color: "#f5f6f7",
                                    borderColor: "#5c5c74",
                                    backgroundColor: "#2d2d3c"
                                },
                                focus: {
                                    color: "#f5f6f7",
                                    borderColor: "#7c7c97",
                                    backgroundColor: "#2d2d3c"
                                },
                                active: {
                                    color: "#f5f6f7",
                                    borderColor: "#7c7c97",
                                    backgroundColor: "#3c3c51"
                                }
                            }
                        },
                        legend: {
                            font: {
                                color: "#b2b2b6"
                            }
                        },
                        tooltip: {
                            color: "#17171f",
                            border: {
                                color: "#414152"
                            },
                            font: {
                                color: "#f5f6f7"
                            }
                        },
                        "chart:common": {
                            commonSeriesSettings: {
                                label: {
                                    border: {
                                        color: "#343840"
                                    }
                                }
                            }
                        },
                        "chart:common:annotation": {
                            font: {
                                color: "#f5f6f7"
                            },
                            border: {
                                color: "#414152"
                            },
                            color: "#17171f"
                        },
                        chart: {
                            commonPaneSettings: {
                                border: {
                                    color: "#343840"
                                }
                            },
                            commonAxisSettings: {
                                breakStyle: {
                                    color: "#575e6b"
                                }
                            }
                        },
                        funnel: {
                            item: {
                                border: {
                                    color: "#17171f"
                                }
                            }
                        },
                        sparkline: {
                            pointColor: "#17171f",
                            minColor: "#f0ad4e",
                            maxColor: "#d9534f"
                        },
                        treeMap: {
                            group: {
                                color: "#343840",
                                label: {
                                    font: {
                                        color: "#fff"
                                    }
                                }
                            }
                        },
                        rangeSelector: {
                            shutter: {
                                color: "#17171f"
                            },
                            scale: {
                                breakStyle: {
                                    color: "#575e6b"
                                },
                                tick: {
                                    opacity: .2
                                }
                            },
                            selectedRangeColor: "#9c63ff",
                            sliderMarker: {
                                color: "#9c63ff",
                                font: {
                                    color: "#fff"
                                }
                            },
                            sliderHandle: {
                                color: "#9c63ff",
                                opacity: .5
                            }
                        },
                        bullet: {
                            color: "#9c63ff"
                        },
                        gauge: {
                            valueIndicators: {
                                rangebar: {
                                    color: "#9c63ff"
                                },
                                textcloud: {
                                    color: "#9c63ff"
                                }
                            }
                        },
                        sankey: {
                            link: {
                                border: {
                                    color: "#17171f"
                                }
                            },
                            node: {
                                border: {
                                    color: "#17171f"
                                }
                            }
                        }
                    }
                }, {
                    baseThemeName: "generic.darkviolet",
                    theme: {
                        name: "generic.darkviolet.compact"
                    }
                }]
            },
        29431:
            /*!*********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/viz/core/themes/generic/greenmist.js ***!
              \*********************************************************************************************/
            function(__unused_webpack_module, exports) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                exports.default = [{
                    baseThemeName: "generic.light",
                    theme: {
                        name: "generic.greenmist",
                        defaultPalette: "Green Mist",
                        backgroundColor: "#f5f5f5",
                        primaryTitleColor: "#28484f",
                        secondaryTitleColor: "#7eb2be",
                        gridColor: "#dedede",
                        axisColor: "#657c80",
                        export: {
                            backgroundColor: "#f5f5f5",
                            font: {
                                color: "#28484f"
                            },
                            button: {
                                default: {
                                    color: "#28484f",
                                    borderColor: "#a2b4b8",
                                    backgroundColor: "#f5f5f5"
                                },
                                hover: {
                                    color: "#28484f",
                                    borderColor: "#7f989e",
                                    backgroundColor: "rgba(222, 222, 222, 0.4)"
                                },
                                focus: {
                                    color: "#28484f",
                                    borderColor: "#5f777c",
                                    backgroundColor: "rgba(222, 222, 222, 0.4)"
                                },
                                active: {
                                    color: "#28484f",
                                    borderColor: "#5f777c",
                                    backgroundColor: "rgba(222, 222, 222, 0.8)"
                                }
                            }
                        },
                        legend: {
                            font: {
                                color: "#657c80"
                            }
                        },
                        tooltip: {
                            color: "#fff",
                            border: {
                                color: "#dedede"
                            },
                            font: {
                                color: "#28484f"
                            }
                        },
                        "chart:common": {
                            commonSeriesSettings: {
                                label: {
                                    border: {
                                        color: "#dedede"
                                    }
                                }
                            }
                        },
                        "chart:common:annotation": {
                            color: "#fff",
                            border: {
                                color: "#dedede"
                            },
                            font: {
                                color: "#28484f"
                            }
                        },
                        chart: {
                            commonPaneSettings: {
                                border: {
                                    color: "#dedede"
                                }
                            },
                            commonAxisSettings: {
                                breakStyle: {
                                    color: "#c1c1c1"
                                }
                            }
                        },
                        funnel: {
                            item: {
                                border: {
                                    color: "#f5f5f5"
                                }
                            }
                        },
                        sparkline: {
                            pointColor: "#f5f5f5",
                            minColor: "#ffc852",
                            maxColor: "#f74a5e"
                        },
                        treeMap: {
                            group: {
                                color: "#dedede",
                                label: {
                                    font: {
                                        color: "#7eb2be"
                                    }
                                }
                            }
                        },
                        rangeSelector: {
                            shutter: {
                                color: "#f5f5f5"
                            },
                            scale: {
                                breakStyle: {
                                    color: "#c1c1c1"
                                },
                                tick: {
                                    opacity: .12
                                }
                            },
                            selectedRangeColor: "#3cbab2",
                            sliderMarker: {
                                color: "#3cbab2"
                            },
                            sliderHandle: {
                                color: "#3cbab2",
                                opacity: .5
                            }
                        },
                        bullet: {
                            color: "#3cbab2"
                        },
                        gauge: {
                            valueIndicators: {
                                rangebar: {
                                    color: "#3cbab2"
                                },
                                textcloud: {
                                    color: "#3cbab2"
                                }
                            }
                        }
                    }
                }, {
                    baseThemeName: "generic.greenmist",
                    theme: {
                        name: "generic.greenmist.compact"
                    }
                }]
            },
        39599:
            /*!***************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/viz/core/themes/generic/light/bar_gauge.js ***!
              \***************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _contants = __webpack_require__( /*! ./contants */ 12462);
                exports.default = {
                    barGauge: {
                        backgroundColor: "#e0e0e0",
                        relativeInnerRadius: .3,
                        barSpacing: 4,
                        resolveLabelOverlapping: "hide",
                        label: {
                            indent: 20,
                            connectorWidth: 2,
                            font: {
                                size: 16
                            }
                        },
                        legend: {
                            visible: false
                        },
                        indicator: {
                            hasPositiveMeaning: true,
                            layout: {
                                horizontalAlignment: _contants.CENTER,
                                verticalAlignment: _contants.BOTTOM
                            },
                            text: {
                                font: {
                                    size: 18
                                }
                            }
                        }
                    }
                }
            },
        5828:
            /*!************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/viz/core/themes/generic/light/bullet.js ***!
              \************************************************************************************************/
            function(__unused_webpack_module, exports) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                exports.default = {
                    bullet: {
                        color: "#e8c267",
                        targetColor: "#666666",
                        targetWidth: 4,
                        showTarget: true,
                        showZeroLevel: true,
                        tooltip: {
                            enabled: true
                        }
                    }
                }
            },
        67322:
            /*!***********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/viz/core/themes/generic/light/chart.js ***!
              \***********************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _contants = __webpack_require__( /*! ./contants */ 12462);
                exports.default = {
                    "chart:common": {
                        animation: {
                            enabled: true,
                            duration: 1e3,
                            easing: "easeOutCubic",
                            maxPointCountSupported: 300
                        },
                        commonSeriesSettings: {
                            border: {
                                visible: false,
                                width: 2
                            },
                            showInLegend: true,
                            visible: true,
                            hoverMode: "nearestPoint",
                            selectionMode: "includePoints",
                            hoverStyle: {
                                hatching: {
                                    direction: _contants.RIGHT,
                                    width: 2,
                                    step: 6,
                                    opacity: .75
                                },
                                highlight: true,
                                border: {
                                    visible: false,
                                    width: 3
                                }
                            },
                            selectionStyle: {
                                hatching: {
                                    direction: _contants.RIGHT,
                                    width: 2,
                                    step: 6,
                                    opacity: .5
                                },
                                highlight: true,
                                border: {
                                    visible: false,
                                    width: 3
                                }
                            },
                            valueErrorBar: {
                                displayMode: "auto",
                                value: 1,
                                color: _contants.BLACK,
                                lineWidth: 2,
                                edgeLength: 8
                            },
                            label: {
                                visible: false,
                                alignment: _contants.CENTER,
                                rotationAngle: 0,
                                horizontalOffset: 0,
                                verticalOffset: 0,
                                radialOffset: 0,
                                showForZeroValues: true,
                                customizeText: void 0,
                                maxLabelCount: void 0,
                                position: _contants.OUTSIDE,
                                font: {
                                    color: _contants.WHITE
                                },
                                border: {
                                    visible: false,
                                    width: 1,
                                    color: _contants.LIGHT_GREY,
                                    dashStyle: _contants.SOLID
                                },
                                connector: {
                                    visible: false,
                                    width: 1
                                }
                            }
                        },
                        seriesSelectionMode: "single",
                        pointSelectionMode: "single",
                        equalRowHeight: true,
                        dataPrepareSettings: {
                            checkTypeForAllData: false,
                            convertToAxisDataType: true,
                            sortingMethod: true
                        },
                        title: {
                            margin: 10
                        },
                        adaptiveLayout: {
                            width: 80,
                            height: 80,
                            keepLabels: true
                        },
                        _rtl: {
                            legend: {
                                itemTextPosition: _contants.LEFT
                            }
                        },
                        resolveLabelOverlapping: _contants.NONE
                    },
                    "chart:common:axis": {
                        visible: true,
                        valueMarginsEnabled: true,
                        placeholderSize: null,
                        logarithmBase: 10,
                        discreteAxisDivisionMode: "betweenLabels",
                        aggregatedPointsPosition: "betweenTicks",
                        width: 1,
                        label: {
                            visible: true
                        },
                        grid: {
                            visible: false,
                            width: 1
                        },
                        minorGrid: {
                            visible: false,
                            width: 1,
                            opacity: .3
                        },
                        tick: {
                            visible: true,
                            width: 1,
                            length: 7,
                            shift: 3
                        },
                        minorTick: {
                            visible: false,
                            width: 1,
                            opacity: .3,
                            length: 7,
                            shift: 3
                        },
                        stripStyle: {
                            paddingLeftRight: 10,
                            paddingTopBottom: 5
                        },
                        constantLineStyle: {
                            width: 1,
                            color: _contants.BLACK,
                            dashStyle: _contants.SOLID,
                            label: {
                                visible: true,
                                position: _contants.INSIDE
                            }
                        },
                        marker: {
                            label: {}
                        }
                    },
                    "chart:common:annotation": {
                        font: {
                            color: "#333333"
                        },
                        tooltipEnabled: true,
                        border: {
                            width: 1,
                            color: "#dddddd",
                            dashStyle: _contants.SOLID,
                            visible: true
                        },
                        color: _contants.WHITE,
                        opacity: .9,
                        arrowLength: 14,
                        arrowWidth: 14,
                        paddingLeftRight: 10,
                        paddingTopBottom: 10,
                        shadow: {
                            opacity: .15,
                            offsetX: 0,
                            offsetY: 1,
                            blur: 4,
                            color: _contants.BLACK
                        },
                        image: {
                            width: 30,
                            height: 30
                        },
                        wordWrap: "normal",
                        textOverflow: "ellipsis",
                        allowDragging: false
                    },
                    chart: {
                        commonSeriesSettings: {
                            type: "line",
                            stack: "default",
                            aggregation: {
                                enabled: void 0
                            },
                            point: {
                                visible: true,
                                symbol: "circle",
                                size: 12,
                                border: {
                                    visible: false,
                                    width: 1
                                },
                                hoverMode: "onlyPoint",
                                selectionMode: "onlyPoint",
                                hoverStyle: {
                                    border: {
                                        visible: true,
                                        width: 4
                                    }
                                },
                                selectionStyle: {
                                    border: {
                                        visible: true,
                                        width: 4
                                    }
                                }
                            },
                            scatter: {},
                            line: {
                                width: 2,
                                dashStyle: _contants.SOLID,
                                hoverStyle: {
                                    width: 3,
                                    hatching: {
                                        direction: _contants.NONE
                                    },
                                    highlight: false
                                },
                                selectionStyle: {
                                    width: 3
                                }
                            },
                            stackedline: {
                                width: 2,
                                dashStyle: _contants.SOLID,
                                hoverStyle: {
                                    width: 3,
                                    hatching: {
                                        direction: _contants.NONE
                                    },
                                    highlight: false
                                },
                                selectionStyle: {
                                    width: 3
                                }
                            },
                            stackedspline: {
                                width: 2,
                                dashStyle: _contants.SOLID,
                                hoverStyle: {
                                    width: 3,
                                    hatching: {
                                        direction: _contants.NONE
                                    },
                                    highlight: false
                                },
                                selectionStyle: {
                                    width: 3
                                }
                            },
                            fullstackedline: {
                                width: 2,
                                dashStyle: _contants.SOLID,
                                hoverStyle: {
                                    width: 3,
                                    hatching: {
                                        direction: _contants.NONE
                                    },
                                    highlight: false
                                },
                                selectionStyle: {
                                    width: 3
                                }
                            },
                            fullstackedspline: {
                                width: 2,
                                dashStyle: _contants.SOLID,
                                hoverStyle: {
                                    width: 3,
                                    hatching: {
                                        direction: _contants.NONE
                                    },
                                    highlight: false
                                },
                                selectionStyle: {
                                    width: 3
                                }
                            },
                            stepline: {
                                width: 2,
                                dashStyle: _contants.SOLID,
                                hoverStyle: {
                                    width: 3,
                                    hatching: {
                                        direction: _contants.NONE
                                    },
                                    highlight: false
                                },
                                selectionStyle: {
                                    width: 3
                                }
                            },
                            area: {
                                point: {
                                    visible: false
                                },
                                opacity: .5
                            },
                            stackedarea: {
                                point: {
                                    visible: false
                                },
                                opacity: .5
                            },
                            fullstackedarea: {
                                point: {
                                    visible: false
                                },
                                opacity: .5
                            },
                            fullstackedsplinearea: {
                                point: {
                                    visible: false
                                },
                                opacity: .5
                            },
                            steparea: {
                                border: {
                                    visible: true,
                                    width: 2
                                },
                                point: {
                                    visible: false
                                },
                                hoverStyle: {
                                    border: {
                                        visible: true,
                                        width: 3
                                    }
                                },
                                selectionStyle: {
                                    border: {
                                        visible: true,
                                        width: 3
                                    }
                                },
                                opacity: .5
                            },
                            spline: {
                                width: 2,
                                hoverStyle: {
                                    width: 3,
                                    hatching: {
                                        direction: _contants.NONE
                                    },
                                    highlight: false
                                },
                                selectionStyle: {
                                    width: 3
                                }
                            },
                            splinearea: {
                                point: {
                                    visible: false
                                },
                                opacity: .5
                            },
                            stackedsplinearea: {
                                point: {
                                    visible: false
                                },
                                opacity: .5
                            },
                            bar: {
                                cornerRadius: 0,
                                point: {
                                    hoverStyle: {
                                        border: {
                                            visible: false
                                        }
                                    },
                                    selectionStyle: {
                                        border: {
                                            visible: false
                                        }
                                    }
                                }
                            },
                            stackedbar: {
                                cornerRadius: 0,
                                point: {
                                    hoverStyle: {
                                        border: {
                                            visible: false
                                        }
                                    },
                                    selectionStyle: {
                                        border: {
                                            visible: false
                                        }
                                    }
                                },
                                label: {
                                    position: _contants.INSIDE
                                }
                            },
                            fullstackedbar: {
                                cornerRadius: 0,
                                point: {
                                    hoverStyle: {
                                        border: {
                                            visible: false
                                        }
                                    },
                                    selectionStyle: {
                                        border: {
                                            visible: false
                                        }
                                    }
                                },
                                label: {
                                    position: _contants.INSIDE
                                }
                            },
                            rangebar: {
                                cornerRadius: 0,
                                point: {
                                    hoverStyle: {
                                        border: {
                                            visible: false
                                        }
                                    },
                                    selectionStyle: {
                                        border: {
                                            visible: false
                                        }
                                    }
                                }
                            },
                            rangearea: {
                                point: {
                                    visible: false
                                },
                                opacity: .5
                            },
                            rangesplinearea: {
                                point: {
                                    visible: false
                                },
                                opacity: .5
                            },
                            bubble: {
                                opacity: .5,
                                point: {
                                    hoverStyle: {
                                        border: {
                                            visible: false
                                        }
                                    },
                                    selectionStyle: {
                                        border: {
                                            visible: false
                                        }
                                    }
                                }
                            },
                            candlestick: {
                                width: 1,
                                reduction: {
                                    color: _contants.RED
                                },
                                hoverStyle: {
                                    width: 3,
                                    hatching: {
                                        direction: _contants.NONE
                                    },
                                    highlight: false
                                },
                                selectionStyle: {
                                    width: 3,
                                    highlight: false
                                },
                                point: {
                                    border: {
                                        visible: true
                                    }
                                }
                            },
                            stock: {
                                width: 1,
                                reduction: {
                                    color: _contants.RED
                                },
                                hoverStyle: {
                                    width: 3,
                                    hatching: {
                                        direction: _contants.NONE
                                    },
                                    highlight: false
                                },
                                selectionStyle: {
                                    width: 3,
                                    highlight: false
                                },
                                point: {
                                    border: {
                                        visible: true
                                    }
                                }
                            }
                        },
                        crosshair: {
                            enabled: false,
                            color: "#f05b41",
                            width: 1,
                            dashStyle: _contants.SOLID,
                            label: {
                                visible: false,
                                font: {
                                    color: _contants.WHITE,
                                    size: 12
                                }
                            },
                            verticalLine: {
                                visible: true
                            },
                            horizontalLine: {
                                visible: true
                            }
                        },
                        commonAxisSettings: {
                            multipleAxesSpacing: 5,
                            forceUserTickInterval: false,
                            breakStyle: {
                                width: 5,
                                color: "#ababab",
                                line: "waved"
                            },
                            label: {
                                displayMode: "standard",
                                overlappingBehavior: "hide",
                                indentFromAxis: 10,
                                wordWrap: "normal",
                                textOverflow: "none"
                            },
                            title: {
                                font: {
                                    size: 16
                                },
                                margin: 6,
                                alignment: _contants.CENTER
                            },
                            constantLineStyle: {
                                paddingLeftRight: 10,
                                paddingTopBottom: 10
                            }
                        },
                        horizontalAxis: {
                            position: _contants.BOTTOM,
                            axisDivisionFactor: 70,
                            label: {
                                rotationAngle: 90,
                                staggeringSpacing: 5,
                                alignment: _contants.CENTER
                            },
                            stripStyle: {
                                label: {
                                    horizontalAlignment: _contants.CENTER,
                                    verticalAlignment: _contants.TOP
                                }
                            },
                            constantLineStyle: {
                                label: {
                                    horizontalAlignment: _contants.RIGHT,
                                    verticalAlignment: _contants.TOP
                                }
                            },
                            constantLines: []
                        },
                        verticalAxis: {
                            position: _contants.LEFT,
                            axisDivisionFactor: 40,
                            label: {
                                alignment: _contants.RIGHT
                            },
                            stripStyle: {
                                label: {
                                    horizontalAlignment: _contants.LEFT,
                                    verticalAlignment: _contants.CENTER
                                }
                            },
                            constantLineStyle: {
                                label: {
                                    horizontalAlignment: _contants.LEFT,
                                    verticalAlignment: _contants.TOP
                                }
                            },
                            constantLines: []
                        },
                        argumentAxis: {
                            endOnTick: false,
                            workWeek: [1, 2, 3, 4, 5]
                        },
                        valueAxis: {
                            grid: {
                                visible: true
                            },
                            autoBreaksEnabled: false,
                            maxAutoBreakCount: 4
                        },
                        commonPaneSettings: {
                            backgroundColor: _contants.NONE,
                            border: {
                                color: _contants.LIGHT_GREY,
                                width: 1,
                                visible: false,
                                top: true,
                                bottom: true,
                                left: true,
                                right: true,
                                dashStyle: _contants.SOLID
                            }
                        },
                        scrollBar: {
                            visible: false,
                            offset: 5,
                            color: "gray",
                            width: 10
                        },
                        adjustOnZoom: true,
                        autoHidePointMarkers: true,
                        rotated: false,
                        synchronizeMultiAxes: true,
                        stickyHovering: true,
                        barGroupPadding: .3,
                        minBubbleSize: 12,
                        maxBubbleSize: .2,
                        zoomAndPan: {
                            dragBoxStyle: {
                                color: "#2a2a2a",
                                opacity: .2
                            },
                            panKey: "shift",
                            allowMouseWheel: true,
                            allowTouchGestures: true
                        }
                    }
                }
            },
        12462:
            /*!**************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/viz/core/themes/generic/light/contants.js ***!
              \**************************************************************************************************/
            function(__unused_webpack_module, exports) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.WHITE = exports.TOP = exports.SOME_GREY = exports.SOLID = exports.SECONDARY_TITLE_COLOR = exports.RIGHT = exports.RED = exports.PRIMARY_TITLE_COLOR = exports.OUTSIDE = exports.NONE = exports.LIGHT_GREY = exports.LEFT = exports.INSIDE = exports.GREY_GREEN = exports.CENTER = exports.BOTTOM = exports.BLACK = void 0;
                exports.WHITE = "#ffffff";
                exports.BLACK = "#000000";
                exports.LIGHT_GREY = "#d3d3d3";
                exports.GREY_GREEN = "#303030";
                exports.SOME_GREY = "#2b2b2b";
                exports.RED = "#ff0000";
                exports.PRIMARY_TITLE_COLOR = "#232323";
                exports.SECONDARY_TITLE_COLOR = "#767676";
                exports.NONE = "none";
                exports.SOLID = "solid";
                exports.TOP = "top";
                exports.RIGHT = "right";
                exports.BOTTOM = "bottom";
                exports.LEFT = "left";
                exports.CENTER = "center";
                exports.INSIDE = "inside";
                exports.OUTSIDE = "outside"
            },
        60980:
            /*!************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/viz/core/themes/generic/light/funnel.js ***!
              \************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _contants = __webpack_require__( /*! ./contants */ 12462);
                exports.default = {
                    funnel: {
                        sortData: true,
                        valueField: "val",
                        colorField: "color",
                        argumentField: "arg",
                        hoverEnabled: true,
                        selectionMode: "single",
                        item: {
                            border: {
                                visible: false,
                                width: 2,
                                color: _contants.WHITE
                            },
                            hoverStyle: {
                                hatching: {
                                    opacity: .75,
                                    step: 6,
                                    width: 2,
                                    direction: _contants.RIGHT
                                },
                                border: {}
                            },
                            selectionStyle: {
                                hatching: {
                                    opacity: .5,
                                    step: 6,
                                    width: 2,
                                    direction: _contants.RIGHT
                                },
                                border: {}
                            }
                        },
                        title: {
                            margin: 10
                        },
                        adaptiveLayout: {
                            width: 80,
                            height: 80,
                            keepLabels: true
                        },
                        legend: {
                            visible: false
                        },
                        _rtl: {
                            legend: {
                                itemTextPosition: _contants.LEFT
                            }
                        },
                        tooltip: {
                            customizeTooltip: info => ({
                                text: `${info.item.argument} ${info.valueText}`
                            })
                        },
                        inverted: false,
                        algorithm: "dynamicSlope",
                        neckWidth: 0,
                        neckHeight: 0,
                        resolveLabelOverlapping: "shift",
                        label: {
                            textOverflow: "ellipsis",
                            wordWrap: "normal",
                            visible: true,
                            horizontalAlignment: _contants.RIGHT,
                            horizontalOffset: 0,
                            verticalOffset: 0,
                            showForZeroValues: false,
                            customizeText: info => `${info.item.argument} ${info.valueText}`,
                            position: "columns",
                            font: {
                                color: _contants.WHITE
                            },
                            border: {
                                visible: false,
                                width: 1,
                                color: _contants.LIGHT_GREY,
                                dashStyle: _contants.SOLID
                            },
                            connector: {
                                visible: true,
                                width: 1,
                                opacity: .5
                            }
                        }
                    }
                }
            },
        77393:
            /*!***********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/viz/core/themes/generic/light/gauge.js ***!
              \***********************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _contants = __webpack_require__( /*! ./contants */ 12462);
                exports.default = {
                    gauge: {
                        scale: {
                            tick: {
                                visible: true,
                                length: 5,
                                width: 2,
                                opacity: 1
                            },
                            minorTick: {
                                visible: false,
                                length: 3,
                                width: 1,
                                opacity: 1
                            },
                            label: {
                                visible: true,
                                alignment: _contants.CENTER,
                                hideFirstOrLast: "last",
                                overlappingBehavior: "hide"
                            },
                            position: _contants.TOP,
                            endOnTick: false
                        },
                        rangeContainer: {
                            offset: 0,
                            width: 5,
                            backgroundColor: "#808080"
                        },
                        valueIndicators: {
                            _default: {
                                color: "#c2c2c2"
                            },
                            rangebar: {
                                space: 2,
                                size: 10,
                                color: "#cbc5cf",
                                backgroundColor: _contants.NONE,
                                text: {
                                    indent: 0,
                                    font: {
                                        size: 14,
                                        color: null
                                    }
                                }
                            },
                            twocolorneedle: {
                                secondColor: "#e18e92"
                            },
                            trianglemarker: {
                                space: 2,
                                length: 14,
                                width: 13,
                                color: "#8798a5"
                            },
                            textcloud: {
                                arrowLength: 5,
                                horizontalOffset: 6,
                                verticalOffset: 3,
                                color: "#679ec5",
                                text: {
                                    font: {
                                        color: _contants.WHITE,
                                        size: 18
                                    }
                                }
                            }
                        },
                        indicator: {
                            hasPositiveMeaning: true,
                            layout: {
                                horizontalAlignment: _contants.CENTER,
                                verticalAlignment: _contants.BOTTOM
                            },
                            text: {
                                font: {
                                    size: 18
                                }
                            }
                        },
                        _circular: {
                            scale: {
                                scaleDivisionFactor: 17,
                                orientation: _contants.OUTSIDE,
                                label: {
                                    indentFromTick: 10
                                }
                            },
                            rangeContainer: {
                                orientation: _contants.OUTSIDE
                            },
                            valueIndicatorType: "rectangleneedle",
                            subvalueIndicatorType: "trianglemarker",
                            valueIndicators: {
                                _type: "rectangleneedle",
                                _default: {
                                    offset: 20,
                                    indentFromCenter: 0,
                                    width: 2,
                                    spindleSize: 14,
                                    spindleGapSize: 10,
                                    beginAdaptingAtRadius: 50
                                },
                                triangleneedle: {
                                    width: 4
                                },
                                twocolorneedle: {
                                    space: 2,
                                    secondFraction: .4
                                },
                                rangebar: {
                                    offset: 30
                                },
                                trianglemarker: {
                                    offset: 6
                                },
                                textcloud: {
                                    offset: -6
                                }
                            }
                        },
                        _linear: {
                            scale: {
                                scaleDivisionFactor: 25,
                                horizontalOrientation: _contants.RIGHT,
                                verticalOrientation: _contants.BOTTOM,
                                label: {
                                    indentFromTick: -10
                                }
                            },
                            rangeContainer: {
                                horizontalOrientation: _contants.RIGHT,
                                verticalOrientation: _contants.BOTTOM
                            },
                            valueIndicatorType: "rangebar",
                            subvalueIndicatorType: "trianglemarker",
                            valueIndicators: {
                                _type: "rectangle",
                                _default: {
                                    offset: 2.5,
                                    length: 15,
                                    width: 15
                                },
                                rectangle: {
                                    width: 10
                                },
                                rangebar: {
                                    offset: 10,
                                    horizontalOrientation: _contants.RIGHT,
                                    verticalOrientation: _contants.BOTTOM
                                },
                                trianglemarker: {
                                    offset: 10,
                                    horizontalOrientation: _contants.LEFT,
                                    verticalOrientation: _contants.TOP
                                },
                                textcloud: {
                                    offset: -1,
                                    horizontalOrientation: _contants.LEFT,
                                    verticalOrientation: _contants.TOP
                                }
                            }
                        }
                    }
                }
            },
        4702:
            /*!***********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/viz/core/themes/generic/light/index.js ***!
              \***********************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _bar_gauge = _interopRequireDefault(__webpack_require__( /*! ./bar_gauge */ 39599));
                var _bullet = _interopRequireDefault(__webpack_require__( /*! ./bullet */ 5828));
                var _chart = _interopRequireDefault(__webpack_require__( /*! ./chart */ 67322));
                var _contants = __webpack_require__( /*! ./contants */ 12462);
                var _funnel = _interopRequireDefault(__webpack_require__( /*! ./funnel */ 60980));
                var _gauge = _interopRequireDefault(__webpack_require__( /*! ./gauge */ 77393));
                var _pie_chart = _interopRequireDefault(__webpack_require__( /*! ./pie_chart */ 82611));
                var _polar_chart = _interopRequireDefault(__webpack_require__( /*! ./polar_chart */ 53949));
                var _range_selector = _interopRequireDefault(__webpack_require__( /*! ./range_selector */ 11055));
                var _sankey = _interopRequireDefault(__webpack_require__( /*! ./sankey */ 4517));
                var _sparkline = _interopRequireDefault(__webpack_require__( /*! ./sparkline */ 72513));
                var _tree_map = _interopRequireDefault(__webpack_require__( /*! ./tree_map */ 47661));
                var _vector_map = _interopRequireDefault(__webpack_require__( /*! ./vector_map */ 44062));

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }

                function _extends() {
                    return _extends = Object.assign ? Object.assign.bind() : function(n) {
                        for (var e = 1; e < arguments.length; e++) {
                            var t = arguments[e];
                            for (var r in t) {
                                ({}).hasOwnProperty.call(t, r) && (n[r] = t[r])
                            }
                        }
                        return n
                    }, _extends.apply(null, arguments)
                }
                exports.default = [{
                    baseThemeName: void 0,
                    theme: _extends({
                        name: "generic.light",
                        isDefault: true,
                        font: {
                            color: _contants.SECONDARY_TITLE_COLOR,
                            family: "'Segoe UI', 'Helvetica Neue', 'Trebuchet MS', Verdana, sans-serif",
                            weight: 400,
                            size: 12,
                            cursor: "default"
                        },
                        redrawOnResize: true,
                        backgroundColor: _contants.WHITE,
                        primaryTitleColor: _contants.PRIMARY_TITLE_COLOR,
                        secondaryTitleColor: _contants.SECONDARY_TITLE_COLOR,
                        gridColor: _contants.LIGHT_GREY,
                        axisColor: _contants.SECONDARY_TITLE_COLOR,
                        title: {
                            backgroundColor: _contants.WHITE,
                            font: {
                                size: 28,
                                family: "'Segoe UI Light', 'Helvetica Neue Light', 'Segoe UI', 'Helvetica Neue', 'Trebuchet MS', Verdana, sans-serif",
                                weight: 200
                            },
                            subtitle: {
                                font: {
                                    size: 16
                                },
                                offset: 0,
                                wordWrap: "normal",
                                textOverflow: "ellipsis"
                            },
                            wordWrap: "normal",
                            textOverflow: "ellipsis"
                        },
                        loadingIndicator: {
                            text: "Loading..."
                        },
                        export: {
                            backgroundColor: _contants.WHITE,
                            margin: 10,
                            font: {
                                size: 14,
                                color: _contants.PRIMARY_TITLE_COLOR,
                                weight: 400
                            },
                            button: {
                                margin: {
                                    top: 8,
                                    left: 10,
                                    right: 10,
                                    bottom: 8
                                },
                                default: {
                                    color: "#333",
                                    borderColor: "#ddd",
                                    backgroundColor: _contants.WHITE
                                },
                                hover: {
                                    color: "#333",
                                    borderColor: "#bebebe",
                                    backgroundColor: "#e6e6e6"
                                },
                                focus: {
                                    color: _contants.BLACK,
                                    borderColor: "#9d9d9d",
                                    backgroundColor: "#e6e6e6"
                                },
                                active: {
                                    color: "#333",
                                    borderColor: "#9d9d9d",
                                    backgroundColor: "#d4d4d4"
                                }
                            },
                            shadowColor: _contants.LIGHT_GREY
                        },
                        tooltip: {
                            enabled: false,
                            border: {
                                width: 1,
                                color: _contants.LIGHT_GREY,
                                dashStyle: _contants.SOLID,
                                visible: true
                            },
                            font: {
                                color: _contants.PRIMARY_TITLE_COLOR
                            },
                            color: _contants.WHITE,
                            arrowLength: 10,
                            paddingLeftRight: 18,
                            paddingTopBottom: 15,
                            textAlignment: "center",
                            shared: false,
                            location: _contants.CENTER,
                            shadow: {
                                opacity: .4,
                                offsetX: 0,
                                offsetY: 4,
                                blur: 2,
                                color: _contants.BLACK
                            },
                            interactive: false
                        },
                        legend: {
                            hoverMode: "includePoints",
                            verticalAlignment: _contants.TOP,
                            horizontalAlignment: _contants.RIGHT,
                            position: _contants.OUTSIDE,
                            visible: true,
                            margin: 10,
                            markerSize: 12,
                            border: {
                                visible: false,
                                width: 1,
                                cornerRadius: 0,
                                dashStyle: _contants.SOLID
                            },
                            paddingLeftRight: 20,
                            paddingTopBottom: 15,
                            columnCount: 0,
                            rowCount: 0,
                            columnItemSpacing: 20,
                            rowItemSpacing: 8,
                            title: {
                                backgroundColor: _contants.WHITE,
                                margin: {
                                    left: 0,
                                    bottom: 9,
                                    right: 0,
                                    top: 0
                                },
                                font: {
                                    size: 18,
                                    weight: 200
                                },
                                subtitle: {
                                    offset: 0,
                                    font: {
                                        size: 14
                                    },
                                    wordWrap: "none",
                                    textOverflow: "ellipsis"
                                },
                                wordWrap: "none",
                                textOverflow: "ellipsis"
                            }
                        }
                    }, _chart.default, _funnel.default, _gauge.default, _bar_gauge.default, _vector_map.default, _pie_chart.default, _polar_chart.default, _range_selector.default, _sankey.default, _sparkline.default, _bullet.default, _tree_map.default)
                }, {
                    baseThemeName: "generic.light",
                    theme: {
                        name: "generic.light.compact"
                    }
                }]
            },
        82611:
            /*!***************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/viz/core/themes/generic/light/pie_chart.js ***!
              \***************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _contants = __webpack_require__( /*! ./contants */ 12462);
                exports.default = {
                    pie: {
                        innerRadius: .5,
                        minDiameter: .5,
                        type: "pie",
                        dataPrepareSettings: {
                            _skipArgumentSorting: true
                        },
                        commonSeriesSettings: {
                            pie: {
                                border: {
                                    visible: false,
                                    width: 2,
                                    color: _contants.WHITE
                                },
                                hoverStyle: {
                                    hatching: {
                                        direction: _contants.RIGHT,
                                        width: 4,
                                        step: 10,
                                        opacity: .75
                                    },
                                    highlight: true,
                                    border: {
                                        visible: false,
                                        width: 2
                                    }
                                },
                                selectionStyle: {
                                    hatching: {
                                        direction: _contants.RIGHT,
                                        width: 4,
                                        step: 10,
                                        opacity: .5
                                    },
                                    highlight: true,
                                    border: {
                                        visible: false,
                                        width: 2
                                    }
                                }
                            },
                            doughnut: {
                                border: {
                                    visible: false,
                                    width: 2,
                                    color: _contants.WHITE
                                },
                                hoverStyle: {
                                    hatching: {
                                        direction: _contants.RIGHT,
                                        width: 4,
                                        step: 10,
                                        opacity: .75
                                    },
                                    highlight: true,
                                    border: {
                                        visible: false,
                                        width: 2
                                    }
                                },
                                selectionStyle: {
                                    hatching: {
                                        direction: _contants.RIGHT,
                                        width: 4,
                                        step: 10,
                                        opacity: .5
                                    },
                                    highlight: true,
                                    border: {
                                        visible: false,
                                        width: 2
                                    }
                                }
                            },
                            donut: {
                                border: {
                                    visible: false,
                                    width: 2,
                                    color: _contants.WHITE
                                },
                                hoverStyle: {
                                    hatching: {
                                        direction: _contants.RIGHT,
                                        width: 4,
                                        step: 10,
                                        opacity: .75
                                    },
                                    highlight: true,
                                    border: {
                                        visible: false,
                                        width: 2
                                    }
                                },
                                selectionStyle: {
                                    hatching: {
                                        direction: _contants.RIGHT,
                                        width: 4,
                                        step: 10,
                                        opacity: .5
                                    },
                                    highlight: true,
                                    border: {
                                        visible: false,
                                        width: 2
                                    }
                                }
                            },
                            label: {
                                textOverflow: "ellipsis",
                                wordWrap: "normal"
                            }
                        },
                        legend: {
                            hoverMode: "allArgumentPoints",
                            backgroundColor: _contants.NONE
                        },
                        adaptiveLayout: {
                            keepLabels: false
                        }
                    }
                }
            },
        53949:
            /*!*****************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/viz/core/themes/generic/light/polar_chart.js ***!
              \*****************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _contants = __webpack_require__( /*! ./contants */ 12462);
                exports.default = {
                    polar: {
                        commonSeriesSettings: {
                            type: "scatter",
                            closed: true,
                            point: {
                                visible: true,
                                symbol: "circle",
                                size: 12,
                                border: {
                                    visible: false,
                                    width: 1
                                },
                                hoverMode: "onlyPoint",
                                selectionMode: "onlyPoint",
                                hoverStyle: {
                                    border: {
                                        visible: true,
                                        width: 4
                                    },
                                    size: 12
                                },
                                selectionStyle: {
                                    border: {
                                        visible: true,
                                        width: 4
                                    },
                                    size: 12
                                }
                            },
                            scatter: {},
                            line: {
                                width: 2,
                                dashStyle: _contants.SOLID,
                                hoverStyle: {
                                    width: 3,
                                    hatching: {
                                        direction: _contants.NONE
                                    }
                                },
                                selectionStyle: {
                                    width: 3
                                }
                            },
                            area: {
                                point: {
                                    visible: false
                                },
                                opacity: .5
                            },
                            stackedline: {
                                width: 2
                            },
                            bar: {
                                opacity: .8
                            },
                            stackedbar: {
                                opacity: .8
                            }
                        },
                        adaptiveLayout: {
                            width: 80,
                            height: 80,
                            keepLabels: true
                        },
                        barGroupPadding: .3,
                        commonAxisSettings: {
                            visible: true,
                            forceUserTickInterval: false,
                            label: {
                                overlappingBehavior: "hide",
                                indentFromAxis: 5
                            },
                            grid: {
                                visible: true
                            },
                            minorGrid: {
                                visible: true
                            },
                            tick: {
                                visible: true
                            },
                            title: {
                                font: {
                                    size: 16
                                },
                                margin: 10
                            }
                        },
                        argumentAxis: {
                            startAngle: 0,
                            firstPointOnStartAngle: false,
                            period: void 0
                        },
                        valueAxis: {
                            endOnTick: false,
                            tick: {
                                visible: false
                            }
                        },
                        horizontalAxis: {
                            position: _contants.TOP,
                            axisDivisionFactor: 50,
                            label: {
                                alignment: _contants.CENTER
                            }
                        },
                        verticalAxis: {
                            position: _contants.TOP,
                            axisDivisionFactor: 30,
                            label: {
                                alignment: _contants.RIGHT
                            }
                        }
                    }
                }
            },
        11055:
            /*!********************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/viz/core/themes/generic/light/range_selector.js ***!
              \********************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _contants = __webpack_require__( /*! ./contants */ 12462);
                exports.default = {
                    rangeSelector: {
                        scale: {
                            valueMarginsEnabled: true,
                            width: 1,
                            color: _contants.BLACK,
                            opacity: .1,
                            showCustomBoundaryTicks: true,
                            label: {
                                overlappingBehavior: "hide",
                                alignment: _contants.CENTER,
                                visible: true,
                                topIndent: 7,
                                font: {
                                    size: 11
                                }
                            },
                            tick: {
                                width: 1,
                                color: _contants.BLACK,
                                opacity: .17,
                                visible: true,
                                length: 12
                            },
                            minorTick: {
                                width: 1,
                                color: _contants.BLACK,
                                opacity: .05,
                                visible: true,
                                length: 12
                            },
                            marker: {
                                width: 1,
                                color: "#000000",
                                opacity: .1,
                                visible: true,
                                separatorHeight: 33,
                                topIndent: 10,
                                textLeftIndent: 7,
                                textTopIndent: 11,
                                label: {}
                            },
                            logarithmBase: 10,
                            workWeek: [1, 2, 3, 4, 5],
                            breakStyle: {
                                width: 5,
                                color: "#ababab",
                                line: "waved"
                            },
                            endOnTick: false
                        },
                        selectedRangeColor: "#606060",
                        sliderMarker: {
                            visible: true,
                            paddingTopBottom: 2,
                            paddingLeftRight: 4,
                            color: "#606060",
                            invalidRangeColor: _contants.RED,
                            font: {
                                color: _contants.WHITE,
                                size: 11
                            }
                        },
                        sliderHandle: {
                            width: 1,
                            color: _contants.BLACK,
                            opacity: .2
                        },
                        shutter: {
                            opacity: .75
                        },
                        background: {
                            color: "#c0bae1",
                            visible: true,
                            image: {
                                location: "full"
                            }
                        },
                        behavior: {
                            snapToTicks: true,
                            animationEnabled: true,
                            moveSelectedRangeByClick: true,
                            manualRangeSelectionEnabled: true,
                            allowSlidersSwap: true,
                            valueChangeMode: "onHandleRelease"
                        },
                        redrawOnResize: true,
                        chart: {
                            barGroupPadding: .3,
                            minBubbleSize: 12,
                            maxBubbleSize: .2,
                            topIndent: .1,
                            bottomIndent: 0,
                            valueAxis: {
                                inverted: false,
                                logarithmBase: 10
                            },
                            commonSeriesSettings: {
                                type: "area",
                                aggregation: {
                                    enabled: void 0
                                },
                                point: {
                                    visible: false
                                },
                                scatter: {
                                    point: {
                                        visible: true
                                    }
                                }
                            }
                        }
                    }
                }
            },
        4517:
            /*!************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/viz/core/themes/generic/light/sankey.js ***!
              \************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _contants = __webpack_require__( /*! ./contants */ 12462);
                exports.default = {
                    sankey: {
                        sourceField: "source",
                        targetField: "target",
                        weightField: "weight",
                        hoverEnabled: true,
                        alignment: _contants.CENTER,
                        adaptiveLayout: {
                            width: 80,
                            height: 80,
                            keepLabels: true
                        },
                        label: {
                            visible: true,
                            horizontalOffset: 8,
                            verticalOffset: 0,
                            overlappingBehavior: "ellipsis",
                            useNodeColors: false,
                            font: {
                                color: _contants.BLACK,
                                weight: 500
                            },
                            border: {
                                visible: false,
                                width: 2,
                                color: _contants.WHITE
                            },
                            customizeText: info => info.label,
                            shadow: {
                                opacity: .2,
                                offsetX: 0,
                                offsetY: 1,
                                blur: 1,
                                color: _contants.WHITE
                            }
                        },
                        title: {
                            margin: 10,
                            font: {
                                size: 28,
                                weight: 200
                            },
                            subtitle: {
                                font: {
                                    size: 16
                                }
                            }
                        },
                        tooltip: {
                            enabled: true
                        },
                        node: {
                            padding: 30,
                            width: 8,
                            opacity: 1,
                            border: {
                                color: _contants.WHITE,
                                width: 1,
                                visible: false
                            },
                            hoverStyle: {
                                hatching: {
                                    opacity: .75,
                                    step: 6,
                                    width: 2,
                                    direction: _contants.RIGHT
                                },
                                border: {}
                            }
                        },
                        link: {
                            color: "#888888",
                            colorMode: "none",
                            opacity: .3,
                            border: {
                                color: _contants.WHITE,
                                width: 1,
                                visible: false
                            },
                            hoverStyle: {
                                opacity: .5,
                                hatching: {
                                    opacity: .75,
                                    step: 6,
                                    width: 2,
                                    direction: _contants.RIGHT
                                },
                                border: {}
                            }
                        }
                    }
                }
            },
        72513:
            /*!***************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/viz/core/themes/generic/light/sparkline.js ***!
              \***************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _contants = __webpack_require__( /*! ./contants */ 12462);
                exports.default = {
                    sparkline: {
                        lineColor: "#666666",
                        lineWidth: 2,
                        areaOpacity: .2,
                        minColor: "#e8c267",
                        maxColor: "#e55253",
                        barPositiveColor: "#a9a9a9",
                        barNegativeColor: "#d7d7d7",
                        winColor: "#a9a9a9",
                        lossColor: "#d7d7d7",
                        firstLastColor: "#666666",
                        pointSymbol: "circle",
                        pointColor: _contants.WHITE,
                        pointSize: 4,
                        type: "line",
                        argumentField: "arg",
                        valueField: "val",
                        winlossThreshold: 0,
                        showFirstLast: true,
                        showMinMax: false,
                        tooltip: {
                            enabled: true
                        }
                    }
                }
            },
        47661:
            /*!**************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/viz/core/themes/generic/light/tree_map.js ***!
              \**************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _contants = __webpack_require__( /*! ./contants */ 12462);
                exports.default = {
                    treeMap: {
                        tile: {
                            border: {
                                width: 1,
                                opacity: .2,
                                color: "#000000"
                            },
                            color: "#5f8b95",
                            hoverStyle: {
                                hatching: {
                                    opacity: .75,
                                    step: 6,
                                    width: 2,
                                    direction: "right"
                                },
                                border: {}
                            },
                            selectionStyle: {
                                hatching: {
                                    opacity: .5,
                                    step: 6,
                                    width: 2,
                                    direction: "right"
                                },
                                border: {
                                    opacity: 1
                                }
                            },
                            label: {
                                visible: true,
                                paddingLeftRight: 5,
                                paddingTopBottom: 4,
                                font: {
                                    color: "#ffffff",
                                    weight: 600
                                },
                                shadow: {
                                    opacity: .6,
                                    offsetX: 0,
                                    offsetY: 1,
                                    blur: 2,
                                    color: "#000000"
                                },
                                wordWrap: "normal",
                                textOverflow: "ellipsis"
                            }
                        },
                        group: {
                            padding: 4,
                            border: {
                                width: 1
                            },
                            color: "#eeeeee",
                            hoverStyle: {
                                hatching: {
                                    opacity: 0,
                                    step: 6,
                                    width: 2,
                                    direction: "right"
                                },
                                border: {}
                            },
                            selectionStyle: {
                                hatching: {
                                    opacity: 0,
                                    step: 6,
                                    width: 2,
                                    direction: "right"
                                },
                                border: {}
                            },
                            label: {
                                visible: true,
                                paddingLeftRight: 5,
                                paddingTopBottom: 4,
                                font: {
                                    color: _contants.SECONDARY_TITLE_COLOR,
                                    weight: 600
                                },
                                textOverflow: "ellipsis"
                            }
                        },
                        title: {
                            subtitle: {}
                        },
                        tooltip: {},
                        loadingIndicator: {}
                    }
                }
            },
        44062:
            /*!****************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/viz/core/themes/generic/light/vector_map.js ***!
              \****************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _contants = __webpack_require__( /*! ./contants */ 12462);
                exports.default = {
                    map: {
                        title: {
                            margin: 10
                        },
                        background: {
                            borderWidth: 1,
                            borderColor: "#cacaca"
                        },
                        layer: {
                            label: {
                                enabled: false,
                                stroke: _contants.WHITE,
                                "stroke-width": 1,
                                "stroke-opacity": .7,
                                font: {
                                    color: _contants.SOME_GREY,
                                    size: 12
                                }
                            }
                        },
                        "layer:area": {
                            borderWidth: 1,
                            borderColor: _contants.WHITE,
                            color: "#d2d2d2",
                            hoveredBorderColor: _contants.GREY_GREEN,
                            selectedBorderWidth: 2,
                            selectedBorderColor: _contants.GREY_GREEN,
                            label: {
                                "stroke-width": 2,
                                font: {
                                    size: 16
                                }
                            }
                        },
                        "layer:line": {
                            borderWidth: 2,
                            color: "#ba8365",
                            hoveredColor: "#a94813",
                            selectedBorderWidth: 3,
                            selectedColor: "#e55100",
                            label: {
                                "stroke-width": 2,
                                font: {
                                    size: 16
                                }
                            }
                        },
                        "layer:marker": {
                            label: {
                                enabled: true,
                                "stroke-width": 1,
                                font: {
                                    size: 12
                                }
                            }
                        },
                        "layer:marker:dot": {
                            borderWidth: 2,
                            borderColor: _contants.WHITE,
                            size: 8,
                            selectedStep: 2,
                            backStep: 18,
                            backColor: _contants.WHITE,
                            backOpacity: .32,
                            shadow: true
                        },
                        "layer:marker:bubble": {
                            minSize: 20,
                            maxSize: 50,
                            hoveredBorderWidth: 1,
                            hoveredBorderColor: _contants.GREY_GREEN,
                            selectedBorderWidth: 2,
                            selectedBorderColor: _contants.GREY_GREEN
                        },
                        "layer:marker:pie": {
                            size: 50,
                            hoveredBorderWidth: 1,
                            hoveredBorderColor: _contants.GREY_GREEN,
                            selectedBorderWidth: 2,
                            selectedBorderColor: _contants.GREY_GREEN
                        },
                        "layer:marker:image": {
                            size: 20
                        },
                        legend: {
                            verticalAlignment: _contants.BOTTOM,
                            horizontalAlignment: _contants.RIGHT,
                            position: _contants.INSIDE,
                            backgroundOpacity: .65,
                            border: {
                                visible: true
                            },
                            paddingLeftRight: 16,
                            paddingTopBottom: 12
                        },
                        controlBar: {
                            borderColor: "#5d5d5d",
                            borderWidth: 3,
                            color: _contants.WHITE,
                            margin: 20,
                            opacity: .3
                        },
                        _rtl: {
                            legend: {
                                itemTextPosition: _contants.LEFT
                            }
                        }
                    }
                }
            },
        56829:
            /*!********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/viz/core/themes/generic/softblue.js ***!
              \********************************************************************************************/
            function(__unused_webpack_module, exports) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                exports.default = [{
                    baseThemeName: "generic.light",
                    theme: {
                        name: "generic.softblue",
                        defaultPalette: "Soft Blue",
                        backgroundColor: "#fff",
                        primaryTitleColor: "#333",
                        secondaryTitleColor: "#99a1a8",
                        gridColor: "#e8eaeb",
                        axisColor: "#707070",
                        export: {
                            backgroundColor: "#fff",
                            font: {
                                color: "#333"
                            },
                            button: {
                                default: {
                                    color: "#333",
                                    borderColor: "#c9d0d4",
                                    backgroundColor: "#fff"
                                },
                                hover: {
                                    color: "#333",
                                    borderColor: "#a7b2b9",
                                    backgroundColor: "#e6e6e6"
                                },
                                focus: {
                                    color: "#333",
                                    borderColor: "#82929b",
                                    backgroundColor: "#e6e6e6"
                                },
                                active: {
                                    color: "#333",
                                    borderColor: "#82929b",
                                    backgroundColor: "#d4d4d4"
                                }
                            }
                        },
                        legend: {
                            font: {
                                color: "#707070"
                            }
                        },
                        tooltip: {
                            color: "#fff",
                            border: {
                                color: "#e8eaeb"
                            },
                            font: {
                                color: "#333"
                            }
                        },
                        "chart:common": {
                            commonSeriesSettings: {
                                label: {
                                    border: {
                                        color: "#e8eaeb"
                                    }
                                }
                            }
                        },
                        "chart:common:annotation": {
                            color: "#fff",
                            border: {
                                color: "#e8eaeb"
                            },
                            font: {
                                color: "#333"
                            }
                        },
                        chart: {
                            commonPaneSettings: {
                                border: {
                                    color: "#e8eaeb"
                                }
                            },
                            commonAxisSettings: {
                                breakStyle: {
                                    color: "#cfd2d3"
                                }
                            }
                        },
                        rangeSelector: {
                            scale: {
                                breakStyle: {
                                    color: "#cfd2d3"
                                },
                                tick: {
                                    opacity: .12
                                }
                            },
                            selectedRangeColor: "#7ab8eb",
                            sliderMarker: {
                                color: "#7ab8eb"
                            },
                            sliderHandle: {
                                color: "#7ab8eb",
                                opacity: .5
                            }
                        },
                        sparkline: {
                            pointColor: "#fff",
                            minColor: "#f0ad4e",
                            maxColor: "#d9534f"
                        },
                        treeMap: {
                            group: {
                                color: "#e8eaeb",
                                label: {
                                    font: {
                                        color: "#99a1a8"
                                    }
                                }
                            }
                        },
                        bullet: {
                            color: "#7ab8eb"
                        },
                        gauge: {
                            valueIndicators: {
                                rangebar: {
                                    color: "#7ab8eb"
                                },
                                textcloud: {
                                    color: "#7ab8eb"
                                }
                            }
                        }
                    }
                }, {
                    baseThemeName: "generic.softblue",
                    theme: {
                        name: "generic.softblue.compact"
                    }
                }]
            },
        55073:
            /*!******************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/viz/core/themes/material/index.js ***!
              \******************************************************************************************/
            function(__unused_webpack_module, exports) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                const FONT_FAMILY = "'Roboto', 'RobotoFallback', 'Helvetica', 'Arial', sans-serif";
                const WHITE = "#ffffff";
                const themes = [{
                    baseThemeName: "generic.light",
                    theme: {
                        name: "material",
                        defaultPalette: "Material",
                        font: {
                            family: FONT_FAMILY
                        },
                        title: {
                            margin: {
                                top: 20,
                                bottom: 20,
                                left: 0,
                                right: 0
                            },
                            font: {
                                size: 20,
                                family: FONT_FAMILY,
                                weight: 500
                            },
                            horizontalAlignment: "left",
                            subtitle: {
                                font: {
                                    size: 14
                                },
                                horizontalAlignment: "left"
                            }
                        },
                        tooltip: {
                            shadow: {
                                opacity: 0
                            },
                            border: {
                                visible: false
                            },
                            paddingLeftRight: 8,
                            paddingTopBottom: 6,
                            arrowLength: 0,
                            location: "edge",
                            color: "#616161",
                            font: {
                                color: WHITE
                            },
                            cornerRadius: 4
                        },
                        chart: {
                            commonAxisSettings: {
                                minorTick: {
                                    opacity: .5
                                },
                                label: {
                                    font: {
                                        size: 11
                                    }
                                }
                            },
                            commonAnnotationSettings: {
                                font: {
                                    color: WHITE
                                },
                                border: {
                                    color: "#616161"
                                },
                                color: "#616161",
                                arrowLength: 14,
                                arrowWidth: 0,
                                shadow: {
                                    opacity: .08,
                                    offsetY: 4,
                                    blur: 8
                                },
                                cornerRadius: 4
                            }
                        },
                        pie: {
                            title: {
                                horizontalAlignment: "center",
                                subtitle: {
                                    horizontalAlignment: "center"
                                }
                            }
                        },
                        polar: {
                            commonAxisSettings: {
                                minorTick: {
                                    opacity: .5
                                }
                            },
                            title: {
                                horizontalAlignment: "center",
                                subtitle: {
                                    horizontalAlignment: "center"
                                }
                            }
                        },
                        funnel: {
                            title: {
                                horizontalAlignment: "center",
                                subtitle: {
                                    horizontalAlignment: "center"
                                }
                            }
                        },
                        gauge: {
                            title: {
                                horizontalAlignment: "center",
                                subtitle: {
                                    horizontalAlignment: "center"
                                }
                            }
                        },
                        barGauge: {
                            title: {
                                horizontalAlignment: "center",
                                subtitle: {
                                    horizontalAlignment: "center"
                                }
                            }
                        },
                        rangeSelector: {
                            sliderHandle: {
                                opacity: .5
                            }
                        },
                        treeMap: {
                            group: {
                                label: {
                                    font: {
                                        weight: 500
                                    }
                                }
                            }
                        }
                    }
                }, {
                    baseThemeName: "material",
                    theme: {
                        name: "material.light",
                        gridColor: "#e0e0e0",
                        axisColor: "rgba(0,0,0,0.54)",
                        primaryTitleColor: "rgba(0,0,0,0.87)",
                        legend: {
                            font: {
                                color: "rgba(0,0,0,0.54)"
                            }
                        },
                        chart: {
                            scrollBar: {
                                color: "#bfbfbf",
                                opacity: .7
                            }
                        },
                        gauge: {
                            rangeContainer: {
                                backgroundColor: "rgba(0,0,0,0.2)"
                            }
                        },
                        barGauge: {
                            backgroundColor: "#efefef"
                        }
                    }
                }, {
                    baseThemeName: "material",
                    theme: {
                        name: "material.dark",
                        gridColor: "#515159",
                        backgroundColor: "#363640",
                        axisColor: "rgba(255,255,255,0.54)",
                        font: {
                            color: "rgba(255,255,255,0.54)"
                        },
                        primaryTitleColor: "rgba(255,255,255,0.87)",
                        secondaryTitleColor: "rgba(255,255,255,0.87)",
                        tooltip: {
                            color: "#000"
                        },
                        export: {
                            backgroundColor: "#363640",
                            font: {
                                color: "#dbdbdb"
                            },
                            button: {
                                default: {
                                    color: "#dedede",
                                    borderColor: "#4d4d4d",
                                    backgroundColor: "#363640"
                                },
                                hover: {
                                    color: "#dedede",
                                    borderColor: "#6c6c6c",
                                    backgroundColor: "#3f3f4b"
                                },
                                focus: {
                                    color: "#dedede",
                                    borderColor: "#8d8d8d",
                                    backgroundColor: "#494956"
                                },
                                active: {
                                    color: "#dedede",
                                    borderColor: "#8d8d8d",
                                    backgroundColor: "#494956"
                                }
                            },
                            shadowColor: "#292929"
                        },
                        "chart:common": {
                            commonSeriesSettings: {
                                label: {
                                    border: {
                                        color: "#494949"
                                    }
                                },
                                valueErrorBar: {
                                    color: WHITE
                                }
                            }
                        },
                        "chart:common:axis": {
                            constantLineStyle: {
                                color: WHITE
                            }
                        },
                        "chart:common:annotation": {
                            border: {
                                color: "#000"
                            },
                            color: "#000"
                        },
                        chart: {
                            commonPaneSettings: {
                                border: {
                                    color: "#494949"
                                }
                            },
                            commonAxisSettings: {
                                breakStyle: {
                                    color: "#818181"
                                }
                            },
                            zoomAndPan: {
                                dragBoxStyle: {
                                    color: WHITE
                                }
                            }
                        },
                        gauge: {
                            rangeContainer: {
                                backgroundColor: "#b5b5b5"
                            },
                            valueIndicators: {
                                _default: {
                                    color: "#b5b5b5"
                                },
                                rangebar: {
                                    color: "#84788b"
                                },
                                twocolorneedle: {
                                    secondColor: "#ba544d"
                                },
                                trianglemarker: {
                                    color: "#b7918f"
                                },
                                textcloud: {
                                    color: "#ba544d"
                                }
                            }
                        },
                        barGauge: {
                            backgroundColor: "#3c3c3c"
                        },
                        rangeSelector: {
                            scale: {
                                tick: {
                                    color: WHITE,
                                    opacity: .32
                                },
                                minorTick: {
                                    color: WHITE,
                                    opacity: .1
                                },
                                breakStyle: {
                                    color: "#818181"
                                }
                            },
                            selectedRangeColor: "#b5b5b5",
                            sliderMarker: {
                                color: "#b5b5b5",
                                font: {
                                    color: "#363640"
                                }
                            },
                            sliderHandle: {
                                color: WHITE,
                                opacity: .2
                            },
                            shutter: {
                                color: WHITE,
                                opacity: .1
                            }
                        },
                        map: {
                            background: {
                                borderColor: "#3f3f3f"
                            },
                            layer: {
                                label: {
                                    stroke: "#000000",
                                    font: {
                                        color: WHITE
                                    }
                                }
                            },
                            "layer:area": {
                                borderColor: "#363640",
                                color: "#686868",
                                hoveredBorderColor: WHITE,
                                selectedBorderColor: WHITE
                            },
                            "layer:line": {
                                color: "#c77244",
                                hoveredColor: "#ff5d04",
                                selectedColor: "#ff784f"
                            },
                            "layer:marker:bubble": {
                                hoveredBorderColor: WHITE,
                                selectedBorderColor: WHITE
                            },
                            "layer:marker:pie": {
                                hoveredBorderColor: WHITE,
                                selectedBorderColor: WHITE
                            },
                            legend: {
                                border: {
                                    color: "#3f3f3f"
                                },
                                font: {
                                    color: WHITE
                                }
                            },
                            controlBar: {
                                borderColor: "#c7c7c7",
                                color: "#363640"
                            }
                        },
                        treeMap: {
                            group: {
                                color: "#4c4c4c",
                                label: {
                                    font: {
                                        color: "#a3a3a3"
                                    }
                                }
                            }
                        },
                        sparkline: {
                            lineColor: "#c7c7c7",
                            firstLastColor: "#c7c7c7",
                            barPositiveColor: "#b8b8b8",
                            barNegativeColor: "#8e8e8e",
                            winColor: "#b8b8b8",
                            lossColor: "#8e8e8e",
                            pointColor: "#363640"
                        },
                        bullet: {
                            targetColor: "#8e8e8e"
                        },
                        funnel: {
                            item: {
                                border: {
                                    color: "#363640"
                                }
                            }
                        },
                        sankey: {
                            label: {
                                font: {
                                    color: WHITE
                                }
                            }
                        }
                    }
                }];

                function getMaterialColorScheme(accentName, themeName, accentColor) {
                    return {
                        theme: {
                            name: `material.${accentName}.${themeName}`,
                            rangeSelector: {
                                selectedRangeColor: accentColor,
                                sliderMarker: {
                                    color: accentColor
                                },
                                sliderHandle: {
                                    color: accentColor
                                }
                            },
                            map: {
                                "layer:marker:dot": {
                                    color: accentColor
                                },
                                "layer:marker:bubble": {
                                    color: accentColor
                                },
                                legend: {
                                    markerColor: accentColor
                                }
                            },
                            bullet: {
                                color: accentColor
                            },
                            gauge: {
                                valueIndicators: {
                                    rangebar: {
                                        color: accentColor
                                    },
                                    textcloud: {
                                        color: accentColor
                                    }
                                }
                            }
                        },
                        baseThemeName: `material.${themeName}`
                    }
                }
                const materialAccents = {
                    blue: "#03a9f4",
                    lime: "#cddc39",
                    orange: "#ff5722",
                    purple: "#9c27b0",
                    teal: "#009688"
                };
                Object.keys(materialAccents).forEach((accent => {
                    const color = materialAccents[accent];
                    themes.push(getMaterialColorScheme(accent, "light", color), getMaterialColorScheme(accent, "dark", color), {
                        theme: {
                            name: `material.${accent}.light.compact`
                        },
                        baseThemeName: `material.${accent}.light`
                    }, {
                        theme: {
                            name: `material.${accent}.dark.compact`
                        },
                        baseThemeName: `material.${accent}.dark`
                    })
                }));
                exports.default = themes
            },
        3830:
            /*!***********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/viz/m_chart.js ***!
              \***********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 92848));
                var _common = __webpack_require__( /*! ../../core/utils/common */ 17781);
                var _extend2 = __webpack_require__( /*! ../../core/utils/extend */ 52576);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 21274);
                var _math = __webpack_require__( /*! ../../core/utils/math */ 50254);
                var _size = __webpack_require__( /*! ../../core/utils/size */ 57653);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 11528);
                var _window = __webpack_require__( /*! ../../core/utils/window */ 3104);
                var _crosshair = __webpack_require__( /*! ../../viz/chart_components/crosshair */ 63512);
                var _layout_manager = __webpack_require__( /*! ../../viz/chart_components/layout_manager */ 14580);
                var _multi_axes_synchronizer = _interopRequireDefault(__webpack_require__( /*! ../../viz/chart_components/multi_axes_synchronizer */ 57568));
                var _scroll_bar = __webpack_require__( /*! ../../viz/chart_components/scroll_bar */ 68817);
                var _shutter_zoom = _interopRequireDefault(__webpack_require__( /*! ../../viz/chart_components/shutter_zoom */ 3023));
                var _zoom_and_pan = _interopRequireDefault(__webpack_require__( /*! ../../viz/chart_components/zoom_and_pan */ 37195));
                var _annotations = __webpack_require__( /*! ../../viz/core/annotations */ 97808);
                var _utils = __webpack_require__( /*! ../../viz/core/utils */ 28779);
                var _range_data_calculator = _interopRequireDefault(__webpack_require__( /*! ../../viz/series/helpers/range_data_calculator */ 34685));
                var _range = __webpack_require__( /*! ../../viz/translators/range */ 99857);
                var _utils2 = __webpack_require__( /*! ../../viz/utils */ 2225);
                var _m_advanced_chart = __webpack_require__( /*! ./chart_components/m_advanced_chart */ 78609);
                var _m_base_chart = __webpack_require__( /*! ./chart_components/m_base_chart */ 9410);

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const DEFAULT_PANES = [{
                    name: "default",
                    border: {}
                }];
                const {
                    isArray: isArray
                } = Array;

                function changeVisibilityAxisGrids(axis, gridVisibility, minorGridVisibility) {
                    const gridOpt = axis.getOptions().grid;
                    const minorGridOpt = axis.getOptions().minorGrid;
                    gridOpt.visible = gridVisibility;
                    minorGridOpt && (minorGridOpt.visible = minorGridVisibility)
                }

                function findAxis(paneName, axisName, axes) {
                    const axisByName = axes.find((axis => axis.name === axisName && axis.pane === paneName));
                    if (axisByName) {
                        return axisByName
                    }
                    if (paneName) {
                        return findAxis(void 0, axisName, axes)
                    }
                }

                function compareAxes(a, b) {
                    return a.priority - b.priority
                }

                function doesPaneExist(panes, paneName) {
                    let found = false;
                    (0, _iterator.each)(panes, ((_, pane) => {
                        if (pane.name === paneName) {
                            found = true;
                            return false
                        }
                        return
                    }));
                    return found
                }

                function accumulate(field, src1, src2, auxSpacing) {
                    const val1 = src1[field] || 0;
                    const val2 = src2[field] || 0;
                    return val1 + val2 + (val1 && val2 ? auxSpacing : 0)
                }

                function pickMax(field, src1, src2) {
                    return pickMaxValue(src1[field], src2[field])
                }

                function pickMaxValue(val1, val2) {
                    return Math.max(val1 || 0, val2 || 0)
                }

                function getAxisMargins(axis) {
                    return axis.getMargins()
                }

                function getHorizontalAxesMargins(axes, getMarginsFunc) {
                    return axes.reduce(((margins, axis) => {
                        var _axis$getOrthogonalAx;
                        const axisMargins = getMarginsFunc(axis);
                        const paneMargins = margins.panes[axis.pane] = margins.panes[axis.pane] || {};
                        const spacing = axis.getMultipleAxesSpacing();
                        paneMargins.top = accumulate("top", paneMargins, axisMargins, spacing);
                        paneMargins.bottom = accumulate("bottom", paneMargins, axisMargins, spacing);
                        paneMargins.left = pickMax("left", paneMargins, axisMargins);
                        paneMargins.right = pickMax("right", paneMargins, axisMargins);
                        margins.top = pickMax("top", paneMargins, margins);
                        margins.bottom = pickMax("bottom", paneMargins, margins);
                        margins.left = pickMax("left", paneMargins, margins);
                        margins.right = pickMax("right", paneMargins, margins);
                        const orthogonalAxis = null === (_axis$getOrthogonalAx = axis.getOrthogonalAxis) || void 0 === _axis$getOrthogonalAx ? void 0 : _axis$getOrthogonalAx.call(axis);
                        const shouldResetPositionMargin = (null === orthogonalAxis || void 0 === orthogonalAxis ? void 0 : orthogonalAxis.customPositionIsAvailable()) && (!axis.customPositionIsBoundaryOrthogonalAxis() || !orthogonalAxis.customPositionEqualsToPredefined());
                        if (shouldResetPositionMargin) {
                            margins[orthogonalAxis.getResolvedBoundaryPosition()] = 0
                        }
                        return margins
                    }), {
                        panes: {}
                    })
                }

                function getVerticalAxesMargins(axes) {
                    return axes.reduce(((margins, axis) => {
                        const axisMargins = axis.getMargins();
                        const paneMargins = margins.panes[axis.pane] = margins.panes[axis.pane] || {};
                        const spacing = axis.getMultipleAxesSpacing();
                        paneMargins.top = pickMax("top", paneMargins, axisMargins);
                        paneMargins.bottom = pickMax("bottom", paneMargins, axisMargins);
                        paneMargins.left = accumulate("left", paneMargins, axisMargins, spacing);
                        paneMargins.right = accumulate("right", paneMargins, axisMargins, spacing);
                        margins.top = pickMax("top", paneMargins, margins);
                        margins.bottom = pickMax("bottom", paneMargins, margins);
                        margins.left = pickMax("left", paneMargins, margins);
                        margins.right = pickMax("right", paneMargins, margins);
                        return margins
                    }), {
                        panes: {}
                    })
                }

                function performActionOnAxes(axes, action, actionArgument1, actionArgument2, actionArgument3) {
                    axes.forEach((axis => {
                        axis[action](null === actionArgument1 || void 0 === actionArgument1 ? void 0 : actionArgument1[axis.pane], (null === actionArgument2 || void 0 === actionArgument2 ? void 0 : actionArgument2[axis.pane]) || actionArgument2, actionArgument3)
                    }))
                }

                function shrinkCanvases(isRotated, canvases, sizes, verticalMargins, horizontalMargins) {
                    function getMargin(side, margins, pane) {
                        const m = !(isRotated ? ["left", "right"] : ["top", "bottom"]).includes(side) ? margins : margins.panes[pane] || {};
                        return m[side]
                    }

                    function getMaxMargin(side, margins1, margins2, pane) {
                        return pickMaxValue(getMargin(side, margins1, pane), getMargin(side, margins2, pane))
                    }
                    const getOriginalField = field => `original${field[0].toUpperCase()}${field.slice(1)}`;

                    function shrink(canvases, paneNames, sizeField, startMargin, endMargin, oppositeMargins) {
                        paneNames = paneNames.sort(((p1, p2) => canvases[p2][startMargin] - canvases[p1][startMargin]));
                        paneNames.forEach((pane => {
                            const canvas = canvases[pane];
                            oppositeMargins.forEach((margin => {
                                canvas[margin] = canvas[getOriginalField(margin)] + getMaxMargin(margin, verticalMargins, horizontalMargins, pane)
                            }))
                        }));
                        const firstPane = canvases[paneNames[0]];
                        const initialEmptySpace = firstPane[sizeField] - firstPane[getOriginalField(endMargin)] - canvases[paneNames.at(-1)][getOriginalField(startMargin)];
                        let emptySpace = paneNames.reduce(((space, paneName) => {
                            const maxStartMargin = getMaxMargin(startMargin, verticalMargins, horizontalMargins, paneName);
                            const maxEndMargin = getMaxMargin(endMargin, verticalMargins, horizontalMargins, paneName);
                            return space - maxStartMargin - maxEndMargin
                        }), initialEmptySpace) - _utils.PANE_PADDING * (paneNames.length - 1);
                        emptySpace -= Object.keys(sizes).reduce(((prev, key) => {
                            const currentHeight = !(0, _utils.isRelativeHeightPane)(sizes[key]) ? sizes[key].height : 0;
                            return prev + currentHeight
                        }), 0);
                        const initialOffset = firstPane[sizeField] - firstPane[getOriginalField(endMargin)] - (emptySpace < 0 ? emptySpace : 0);
                        paneNames.reduce(((offset, pane) => {
                            const canvas = canvases[pane];
                            const paneSize = sizes[pane];
                            offset -= getMaxMargin(endMargin, verticalMargins, horizontalMargins, pane);
                            canvas[endMargin] = firstPane[sizeField] - offset;
                            offset -= !(0, _utils.isRelativeHeightPane)(paneSize) ? paneSize.height : Math.floor(emptySpace * paneSize.height);
                            canvas[startMargin] = offset;
                            offset -= getMaxMargin(startMargin, verticalMargins, horizontalMargins, pane) + _utils.PANE_PADDING;
                            return offset
                        }), initialOffset)
                    }
                    const paneNames = Object.keys(canvases);
                    if (!isRotated) {
                        shrink(canvases, paneNames, "height", "top", "bottom", ["left", "right"])
                    } else {
                        shrink(canvases, paneNames, "width", "left", "right", ["top", "bottom"])
                    }
                    return canvases
                }

                function drawAxesWithTicks(axes, condition, canvases, panesBorderOptions) {
                    if (condition) {
                        performActionOnAxes(axes, "createTicks", canvases);
                        _multi_axes_synchronizer.default.synchronize(axes)
                    }
                    performActionOnAxes(axes, "draw", !condition && canvases, panesBorderOptions)
                }

                function shiftAxis(side1, side2) {
                    const shifts = {};
                    return function(axis) {
                        if (!axis.customPositionIsAvailable() || axis.customPositionEqualsToPredefined()) {
                            const shift = shifts[axis.pane] = shifts[axis.pane] || {
                                top: 0,
                                left: 0,
                                bottom: 0,
                                right: 0
                            };
                            const spacing = axis.getMultipleAxesSpacing();
                            const margins = axis.getMargins();
                            axis.shift(shift);
                            shift[side1] = accumulate(side1, shift, margins, spacing);
                            shift[side2] = accumulate(side2, shift, margins, spacing)
                        } else {
                            axis.shift({
                                top: 0,
                                left: 0,
                                bottom: 0,
                                right: 0
                            })
                        }
                    }
                }

                function getCommonSize(side, margins) {
                    let size = 0;
                    let paneMargins;
                    Object.keys(margins.panes).forEach((pane => {
                        paneMargins = margins.panes[pane];
                        size += "height" === side ? paneMargins.top + paneMargins.bottom : paneMargins.left + paneMargins.right
                    }));
                    return size
                }

                function checkUsedSpace(sizeShortage, side, axes, getMarginFunc) {
                    let size = 0;
                    if (sizeShortage[side] > 0) {
                        size = getCommonSize(side, getMarginFunc(axes, getAxisMargins));
                        performActionOnAxes(axes, "hideTitle");
                        sizeShortage[side] -= size - getCommonSize(side, getMarginFunc(axes, getAxisMargins))
                    }
                    if (sizeShortage[side] > 0) {
                        performActionOnAxes(axes, "hideOuterElements")
                    }
                }
                const isOverlay = (currentPoint, overlayPoint, pointRadius) => {
                    const pointHitsLeftBorder = overlayPoint.x - pointRadius <= currentPoint.x;
                    const pointHitsRightBorder = overlayPoint.x + pointRadius >= currentPoint.x;
                    const pointHitsTopBorder = overlayPoint.y - pointRadius <= currentPoint.y;
                    const pointHitsBottomBorder = overlayPoint.y + pointRadius >= currentPoint.y;
                    const isPointOverlappedHorizontally = pointHitsLeftBorder && pointHitsRightBorder;
                    const isPointOverlappedVertically = pointHitsTopBorder && pointHitsBottomBorder;
                    return isPointOverlappedHorizontally && isPointOverlappedVertically
                };
                const isPointOverlapped = (currentPoint, points, skipSamePointsComparing) => {
                    const radiusPoint = currentPoint.getOptions().size / 2;
                    for (let i = 0; i < points.length; i += 1) {
                        if (!skipSamePointsComparing) {
                            const isXCoordinateSame = points[i].x === currentPoint.x;
                            const isYCoordinateSame = points[i].y === currentPoint.y;
                            if (isXCoordinateSame && isYCoordinateSame) {
                                continue
                            }
                        }
                        if (isOverlay(currentPoint, points[i], radiusPoint)) {
                            return true
                        }
                    }
                    return false
                };
                const dxChart = _m_advanced_chart.AdvancedChart.inherit({
                    _themeSection: "chart",
                    _fontFields: ["crosshair.label.font"],
                    _initCore() {
                        this.paneAxis = {};
                        this.callBase()
                    },
                    _init() {
                        this._containerInitialHeight = (0, _window.hasWindow)() ? (0, _size.getHeight)(this._$element) : 0;
                        this.callBase()
                    },
                    _correctAxes() {
                        this._correctValueAxes(true)
                    },
                    _getExtraOptions: _common.noop,
                    _createPanes() {
                        let panes = this.option("panes");
                        let panesNameCounter = 0;
                        let defaultPane;
                        if (!panes || isArray(panes) && !panes.length) {
                            panes = DEFAULT_PANES
                        }
                        this.callBase();
                        defaultPane = this.option("defaultPane");
                        panes = (0, _extend2.extend)(true, [], isArray(panes) ? panes : [panes]);
                        (0, _iterator.each)(panes, ((_, pane) => {
                            pane.name = !(0, _type.isDefined)(pane.name) ? "default" + panesNameCounter++ : pane.name
                        }));
                        if ((0, _type.isDefined)(defaultPane)) {
                            if (!doesPaneExist(panes, defaultPane)) {
                                this._incidentOccurred("W2101", [defaultPane]);
                                defaultPane = panes[panes.length - 1].name
                            }
                        } else {
                            defaultPane = panes[panes.length - 1].name
                        }
                        this.defaultPane = defaultPane;
                        panes = this._isRotated() ? panes.reverse() : panes;
                        return panes
                    },
                    _getAxisRenderingOptions: () => ({
                        axisType: "xyAxes",
                        drawingType: "linear"
                    }),
                    _prepareAxisOptions(typeSelector, userOptions, rotated) {
                        return {
                            isHorizontal: "argumentAxis" === typeSelector !== rotated,
                            containerColor: this._themeManager.getOptions("containerBackgroundColor")
                        }
                    },
                    _checkPaneName(seriesTheme) {
                        const paneList = (0, _utils.map)(this.panes, (pane => pane.name));
                        seriesTheme.pane = seriesTheme.pane || this.defaultPane;
                        return paneList.includes(seriesTheme.pane)
                    },
                    _initCustomPositioningAxes() {
                        const argumentAxis = this.getArgumentAxis();
                        const valueAxisName = argumentAxis.getOptions().customPositionAxis;
                        const valueAxis = this._valueAxes.find((v => v.pane === argumentAxis.pane && (!valueAxisName || valueAxisName === v.name)));
                        this._valueAxes.forEach((v => {
                            if (argumentAxis !== v.getOrthogonalAxis()) {
                                v.getOrthogonalAxis = () => argumentAxis;
                                v.customPositionIsBoundaryOrthogonalAxis = () => argumentAxis.customPositionIsBoundary()
                            }
                        }));
                        if ((0, _type.isDefined)(valueAxis) && valueAxis !== argumentAxis.getOrthogonalAxis()) {
                            argumentAxis.getOrthogonalAxis = () => valueAxis;
                            argumentAxis.customPositionIsBoundaryOrthogonalAxis = () => this._valueAxes.some((v => v.customPositionIsBoundary()))
                        } else if ((0, _type.isDefined)(argumentAxis.getOrthogonalAxis()) && !(0, _type.isDefined)(valueAxis)) {
                            argumentAxis.getOrthogonalAxis = _common.noop
                        }
                    },
                    _getAllAxes() {
                        return this._argumentAxes.concat(this._valueAxes)
                    },
                    _resetAxesAnimation(isFirstDrawing, isHorizontal) {
                        let axes;
                        if ((0, _type.isDefined)(isHorizontal)) {
                            axes = isHorizontal ^ this._isRotated() ? this._argumentAxes : this._valueAxes
                        } else {
                            axes = this._getAllAxes()
                        }
                        axes.forEach((a => {
                            a.resetApplyingAnimation(isFirstDrawing)
                        }))
                    },
                    _axesBoundaryPositioning() {
                        const allAxes = this._getAllAxes();
                        let boundaryStateChanged = false;
                        allAxes.forEach((a => {
                            if (!a.customPositionIsAvailable()) {
                                return
                            }
                            const prevBoundaryState = a.customPositionIsBoundary();
                            a._customBoundaryPosition = a.getCustomBoundaryPosition();
                            boundaryStateChanged = boundaryStateChanged || prevBoundaryState !== a.customPositionIsBoundary()
                        }));
                        return boundaryStateChanged
                    },
                    _getCrosshairMargins() {
                        const crosshairOptions = this._getCrosshairOptions() || {};
                        const crosshairEnabled = crosshairOptions.enabled;
                        const margins = (0, _crosshair.getMargins)();
                        const horizontalLabel = (0, _extend2.extend)(true, {}, crosshairOptions.label, crosshairOptions.horizontalLine.label);
                        const verticalLabel = (0, _extend2.extend)(true, {}, crosshairOptions.label, crosshairOptions.verticalLine.label);
                        return {
                            x: crosshairEnabled && crosshairOptions.horizontalLine.visible && horizontalLabel.visible ? margins.x : 0,
                            y: crosshairEnabled && crosshairOptions.verticalLine.visible && verticalLabel.visible ? margins.y : 0
                        }
                    },
                    _getValueAxis(paneName, axisName) {
                        const valueAxes = this._valueAxes;
                        const valueAxisOptions = this.option("valueAxis") || {};
                        const valueAxesOptions = isArray(valueAxisOptions) ? valueAxisOptions : [valueAxisOptions];
                        const rotated = this._isRotated();
                        const crosshairMargins = this._getCrosshairMargins();
                        let axisOptions;
                        let axis;
                        axisName = axisName || function(axes, paneName, defaultPane) {
                            let result;
                            for (let i = 0; i < axes.length; i += 1) {
                                if (axes[i].pane === paneName || void 0 === axes[i].pane && paneName === defaultPane) {
                                    result = axes[i].name;
                                    break
                                }
                            }
                            if (!result) {
                                result = axes[0].name
                            }
                            return result
                        }(valueAxes, paneName, this.defaultPane);
                        axis = findAxis(paneName, axisName, valueAxes);
                        if (!axis) {
                            axisOptions = function(valueAxes, valueAxesOptions, axisName) {
                                let result;
                                let axInd;
                                for (axInd = 0; axInd < valueAxesOptions.length; axInd += 1) {
                                    if (valueAxesOptions[axInd].name === axisName) {
                                        result = valueAxesOptions[axInd];
                                        result.priority = axInd;
                                        break
                                    }
                                }
                                if (!result) {
                                    for (axInd = 0; axInd < valueAxes.length; axInd += 1) {
                                        if (valueAxes[axInd].name === axisName) {
                                            result = valueAxes[axInd].getOptions();
                                            result.priority = valueAxes[axInd].priority;
                                            break
                                        }
                                    }
                                }
                                return result
                            }(valueAxes, valueAxesOptions, axisName);
                            if (!axisOptions) {
                                this._incidentOccurred("W2102", [axisName]);
                                axisOptions = {
                                    name: axisName,
                                    priority: valueAxes.length
                                }
                            }
                            axis = this._createAxis(false, this._populateAxesOptions("valueAxis", axisOptions, {
                                pane: paneName,
                                name: axisName,
                                optionPath: isArray(valueAxisOptions) ? `valueAxis[${axisOptions.priority}]` : "valueAxis",
                                crosshairMargin: rotated ? crosshairMargins.y : crosshairMargins.x
                            }, rotated));
                            axis.applyVisualRangeSetter(this._getVisualRangeSetter());
                            valueAxes.push(axis)
                        }
                        axis.setPane(paneName);
                        return axis
                    },
                    _correctValueAxes(needHideGrids) {
                        const synchronizeMultiAxes = this._themeManager.getOptions("synchronizeMultiAxes");
                        const valueAxes = this._valueAxes;
                        const paneWithAxis = {};
                        this.series.forEach((series => {
                            const axis = series.getValueAxis();
                            paneWithAxis[axis.pane] = true
                        }));
                        this.panes.forEach((pane => {
                            const paneName = pane.name;
                            if (!paneWithAxis[paneName]) {
                                this._getValueAxis(paneName)
                            }
                            if (needHideGrids && synchronizeMultiAxes) {
                                ! function(axesForPane) {
                                    let axisShown = false;
                                    const hiddenStubAxis = [];
                                    const minorGridVisibility = axesForPane.some((axis => {
                                        const minorGridOptions = axis.getOptions().minorGrid;
                                        return null === minorGridOptions || void 0 === minorGridOptions ? void 0 : minorGridOptions.visible
                                    }));
                                    const gridVisibility = axesForPane.some((axis => {
                                        const gridOptions = axis.getOptions().grid;
                                        return null === gridOptions || void 0 === gridOptions ? void 0 : gridOptions.visible
                                    }));
                                    if (axesForPane.length > 1) {
                                        axesForPane.forEach((axis => {
                                            const gridOpt = axis.getOptions().grid;
                                            if (axisShown) {
                                                changeVisibilityAxisGrids(axis, false, false)
                                            } else if (null !== gridOpt && void 0 !== gridOpt && gridOpt.visible) {
                                                if (axis.getTranslator().getBusinessRange().isEmpty()) {
                                                    changeVisibilityAxisGrids(axis, false, false);
                                                    hiddenStubAxis.push(axis)
                                                } else {
                                                    axisShown = true;
                                                    changeVisibilityAxisGrids(axis, gridVisibility, minorGridVisibility)
                                                }
                                            }
                                        }));
                                        if (!axisShown && hiddenStubAxis.length) {
                                            changeVisibilityAxisGrids(hiddenStubAxis[0], gridVisibility, minorGridVisibility)
                                        }
                                    }
                                }(valueAxes.filter((axis => axis.pane === paneName)))
                            }
                        }));
                        this._valueAxes = valueAxes.filter((axis => {
                            if (!axis.pane) {
                                axis.setPane(this.defaultPane)
                            }
                            const paneExists = doesPaneExist(this.panes, axis.pane);
                            if (!paneExists) {
                                axis.dispose();
                                axis = null
                            }
                            return paneExists
                        })).sort(compareAxes);
                        const defaultAxis = this.getValueAxis();
                        this._valueAxes.forEach((axis => {
                            const {
                                optionPath: optionPath
                            } = axis.getOptions();
                            if (optionPath) {
                                const axesWithSamePath = this._valueAxes.filter((a => a.getOptions().optionPath === optionPath));
                                if (axesWithSamePath.length > 1) {
                                    if (axesWithSamePath.some((a => a === defaultAxis))) {
                                        axesWithSamePath.forEach((a => {
                                            if (a !== defaultAxis) {
                                                a.getOptions().optionPath = null
                                            }
                                        }))
                                    } else {
                                        axesWithSamePath.forEach(((a, i) => {
                                            if (0 !== i) {
                                                a.getOptions().optionPath = null
                                            }
                                        }))
                                    }
                                }
                            }
                        }))
                    },
                    _getSeriesForPane(paneName) {
                        const paneSeries = [];
                        (0, _iterator.each)(this.series, ((_, oneSeries) => {
                            if (oneSeries.pane === paneName) {
                                paneSeries.push(oneSeries)
                            }
                        }));
                        return paneSeries
                    },
                    _createPanesBorderOptions() {
                        const commonBorderOptions = this._themeManager.getOptions("commonPaneSettings").border;
                        const panesBorderOptions = {};
                        this.panes.forEach((pane => {
                            panesBorderOptions[pane.name] = (0, _extend2.extend)(true, {}, commonBorderOptions, pane.border)
                        }));
                        return panesBorderOptions
                    },
                    _createScrollBar() {
                        const scrollBarOptions = this._themeManager.getOptions("scrollBar") || {};
                        const scrollBarGroup = this._scrollBarGroup;
                        if (scrollBarOptions.visible) {
                            scrollBarOptions.rotated = this._isRotated();
                            this._scrollBar = (this._scrollBar || new _scroll_bar.ScrollBar(this._renderer, scrollBarGroup)).update(scrollBarOptions)
                        } else {
                            var _this$_scrollBar;
                            scrollBarGroup.linkRemove();
                            null === (_this$_scrollBar = this._scrollBar) || void 0 === _this$_scrollBar || _this$_scrollBar.dispose();
                            this._scrollBar = null
                        }
                    },
                    _executeAppendAfterSeries(append) {
                        append()
                    },
                    _prepareToRender() {
                        const panesBorderOptions = this._createPanesBorderOptions();
                        this._createPanesBackground();
                        this._appendAxesGroups();
                        this._adjustViewport();
                        return panesBorderOptions
                    },
                    _adjustViewport() {
                        const adjustOnZoom = this._themeManager.getOptions("adjustOnZoom");
                        if (!adjustOnZoom) {
                            return
                        }
                        this._valueAxes.forEach((axis => axis.adjust()))
                    },
                    _recreateSizeDependentObjects(isCanvasChanged) {
                        const series = this._getVisibleSeries();
                        const useAggregation = series.some((s => s.useAggregation()));
                        const zoomChanged = this._isZooming();
                        if (!useAggregation) {
                            return
                        }
                        this._argumentAxes.forEach((axis => {
                            axis.updateCanvas(this._canvas, true)
                        }));
                        series.forEach((series => {
                            if (series.useAggregation() && (isCanvasChanged || zoomChanged || !series._useAllAggregatedPoints)) {
                                series.createPoints()
                            }
                        }));
                        this._processSeriesFamilies()
                    },
                    _isZooming() {
                        const argumentAxis = this.getArgumentAxis();
                        if (!(null !== argumentAxis && void 0 !== argumentAxis && argumentAxis.getTranslator())) {
                            return false
                        }
                        const businessRange = argumentAxis.getTranslator().getBusinessRange();
                        const zoomRange = argumentAxis.getViewport();
                        let min = zoomRange ? zoomRange.min : 0;
                        let max = zoomRange ? zoomRange.max : 0;
                        if ("logarithmic" === businessRange.axisType) {
                            min = (0, _utils.getLog)(min, businessRange.base);
                            max = (0, _utils.getLog)(max, businessRange.base)
                        }
                        const viewportDistance = "discrete" === businessRange.axisType ? (0, _utils.getCategoriesInfo)(businessRange.categories, min, max).categories.length : Math.abs(max - min);
                        let precision = (0, _math.getPrecision)(viewportDistance);
                        precision = precision > 1 ? 10 ** (precision - 2) : 1;
                        const zoomChanged = Math.round((this._zoomLength - viewportDistance) * precision) / precision !== 0;
                        this._zoomLength = viewportDistance;
                        return zoomChanged
                    },
                    _handleSeriesDataUpdated() {
                        const viewport = new _range.Range;
                        this.series.forEach((s => {
                            viewport.addRange(s.getArgumentRange())
                        }));
                        this._argumentAxes.forEach((axis => {
                            axis.updateCanvas(this._canvas, true);
                            axis.setBusinessRange(viewport, this._axesReinitialized)
                        }));
                        this.callBase()
                    },
                    _isLegendInside() {
                        return this._legend && "inside" === this._legend.getPosition()
                    },
                    _isRotated() {
                        return this._themeManager.getOptions("rotated")
                    },
                    _getLayoutTargets() {
                        return this.panes
                    },
                    _applyClipRects(panesBorderOptions) {
                        this._drawPanesBorders(panesBorderOptions);
                        this._createClipRectsForPanes();
                        this._applyClipRectsForAxes();
                        this._fillPanesBackground()
                    },
                    _updateLegendPosition(drawOptions, legendHasInsidePosition) {
                        if (drawOptions.drawLegend && this._legend && legendHasInsidePosition) {
                            const {
                                panes: panes
                            } = this;
                            const newCanvas = (0, _extend2.extend)({}, panes[0].canvas);
                            const layoutManager = new _layout_manager.LayoutManager;
                            newCanvas.right = panes[panes.length - 1].canvas.right;
                            newCanvas.bottom = panes[panes.length - 1].canvas.bottom;
                            layoutManager.layoutInsideLegend(this._legend, newCanvas)
                        }
                    },
                    _allowLegendInsidePosition: () => true,
                    _applyExtraSettings(series) {
                        const paneIndex = this._getPaneIndex(series.pane);
                        const panesClipRects = this._panesClipRects;
                        const wideClipRect = panesClipRects.wide[paneIndex];
                        series.setClippingParams(panesClipRects.base[paneIndex].id, null === wideClipRect || void 0 === wideClipRect ? void 0 : wideClipRect.id, this._getPaneBorderVisibility(paneIndex))
                    },
                    _updatePanesCanvases(drawOptions) {
                        if (!drawOptions.recreateCanvas) {
                            return
                        }(0, _utils.updatePanesCanvases)(this.panes, this._canvas, this._isRotated())
                    },
                    _normalizePanesHeight() {
                        (0, _utils.normalizePanesHeight)(this.panes)
                    },
                    _renderScaleBreaks() {
                        this._valueAxes.concat(this._argumentAxes).forEach((axis => {
                            axis.drawScaleBreaks()
                        }))
                    },
                    _getArgFilter() {
                        return _range_data_calculator.default.getViewPortFilter(this.getArgumentAxis().visualRange() || {})
                    },
                    _hidePointsForSingleSeriesIfNeeded(series) {
                        const seriesPoints = series.getPoints();
                        let overlappedPointsCount = 0;
                        for (let i = 0; i < seriesPoints.length; i += 1) {
                            const currentPoint = seriesPoints[i];
                            const overlappingPoints = seriesPoints.slice(i + 1);
                            overlappedPointsCount += Number(isPointOverlapped(currentPoint, overlappingPoints));
                            if (overlappedPointsCount > seriesPoints.length / 2) {
                                series.autoHidePointMarkers = true;
                                break
                            }
                        }
                    },
                    _applyAutoHidePointMarkers(filteredSeries) {
                        let overlappingPoints = [];
                        const overlappedPointsCalculator = (pointsCount, currentPoint) => pointsCount + isPointOverlapped(currentPoint, overlappingPoints, true);
                        for (let i = filteredSeries.length - 1; i >= 0; i -= 1) {
                            const currentSeries = filteredSeries[i];
                            if (!currentSeries.autoHidePointMarkersEnabled()) {
                                continue
                            }
                            currentSeries.autoHidePointMarkers = false;
                            this._hidePointsForSingleSeriesIfNeeded(currentSeries);
                            if (!currentSeries.autoHidePointMarkers) {
                                const seriesPoints = currentSeries.getPoints();
                                const overlappingPointsCount = seriesPoints.reduce(overlappedPointsCalculator, 0);
                                if (overlappingPointsCount < seriesPoints.length) {
                                    overlappingPoints = overlappingPoints.concat(seriesPoints)
                                } else {
                                    currentSeries.autoHidePointMarkers = true
                                }
                            }
                        }
                    },
                    _applyPointMarkersAutoHiding() {
                        const allSeries = this.series;
                        if (!this._themeManager.getOptions("autoHidePointMarkers")) {
                            allSeries.forEach((s => {
                                s.autoHidePointMarkers = false
                            }));
                            return
                        }
                        this.panes.forEach((_ref => {
                            let {
                                borderCoords: borderCoords,
                                name: name
                            } = _ref;
                            const series = allSeries.filter((s => s.pane === name && s.usePointsToDefineAutoHiding()));
                            series.forEach((singleSeries => {
                                singleSeries.prepareCoordinatesForPoints()
                            }));
                            const argAxis = this.getArgumentAxis();
                            const markersInfo = function(allSeries, filteredSeries, argAxis) {
                                const series = [];
                                const overloadedSeries = {};
                                const argVisualRange = argAxis.visualRange();
                                const argTranslator = argAxis.getTranslator();
                                const argViewPortFilter = _range_data_calculator.default.getViewPortFilter(argVisualRange || {});
                                filteredSeries.forEach((s => {
                                    const valAxis = s.getValueAxis();
                                    const valVisualRange = valAxis.getCanvasRange();
                                    const valTranslator = valAxis.getTranslator();
                                    const seriesIndex = allSeries.indexOf(s);
                                    const valViewPortFilter = _range_data_calculator.default.getViewPortFilter(valVisualRange || {});
                                    overloadedSeries[seriesIndex] = {};
                                    filteredSeries.forEach((sr => {
                                        overloadedSeries[seriesIndex][allSeries.indexOf(sr)] = 0
                                    }));
                                    const seriesPoints = [];
                                    const pointsInViewport = s.getPoints().filter((p => p.getOptions().visible && argViewPortFilter(p.argument) && (valViewPortFilter(p.getMinValue(true)) || valViewPortFilter(p.getMaxValue(true)))));
                                    pointsInViewport.forEach((p => {
                                        const tp = {
                                            seriesIndex: seriesIndex,
                                            argument: p.argument,
                                            value: p.getMaxValue(true),
                                            size: p.bubbleSize || p.getOptions().size,
                                            x: void 0,
                                            y: void 0
                                        };
                                        if (p.getMinValue(true) !== p.getMaxValue(true)) {
                                            const mp = (0, _extend2.extend)({}, tp);
                                            mp.value = p.getMinValue(true);
                                            mp.x = argTranslator.to(mp.argument, 1);
                                            mp.y = valTranslator.to(mp.value, 1);
                                            seriesPoints.push(mp)
                                        }
                                        tp.x = argTranslator.to(tp.argument, 1);
                                        tp.y = valTranslator.to(tp.value, 1);
                                        seriesPoints.push(tp)
                                    }));
                                    overloadedSeries[seriesIndex].pointsCount = seriesPoints.length;
                                    overloadedSeries[seriesIndex].total = 0;
                                    overloadedSeries[seriesIndex].continuousSeries = 0;
                                    series.push({
                                        name: s.name,
                                        index: seriesIndex,
                                        points: seriesPoints
                                    })
                                }));
                                return {
                                    series: series,
                                    overloadedSeries: overloadedSeries
                                }
                            }(allSeries, series, argAxis);
                            ! function(canvas, markersInfo, series) {
                                const area = canvas.width * canvas.height;
                                const seriesPoints = markersInfo.series;
                                for (let i = seriesPoints.length - 1; i >= 0; i -= 1) {
                                    const currentSeries = series.filter((s => s.name === seriesPoints[i].name))[0];
                                    const {
                                        points: points
                                    } = seriesPoints[i];
                                    const pointSize = points.length ? points[0].size : 0;
                                    const pointsArea = pointSize * pointSize * points.length;
                                    if (currentSeries.autoHidePointMarkersEnabled() && pointsArea >= area / seriesPoints.length) {
                                        const {
                                            index: index
                                        } = seriesPoints[i];
                                        currentSeries.autoHidePointMarkers = true;
                                        seriesPoints.splice(i, 1);
                                        series.splice(series.indexOf(currentSeries), 1);
                                        markersInfo.overloadedSeries[index] = null
                                    }
                                }
                            }(borderCoords, markersInfo, series);
                            if (markersInfo.series.length) {
                                const argVisualRange = argAxis.visualRange();
                                const argAxisIsDiscrete = "discrete" === argAxis.getOptions().type;
                                const sortingCallback = argAxisIsDiscrete ? (p1, p2) => argVisualRange.categories.indexOf(p1.argument) - argVisualRange.categories.indexOf(p2.argument) : (p1, p2) => p1.argument - p2.argument;
                                let points = [];
                                markersInfo.series.forEach((s => {
                                    points = points.concat(s.points)
                                }));
                                points.sort(sortingCallback);
                                ! function(points, overloadedSeries) {
                                    let isContinuousSeries = false;
                                    for (let i = 0; i < points.length - 1; i += 1) {
                                        const curPoint = points[i];
                                        const {
                                            size: size
                                        } = curPoint;
                                        if ((0, _type.isDefined)(curPoint.x) && (0, _type.isDefined)(curPoint.y)) {
                                            for (let j = i + 1; j < points.length; j += 1) {
                                                const nextPoint = points[j];
                                                const nextX = null === nextPoint || void 0 === nextPoint ? void 0 : nextPoint.x;
                                                const nextY = null === nextPoint || void 0 === nextPoint ? void 0 : nextPoint.y;
                                                if (!(0, _type.isDefined)(nextX) || Math.abs(curPoint.x - nextX) >= size) {
                                                    isContinuousSeries = isContinuousSeries && j !== i + 1;
                                                    break
                                                } else {
                                                    const distance = (0, _type.isDefined)(nextX) && (0, _type.isDefined)(nextY) && Math.sqrt((curPoint.x - nextX) ** 2 + (curPoint.y - nextY) ** 2);
                                                    if (distance && distance < size) {
                                                        overloadedSeries[curPoint.seriesIndex][nextPoint.seriesIndex] += 1;
                                                        overloadedSeries[curPoint.seriesIndex].total += 1;
                                                        if (!isContinuousSeries) {
                                                            overloadedSeries[curPoint.seriesIndex].continuousSeries += 1;
                                                            isContinuousSeries = true
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }(points, markersInfo.overloadedSeries);
                                this._applyAutoHidePointMarkers(series)
                            }
                        }))
                    },
                    _renderAxes(drawOptions, panesBorderOptions) {
                        function calculateTitlesWidth(axes) {
                            return axes.map((axis => {
                                if (!axis.getTitle) {
                                    return 0
                                }
                                const title = axis.getTitle();
                                return title ? title.bBox.width : 0
                            }))
                        }
                        const rotated = this._isRotated();
                        const synchronizeMultiAxes = this._themeManager.getOptions("synchronizeMultiAxes");
                        const scrollBar = this._scrollBar ? [this._scrollBar] : [];
                        const extendedArgAxes = this._isArgumentAxisBeforeScrollBar() ? this._argumentAxes.concat(scrollBar) : scrollBar.concat(this._argumentAxes);
                        const verticalAxes = rotated ? this._argumentAxes : this._valueAxes;
                        const verticalElements = rotated ? extendedArgAxes : this._valueAxes;
                        const horizontalAxes = rotated ? this._valueAxes : this._argumentAxes;
                        const horizontalElements = rotated ? this._valueAxes : extendedArgAxes;
                        const allAxes = verticalAxes.concat(horizontalAxes);
                        const allElements = allAxes.concat(scrollBar);
                        const verticalAxesFirstDrawing = verticalAxes.some((v => v.isFirstDrawing()));
                        this._normalizePanesHeight();
                        this._updatePanesCanvases(drawOptions);
                        let panesCanvases = this.panes.reduce(((canvases, pane) => {
                            canvases[pane.name] = (0, _extend2.extend)({}, pane.canvas);
                            return canvases
                        }), {});
                        const paneSizes = this.panes.reduce(((sizes, pane) => {
                            sizes[pane.name] = {
                                height: pane.height,
                                unit: pane.unit
                            };
                            return sizes
                        }), {});
                        const cleanPanesCanvases = (0, _extend2.extend)(true, {}, panesCanvases);
                        this._initCustomPositioningAxes();
                        const needCustomAdjustAxes = this._axesBoundaryPositioning();
                        if (!drawOptions.adjustAxes && !needCustomAdjustAxes) {
                            drawAxesWithTicks(verticalAxes, !rotated && synchronizeMultiAxes, panesCanvases, panesBorderOptions);
                            drawAxesWithTicks(horizontalAxes, rotated && synchronizeMultiAxes, panesCanvases, panesBorderOptions);
                            performActionOnAxes(allAxes, "prepareAnimation");
                            this._renderScaleBreaks();
                            horizontalAxes.forEach((a => a.resolveOverlappingForCustomPositioning(verticalAxes)));
                            verticalAxes.forEach((a => a.resolveOverlappingForCustomPositioning(horizontalAxes)));
                            return false
                        }
                        if (needCustomAdjustAxes) {
                            allAxes.forEach((a => a.customPositionIsAvailable() && a.shift({
                                top: 0,
                                left: 0,
                                bottom: 0,
                                right: 0
                            })))
                        }
                        if (this._scrollBar) {
                            this._scrollBar.setPane(this.panes)
                        }
                        let vAxesMargins = {
                            panes: {},
                            left: 0,
                            right: 0
                        };
                        let hAxesMargins = getHorizontalAxesMargins(horizontalElements, (axis => axis.estimateMargins(panesCanvases[axis.pane])));
                        panesCanvases = shrinkCanvases(rotated, panesCanvases, paneSizes, vAxesMargins, hAxesMargins);
                        const drawAxesAndSetCanvases = isHorizontal => {
                            const axes = isHorizontal ? horizontalAxes : verticalAxes;
                            const condition = (isHorizontal ? rotated : !rotated) && synchronizeMultiAxes;
                            drawAxesWithTicks(axes, condition, panesCanvases, panesBorderOptions);
                            if (isHorizontal) {
                                hAxesMargins = getHorizontalAxesMargins(horizontalElements, getAxisMargins)
                            } else {
                                vAxesMargins = getVerticalAxesMargins(verticalElements)
                            }
                            panesCanvases = shrinkCanvases(rotated, panesCanvases, paneSizes, vAxesMargins, hAxesMargins)
                        };
                        drawAxesAndSetCanvases(false);
                        drawAxesAndSetCanvases(true);
                        if (!this._changesApplying && this._estimateTickIntervals(verticalAxes, panesCanvases)) {
                            drawAxesAndSetCanvases(false)
                        }
                        let oldTitlesWidth = calculateTitlesWidth(verticalAxes);
                        const visibleSeries = this._getVisibleSeries();
                        const pointsToAnimation = this._getPointsToAnimation(visibleSeries);
                        const axesIsAnimated = function(drawOptions, pointsToAnimation) {
                            const pointsCount = pointsToAnimation.reduce(((sum, count) => sum + count), 0) / pointsToAnimation.length;
                            return drawOptions.animate && pointsCount <= drawOptions.animationPointsLimit
                        }(drawOptions, pointsToAnimation);
                        performActionOnAxes(allElements, "updateSize", panesCanvases, axesIsAnimated);
                        horizontalElements.forEach(shiftAxis("top", "bottom"));
                        verticalElements.forEach(shiftAxis("left", "right"));
                        this._renderScaleBreaks();
                        this.panes.forEach((pane => {
                            (0, _extend2.extend)(pane.canvas, panesCanvases[pane.name])
                        }));
                        this._valueAxes.forEach((axis => {
                            axis.setInitRange()
                        }));
                        verticalAxes.forEach(((axis, i) => {
                            var _axis$hasWrap;
                            if (null !== (_axis$hasWrap = axis.hasWrap) && void 0 !== _axis$hasWrap && _axis$hasWrap.call(axis)) {
                                const title = axis.getTitle();
                                const newTitleWidth = title ? title.bBox.width : 0;
                                const offset = newTitleWidth - oldTitlesWidth[i];
                                if ("right" === axis.getOptions().position) {
                                    vAxesMargins.right += offset
                                } else {
                                    vAxesMargins.left += offset;
                                    this.panes.forEach((_ref2 => {
                                        let {
                                            name: name
                                        } = _ref2;
                                        vAxesMargins.panes[name].left += offset
                                    }))
                                }
                                panesCanvases = shrinkCanvases(rotated, panesCanvases, paneSizes, vAxesMargins, hAxesMargins);
                                performActionOnAxes(allElements, "updateSize", panesCanvases, false, false);
                                oldTitlesWidth = calculateTitlesWidth(verticalAxes)
                            }
                        }));
                        if (verticalAxes.some((v => v.customPositionIsAvailable() && v.getCustomPosition() !== v._axisPosition))) {
                            axesIsAnimated && this._resetAxesAnimation(verticalAxesFirstDrawing, false);
                            performActionOnAxes(verticalAxes, "updateSize", panesCanvases, axesIsAnimated)
                        }
                        horizontalAxes.forEach((a => a.resolveOverlappingForCustomPositioning(verticalAxes)));
                        verticalAxes.forEach((a => a.resolveOverlappingForCustomPositioning(horizontalAxes)));
                        return cleanPanesCanvases
                    },
                    _getExtraTemplatesItems() {
                        const allAxes = (this._argumentAxes || []).concat(this._valueAxes || []);
                        const elements = this._collectTemplatesFromItems(allAxes);
                        return {
                            items: elements.items,
                            groups: elements.groups,
                            launchRequest() {
                                allAxes.forEach((a => {
                                    a.setRenderedState(true)
                                }))
                            },
                            doneRequest() {
                                allAxes.forEach((a => {
                                    a.setRenderedState(false)
                                }))
                            }
                        }
                    },
                    _estimateTickIntervals: (axes, canvases) => axes.some((axis => axis.estimateTickInterval(canvases[axis.pane]))),
                    checkForMoreSpaceForPanesCanvas() {
                        const rotated = this._isRotated();
                        const panesAreCustomSized = this.panes.filter((p => p.unit)).length === this.panes.length;
                        let needSpace = false;
                        if (panesAreCustomSized) {
                            let needHorizontalSpace = 0;
                            let needVerticalSpace = 0;
                            if (rotated) {
                                const argAxisRightMargin = this.getArgumentAxis().getMargins().right;
                                const rightPanesIndent = Math.min(...this.panes.map((p => p.canvas.right)));
                                needHorizontalSpace = this._canvas.right + argAxisRightMargin - rightPanesIndent
                            } else {
                                const argAxisBottomMargin = this.getArgumentAxis().getMargins().bottom;
                                const bottomPanesIndent = Math.min(...this.panes.map((p => p.canvas.bottom)));
                                needVerticalSpace = this._canvas.bottom + argAxisBottomMargin - bottomPanesIndent
                            }
                            needSpace = needHorizontalSpace > 0 || needVerticalSpace > 0 ? {
                                width: needHorizontalSpace,
                                height: needVerticalSpace
                            } : false;
                            if (0 !== needVerticalSpace) {
                                const realSize = this.getSize();
                                const customSize = this.option("size");
                                const container = this._$element[0];
                                const containerHasStyledHeight = !!parseInt(container.style.height, 10) || 0 !== this._containerInitialHeight;
                                if (!rotated && !(null !== customSize && void 0 !== customSize && customSize.height) && !containerHasStyledHeight) {
                                    this._forceResize(realSize.width, realSize.height + needVerticalSpace);
                                    needSpace = false
                                }
                            }
                        } else {
                            needSpace = this.layoutManager.needMoreSpaceForPanesCanvas(this._getLayoutTargets(), rotated, (pane => ({
                                width: rotated && !!pane.unit,
                                height: !rotated && !!pane.unit
                            })))
                        }
                        return needSpace
                    },
                    _forceResize(width, height) {
                        this._renderer.resize(width, height);
                        this._updateSize(true);
                        this._setContentSize();
                        this._preserveOriginalCanvas();
                        this._updateCanvasClipRect(this._canvas)
                    },
                    _shrinkAxes(sizeShortage, panesCanvases) {
                        if (!sizeShortage || !panesCanvases) {
                            return
                        }
                        this._renderer.stopAllAnimations(true);
                        const rotated = this._isRotated();
                        const scrollBar = this._scrollBar ? [this._scrollBar] : [];
                        const extendedArgAxes = this._isArgumentAxisBeforeScrollBar() ? this._argumentAxes.concat(scrollBar) : scrollBar.concat(this._argumentAxes);
                        const verticalAxes = rotated ? extendedArgAxes : this._valueAxes;
                        const horizontalAxes = rotated ? this._valueAxes : extendedArgAxes;
                        const allAxes = verticalAxes.concat(horizontalAxes);
                        if (sizeShortage.width || sizeShortage.height) {
                            checkUsedSpace(sizeShortage, "height", horizontalAxes, getHorizontalAxesMargins);
                            checkUsedSpace(sizeShortage, "width", verticalAxes, getVerticalAxesMargins);
                            performActionOnAxes(allAxes, "updateSize", panesCanvases);
                            const paneSizes = this.panes.reduce(((sizes, pane) => {
                                sizes[pane.name] = {
                                    height: pane.height,
                                    unit: pane.unit
                                };
                                return sizes
                            }), {});
                            panesCanvases = shrinkCanvases(rotated, panesCanvases, paneSizes, getVerticalAxesMargins(verticalAxes), getHorizontalAxesMargins(horizontalAxes, getAxisMargins));
                            performActionOnAxes(allAxes, "updateSize", panesCanvases);
                            horizontalAxes.forEach(shiftAxis("top", "bottom"));
                            verticalAxes.forEach(shiftAxis("left", "right"));
                            this.panes.forEach((pane => (0, _extend2.extend)(pane.canvas, panesCanvases[pane.name])))
                        }
                    },
                    _isArgumentAxisBeforeScrollBar() {
                        const argumentAxis = this.getArgumentAxis();
                        if (this._scrollBar) {
                            var _argumentAxis$getOpti;
                            const argAxisPosition = argumentAxis.getResolvedBoundaryPosition();
                            const argAxisLabelPosition = null === (_argumentAxis$getOpti = argumentAxis.getOptions().label) || void 0 === _argumentAxis$getOpti ? void 0 : _argumentAxis$getOpti.position;
                            const scrollBarPosition = this._scrollBar.getOptions().position;
                            return argumentAxis.hasNonBoundaryPosition() || scrollBarPosition === argAxisPosition && argAxisLabelPosition !== scrollBarPosition
                        }
                        return false
                    },
                    _getPanesParameters() {
                        const {
                            panes: panes
                        } = this;
                        const params = [];
                        for (let i = 0; i < panes.length; i += 1) {
                            if (this._getPaneBorderVisibility(i)) {
                                params.push({
                                    coords: panes[i].borderCoords,
                                    clipRect: this._panesClipRects.fixed[i]
                                })
                            }
                        }
                        return params
                    },
                    _createCrosshairCursor() {
                        const options = this._themeManager.getOptions("crosshair") || {};
                        const argumentAxis = this.getArgumentAxis();
                        const axes = this._isRotated() ? [this._valueAxes, [argumentAxis]] : [
                            [argumentAxis], this._valueAxes
                        ];
                        const parameters = {
                            canvas: this._getCommonCanvas(),
                            panes: this._getPanesParameters(),
                            axes: axes
                        };
                        if (!(null !== options && void 0 !== options && options.enabled)) {
                            return
                        }
                        if (this._crosshair) {
                            this._crosshair.update(options, parameters)
                        } else {
                            this._crosshair = new _crosshair.Crosshair(this._renderer, options, parameters, this._crosshairCursorGroup)
                        }
                        this._crosshair.render()
                    },
                    _getCommonCanvas() {
                        let commonCanvas;
                        const {
                            panes: panes
                        } = this;
                        for (let i = 0; i < panes.length; i += 1) {
                            const {
                                canvas: canvas
                            } = panes[i];
                            if (!commonCanvas) {
                                commonCanvas = (0, _extend2.extend)({}, canvas)
                            } else {
                                commonCanvas.right = canvas.right;
                                commonCanvas.bottom = canvas.bottom
                            }
                        }
                        return commonCanvas
                    },
                    _createPanesBackground() {
                        const defaultBackgroundColor = this._themeManager.getOptions("commonPaneSettings").backgroundColor;
                        const renderer = this._renderer;
                        const rects = [];
                        this._panesBackgroundGroup.clear();
                        for (let i = 0; i < this.panes.length; i += 1) {
                            const backgroundColor = this.panes[i].backgroundColor || defaultBackgroundColor;
                            if (!backgroundColor || "none" === backgroundColor) {
                                rects.push(null);
                                continue
                            }
                            const rect = renderer.rect(0, 0, 0, 0).attr({
                                fill: (0, _utils.extractColor)(backgroundColor),
                                "stroke-width": 0
                            }).append(this._panesBackgroundGroup);
                            rects.push(rect)
                        }
                        this.panesBackground = rects
                    },
                    _fillPanesBackground() {
                        (0, _iterator.each)(this.panes, ((i, pane) => {
                            const bc = pane.borderCoords;
                            if (null !== this.panesBackground[i]) {
                                this.panesBackground[i].attr({
                                    x: bc.left,
                                    y: bc.top,
                                    width: bc.width,
                                    height: bc.height
                                })
                            }
                        }))
                    },
                    _calcPaneBorderCoords(pane) {
                        const {
                            canvas: canvas
                        } = pane;
                        const bc = pane.borderCoords = pane.borderCoords || {};
                        bc.left = canvas.left;
                        bc.top = canvas.top;
                        bc.right = canvas.width - canvas.right;
                        bc.bottom = canvas.height - canvas.bottom;
                        bc.width = Math.max(bc.right - bc.left, 0);
                        bc.height = Math.max(bc.bottom - bc.top, 0)
                    },
                    _drawPanesBorders(panesBorderOptions) {
                        const rotated = this._isRotated();
                        this._panesBorderGroup.linkRemove().clear();
                        (0, _iterator.each)(this.panes, ((i, pane) => {
                            const borderOptions = panesBorderOptions[pane.name];
                            const attr = {
                                fill: "none",
                                stroke: borderOptions.color,
                                "stroke-opacity": borderOptions.opacity,
                                "stroke-width": borderOptions.width,
                                dashStyle: borderOptions.dashStyle,
                                "stroke-linecap": "square"
                            };
                            this._calcPaneBorderCoords(pane, rotated);
                            if (!borderOptions.visible) {
                                return
                            }
                            const bc = pane.borderCoords;
                            const segmentRectParams = (0, _utils2.prepareSegmentRectPoints)(bc.left, bc.top, bc.width, bc.height, borderOptions);
                            this._renderer.path(segmentRectParams.points, segmentRectParams.pathType).attr(attr).append(this._panesBorderGroup)
                        }));
                        this._panesBorderGroup.linkAppend()
                    },
                    _createClipRect(clipArray, index, left, top, width, height) {
                        let clipRect = clipArray[index];
                        if (!clipRect) {
                            clipRect = this._renderer.clipRect(left, top, width, height);
                            clipArray[index] = clipRect
                        } else {
                            clipRect.attr({
                                x: left,
                                y: top,
                                width: width,
                                height: height
                            })
                        }
                    },
                    _createClipRectsForPanes() {
                        const canvas = this._canvas;
                        (0, _iterator.each)(this.panes, ((i, pane) => {
                            let needWideClipRect = false;
                            const bc = pane.borderCoords;
                            let {
                                left: left
                            } = bc;
                            let {
                                top: top
                            } = bc;
                            let {
                                width: width
                            } = bc;
                            let {
                                height: height
                            } = bc;
                            const panesClipRects = this._panesClipRects;
                            this._createClipRect(panesClipRects.fixed, i, left, top, width, height);
                            this._createClipRect(panesClipRects.base, i, left, top, width, height);
                            (0, _iterator.each)(this.series, ((_, series) => {
                                if (series.pane === pane.name && (series.isFinancialSeries() || series.areErrorBarsVisible())) {
                                    needWideClipRect = true
                                }
                            }));
                            if (needWideClipRect) {
                                if (this._isRotated()) {
                                    top = 0;
                                    height = canvas.height
                                } else {
                                    left = 0;
                                    width = canvas.width
                                }
                                this._createClipRect(panesClipRects.wide, i, left, top, width, height)
                            } else {
                                panesClipRects.wide[i] = null
                            }
                        }))
                    },
                    _applyClipRectsForAxes() {
                        const axes = this._getAllAxes();
                        const chartCanvasClipRectID = this._getCanvasClipRectID();
                        for (let i = 0; i < axes.length; i += 1) {
                            const elementsClipRectID = this._getElementsClipRectID(axes[i].pane);
                            axes[i].applyClipRects(elementsClipRectID, chartCanvasClipRectID)
                        }
                    },
                    _getPaneBorderVisibility(paneIndex) {
                        var _pane$border;
                        const commonPaneBorderVisible = this._themeManager.getOptions("commonPaneSettings").border.visible;
                        const pane = this.panes[paneIndex];
                        const paneVisibility = null === pane || void 0 === pane || null === (_pane$border = pane.border) || void 0 === _pane$border ? void 0 : _pane$border.visible;
                        return void 0 === paneVisibility ? commonPaneBorderVisible : paneVisibility
                    },
                    _getCanvasForPane(paneName) {
                        var _this$panes$find;
                        return null === (_this$panes$find = this.panes.find((pane => pane.name === paneName))) || void 0 === _this$panes$find ? void 0 : _this$panes$find.canvas
                    },
                    _getTrackerSettings() {
                        return (0, _extend2.extend)(this.callBase(), {
                            chart: this,
                            rotated: this._isRotated(),
                            crosshair: this._getCrosshairOptions().enabled ? this._crosshair : null,
                            stickyHovering: this._themeManager.getOptions("stickyHovering")
                        })
                    },
                    _resolveLabelOverlappingStack() {
                        const isRotated = this._isRotated();
                        const shiftDirection = isRotated ? (box, length) => ({
                            x: box.x - length,
                            y: box.y
                        }) : (box, length) => ({
                            x: box.x,
                            y: box.y - length
                        });
                        const processor = (a, b) => {
                            const coordPosition = isRotated ? 1 : 0;
                            const figureCenter1 = a.labels[0].getFigureCenter()[coordPosition];
                            const figureCenter12 = b.labels[0].getFigureCenter()[coordPosition];
                            if (figureCenter1 - figureCenter12 === 0) {
                                const translator = a.labels[0].getPoint().series.getValueAxis().getTranslator();
                                const direction = translator.isInverted() ? -1 : 1;
                                return (a.value() - b.value()) * direction
                            }
                            return 0
                        };
                        (0, _iterator.each)(this._getStackPoints(), ((_, stacks) => {
                            (0, _iterator.each)(stacks, ((_, points) => {
                                const isInverted = points[0].series.getValueAxis().getOptions().inverted;
                                _m_base_chart.overlapping.resolveLabelOverlappingInOneDirection(points, this._getCommonCanvas(), isRotated, isInverted, shiftDirection, processor)
                            }))
                        }))
                    },
                    _getStackPoints() {
                        const stackPoints = {};
                        const visibleSeries = this._getVisibleSeries();
                        (0, _iterator.each)(visibleSeries, ((_, singleSeries) => {
                            const points = singleSeries.getPoints();
                            const stackName = singleSeries.getStackName() || null;
                            (0, _iterator.each)(points, ((_, point) => {
                                const {
                                    argument: argument
                                } = point;
                                if (!stackPoints[argument]) {
                                    stackPoints[argument] = {}
                                }
                                if (!stackPoints[argument][stackName]) {
                                    stackPoints[argument][stackName] = []
                                }
                                stackPoints[argument][stackName].push(point)
                            }))
                        }));
                        return stackPoints
                    },
                    _getCrosshairOptions() {
                        return this._getOption("crosshair")
                    },
                    zoomArgument(min, max) {
                        if (!this._initialized || !(0, _type.isDefined)(min) && !(0, _type.isDefined)(max)) {
                            return
                        }
                        this.getArgumentAxis().visualRange([min, max])
                    },
                    resetVisualRange() {
                        const axes = this._argumentAxes;
                        const nonVirtualArgumentAxis = this.getArgumentAxis();
                        axes.forEach((axis => {
                            axis.resetVisualRange(nonVirtualArgumentAxis !== axis);
                            this._applyCustomVisualRangeOption(axis)
                        }));
                        this.callBase()
                    },
                    getVisibleArgumentBounds() {
                        const translator = this._argumentAxes[0].getTranslator();
                        const range = translator.getBusinessRange();
                        const isDiscrete = "discrete" === range.axisType;
                        const {
                            categories: categories
                        } = range;
                        return {
                            minVisible: isDiscrete ? range.minVisible || categories[0] : range.minVisible,
                            maxVisible: isDiscrete ? range.maxVisible || categories[categories.length - 1] : range.maxVisible
                        }
                    },
                    _change_FULL_RENDER() {
                        this.callBase();
                        if (this._changes.has("VISUAL_RANGE")) {
                            this._raiseZoomEndHandlers()
                        }
                    },
                    _getAxesForScaling() {
                        return [this.getArgumentAxis()].concat(this._valueAxes)
                    },
                    _applyVisualRangeByVirtualAxes(axis, range) {
                        if (axis.isArgumentAxis) {
                            if (axis !== this.getArgumentAxis()) {
                                return true
                            }
                            this._argumentAxes.filter((a => a !== axis)).forEach((a => a.visualRange(range, {
                                start: true,
                                end: true
                            })))
                        }
                        return false
                    },
                    _raiseZoomEndHandlers() {
                        this._argumentAxes.forEach((axis => axis.handleZoomEnd()));
                        this.callBase()
                    },
                    _setOptionsByReference() {
                        this.callBase();
                        (0, _extend2.extend)(this._optionsByReference, {
                            "argumentAxis.visualRange": true
                        })
                    },
                    option() {
                        const option = this.callBase(...arguments);
                        const valueAxis = this._options.silent("valueAxis");
                        if ("array" === (0, _type.type)(valueAxis)) {
                            for (let i = 0; i < valueAxis.length; i += 1) {
                                const optionPath = `valueAxis[${i}].visualRange`;
                                this._optionsByReference[optionPath] = true
                            }
                        }
                        return option
                    },
                    _notifyVisualRange() {
                        const argAxis = this._argumentAxes[0];
                        const argumentVisualRange = (0, _utils.convertVisualRangeObject)(argAxis.visualRange(), !isArray(this.option("argumentAxis.visualRange")));
                        if (!argAxis.skipEventRising || !(0, _utils.rangesAreEqual)(argumentVisualRange, this.option("argumentAxis.visualRange"))) {
                            this.option("argumentAxis.visualRange", argumentVisualRange)
                        } else {
                            argAxis.skipEventRising = null
                        }
                        this.callBase()
                    }
                });
                dxChart.addPlugin(_shutter_zoom.default);
                dxChart.addPlugin(_zoom_and_pan.default);
                dxChart.addPlugin(_annotations.plugins.core);
                dxChart.addPlugin(_annotations.plugins.chart);
                (0, _component_registrator.default)("dxChart", dxChart);
                exports.default = dxChart
            },
        98895:
            /*!***************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/viz/m_pie_chart.js ***!
              \***************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 92848));
                var _common = __webpack_require__( /*! ../../core/utils/common */ 17781);
                var _extend2 = __webpack_require__( /*! ../../core/utils/extend */ 52576);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 21274);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 11528);
                var _consts = _interopRequireDefault(__webpack_require__( /*! ../../viz/components/consts */ 7377));
                var _annotations = __webpack_require__( /*! ../../viz/core/annotations */ 97808);
                var _center_template = __webpack_require__( /*! ../../viz/core/center_template */ 94618);
                var _utils = __webpack_require__( /*! ../../viz/core/utils */ 28779);
                var _range = __webpack_require__( /*! ../../viz/translators/range */ 99857);
                var _translator1d = __webpack_require__( /*! ../../viz/translators/translator1d */ 14393);
                var _m_base_chart = __webpack_require__( /*! ./chart_components/m_base_chart */ 9410);

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const {
                    states: states
                } = _consts.default;
                const seriesSpacing = _consts.default.pieSeriesSpacing;
                const NORMAL_STATE = states.normalMark;
                const HOVER_STATE = states.hoverMark;
                const SELECTED_STATE = states.selectedMark;
                const LEGEND_ACTIONS = [states.resetItem, states.applyHover, states.applySelected, states.applySelected];

                function shiftInColumnFunction(box, length) {
                    return {
                        x: box.x,
                        y: box.y - length
                    }
                }

                function dividePoints(series, points) {
                    return series.getVisiblePoints().reduce(((r, point) => {
                        const angle = (0, _utils.normalizeAngle)(point.middleAngle);
                        (angle <= 90 || angle >= 270 ? r.right : r.left).push(point);
                        return r
                    }), points || {
                        left: [],
                        right: []
                    })
                }

                function resolveOverlappedLabels(points, shiftCallback, inverseDirection, canvas) {
                    let overlapped = false;
                    if (inverseDirection) {
                        points.left.reverse();
                        points.right.reverse()
                    }
                    overlapped = _m_base_chart.overlapping.resolveLabelOverlappingInOneDirection(points.left, canvas, false, false, shiftCallback);
                    return _m_base_chart.overlapping.resolveLabelOverlappingInOneDirection(points.right, canvas, false, false, shiftCallback) || overlapped
                }

                function correctPercentValue(value) {
                    if ((0, _type.isNumeric)(value)) {
                        if (value > 1) {
                            value = 1
                        } else if (value < 0) {
                            value = 0
                        }
                    } else {
                        value = void 0
                    }
                    return value
                }
                const pieSizeEqualizer = function() {
                    function removeFromList(list, item) {
                        return list.filter((li => li !== item))
                    }
                    let pies = [];
                    let timers = {};
                    return {
                        queue(pie) {
                            const group = pie.getSizeGroup();
                            pies = (list = pies, item = pie, removeFromList(list, item).concat(item));
                            var list, item;
                            clearTimeout(timers[group]);
                            timers[group] = setTimeout((() => {
                                ! function(group, allPies) {
                                    const pies = allPies.filter((p => p._isVisible() && p.getSizeGroup() === group));
                                    const minRadius = Math.min.apply(null, pies.map((p => p.getSizeGroupLayout().radius)));
                                    const minPie = pies.filter((p => p.getSizeGroupLayout().radius === minRadius));
                                    pies.forEach((p => p.render({
                                        force: true,
                                        sizeGroupLayout: minPie.length ? minPie[0].getSizeGroupLayout() : {}
                                    })))
                                }(group, pies)
                            }))
                        },
                        remove(pie) {
                            pies = removeFromList(pies, pie);
                            if (!pies.length) {
                                timers = {}
                            }
                        }
                    }
                }();
                const dxPieChart = _m_base_chart.BaseChart.inherit({
                    _themeSection: "pie",
                    _layoutManagerOptions() {
                        return (0, _extend2.extend)(true, {}, this.callBase(), {
                            piePercentage: correctPercentValue(this._themeManager.getOptions("diameter")),
                            minPiePercentage: correctPercentValue(this._themeManager.getOptions("minDiameter"))
                        })
                    },
                    _optionChangesMap: {
                        diameter: "REINIT",
                        minDiameter: "REINIT",
                        sizeGroup: "REINIT"
                    },
                    _disposeCore() {
                        pieSizeEqualizer.remove(this);
                        this.callBase()
                    },
                    _groupSeries() {
                        var _series$;
                        const {
                            series: series
                        } = this;
                        this._groupsData = {
                            groups: [{
                                series: series,
                                valueOptions: {
                                    valueType: "numeric"
                                }
                            }],
                            argumentOptions: null === (_series$ = series[0]) || void 0 === _series$ ? void 0 : _series$.getOptions()
                        }
                    },
                    getArgumentAxis: () => null,
                    _getValueAxis() {
                        const translator = (new _translator1d.Translator1D).setCodomain(360, 0);
                        return {
                            getTranslator: () => translator,
                            setBusinessRange(range) {
                                translator.setDomain(range.min, range.max)
                            }
                        }
                    },
                    _populateBusinessRange() {
                        this.series.map((series => {
                            const range = new _range.Range;
                            range.addRange(series.getRangeData().val);
                            series.getValueAxis().setBusinessRange(range);
                            return range
                        }))
                    },
                    _specialProcessSeries() {
                        (0, _iterator.each)(this.series, ((_, singleSeries) => {
                            singleSeries.arrangePoints()
                        }))
                    },
                    _checkPaneName: () => true,
                    _processSingleSeries(singleSeries) {
                        this.callBase(singleSeries);
                        singleSeries.arrangePoints()
                    },
                    _handleSeriesDataUpdated() {
                        let maxPointCount = 0;
                        this.series.forEach((s => {
                            maxPointCount = Math.max(s.getPointsCount(), maxPointCount)
                        }));
                        this.series.forEach((s => {
                            s.setMaxPointsCount(maxPointCount)
                        }));
                        this.callBase()
                    },
                    _getLegendOptions(item) {
                        const legendItem = this.callBase(item);
                        const {
                            legendData: legendData
                        } = legendItem;
                        legendData.argument = item.argument;
                        legendData.argumentIndex = item.argumentIndex;
                        legendData.points = [item];
                        return legendItem
                    },
                    _getLegendTargets() {
                        const itemsByArgument = {};
                        (this.series || []).forEach((series => {
                            series.getPoints().forEach((point => {
                                const argument = point.argument.valueOf();
                                const index = series.getPointsByArg(argument).indexOf(point);
                                const key = argument.valueOf().toString() + index;
                                itemsByArgument[key] = itemsByArgument[key] || [];
                                const argumentCount = itemsByArgument[key].push(point);
                                point.index = itemsByArgument[key][argumentCount - 2] ? itemsByArgument[key][argumentCount - 2].index : Object.keys(itemsByArgument).length - 1;
                                point.argumentIndex = index
                            }))
                        }));
                        const items = [];
                        (0, _iterator.each)(itemsByArgument, ((_, points) => {
                            points.forEach(((point, index) => {
                                if (0 === index) {
                                    items.push(this._getLegendOptions(point));
                                    return
                                }
                                const item = items[items.length - 1];
                                item.legendData.points.push(point);
                                if (!item.visible) {
                                    item.visible = point.isVisible()
                                }
                            }))
                        }));
                        return items
                    },
                    _getLayoutTargets() {
                        return [{
                            canvas: this._canvas
                        }]
                    },
                    _getLayoutSeries(series, drawOptions) {
                        let layout;
                        const canvas = this._canvas;
                        let drawnLabels = false;
                        layout = this.layoutManager.applyPieChartSeriesLayout(canvas, series, true);
                        series.forEach((singleSeries => {
                            singleSeries.correctPosition(layout, canvas);
                            drawnLabels = singleSeries.drawLabelsWOPoints() || drawnLabels
                        }));
                        if (drawnLabels) {
                            layout = this.layoutManager.applyPieChartSeriesLayout(canvas, series, drawOptions.hideLayoutLabels)
                        }
                        series.forEach((singleSeries => {
                            singleSeries.hideLabels()
                        }));
                        this._sizeGroupLayout = {
                            x: layout.centerX,
                            y: layout.centerY,
                            radius: layout.radiusOuter,
                            drawOptions: drawOptions
                        };
                        return layout
                    },
                    _getLayoutSeriesForEqualPies(series, sizeGroupLayout) {
                        const canvas = this._canvas;
                        const layout = this.layoutManager.applyEqualPieChartLayout(series, sizeGroupLayout);
                        series.forEach((s => {
                            s.correctPosition(layout, canvas);
                            s.drawLabelsWOPoints()
                        }));
                        this.layoutManager.correctPieLabelRadius(series, layout, canvas);
                        return layout
                    },
                    _updateSeriesDimensions(drawOptions) {
                        const visibleSeries = this._getVisibleSeries();
                        const lengthVisibleSeries = visibleSeries.length;
                        let innerRad;
                        let delta;
                        let layout;
                        const {
                            sizeGroupLayout: sizeGroupLayout
                        } = drawOptions;
                        if (lengthVisibleSeries) {
                            layout = sizeGroupLayout ? this._getLayoutSeriesForEqualPies(visibleSeries, sizeGroupLayout) : this._getLayoutSeries(visibleSeries, drawOptions);
                            delta = (layout.radiusOuter - layout.radiusInner - seriesSpacing * (lengthVisibleSeries - 1)) / lengthVisibleSeries;
                            innerRad = layout.radiusInner;
                            this._setGeometry(layout);
                            visibleSeries.forEach((singleSeries => {
                                singleSeries.correctRadius({
                                    radiusInner: innerRad,
                                    radiusOuter: innerRad + delta
                                });
                                innerRad += delta + seriesSpacing
                            }))
                        }
                    },
                    _renderSeries(drawOptions, isRotated, isLegendInside) {
                        this._calculateSeriesLayout(drawOptions, isRotated);
                        if (!drawOptions.sizeGroupLayout && this.getSizeGroup()) {
                            pieSizeEqualizer.queue(this);
                            this._clearCanvas();
                            return
                        }
                        this._renderSeriesElements(drawOptions, isLegendInside)
                    },
                    _getCenter() {
                        return this._center
                    },
                    getInnerRadius() {
                        return this._innerRadius
                    },
                    _getLegendCallBack() {
                        const legend = this._legend;
                        const items = this._getLegendTargets().map((i => i.legendData));
                        return target => {
                            items.forEach((data => {
                                const points = [];
                                const callback = legend.getActionCallback({
                                    index: data.id
                                });
                                this.series.forEach((series => {
                                    const seriesPoints = series.getPointsByKeys(data.argument, data.argumentIndex);
                                    points.push.apply(points, seriesPoints)
                                }));
                                if (target && target.argument === data.argument && target.argumentIndex === data.argumentIndex) {
                                    points.push(target)
                                }
                                callback(function(points) {
                                    let state = NORMAL_STATE;
                                    points.forEach((point => {
                                        var _point$series;
                                        const seriesOptions = null === (_point$series = point.series) || void 0 === _point$series ? void 0 : _point$series.getOptions();
                                        let pointState = point.fullState;
                                        if ("none" === (null === seriesOptions || void 0 === seriesOptions ? void 0 : seriesOptions.hoverMode)) {
                                            pointState &= ~HOVER_STATE
                                        }
                                        if ("none" === (null === seriesOptions || void 0 === seriesOptions ? void 0 : seriesOptions.selectionMode)) {
                                            pointState &= ~SELECTED_STATE
                                        }
                                        state |= pointState
                                    }));
                                    return LEGEND_ACTIONS[state]
                                }(points))
                            }))
                        }
                    },
                    _locateLabels(resolveLabelOverlapping) {
                        let iterationCount = 0;
                        let labelsWereOverlapped;
                        let wordWrapApplied;
                        do {
                            wordWrapApplied = this._adjustSeriesLabels("shift" === resolveLabelOverlapping);
                            labelsWereOverlapped = this._resolveLabelOverlapping(resolveLabelOverlapping)
                        } while ((labelsWereOverlapped || wordWrapApplied) && ++iterationCount < 5)
                    },
                    _adjustSeriesLabels(moveLabelsFromCenter) {
                        return this.series.reduce(((r, s) => s.adjustLabels(moveLabelsFromCenter) || r), false)
                    },
                    _applyExtraSettings: _common.noop,
                    _resolveLabelOverlappingShift() {
                        const inverseDirection = "anticlockwise" === this.option("segmentsDirection");
                        const seriesByPosition = this.series.reduce(((r, s) => {
                            (r[s.getOptions().label.position] || r.outside).push(s);
                            return r
                        }), {
                            inside: [],
                            columns: [],
                            outside: []
                        });
                        let labelsOverlapped = false;
                        const shiftFunction = (box, length) => (0, _utils.getVerticallyShiftedAngularCoords)(box, -length, this._center);
                        if (seriesByPosition.inside.length > 0) {
                            const pointsToResolve = seriesByPosition.inside.reduce(((r, singleSeries) => {
                                const visiblePoints = singleSeries.getVisiblePoints();
                                return visiblePoints.reduce(((r, point) => {
                                    r.left.push(point);
                                    return r
                                }), r)
                            }), {
                                left: [],
                                right: []
                            });
                            labelsOverlapped = resolveOverlappedLabels(pointsToResolve, shiftInColumnFunction, inverseDirection, this._canvas) || labelsOverlapped
                        }
                        labelsOverlapped = seriesByPosition.columns.reduce(((r, singleSeries) => resolveOverlappedLabels(dividePoints(singleSeries), shiftInColumnFunction, inverseDirection, this._canvas) || r), labelsOverlapped);
                        if (seriesByPosition.outside.length > 0) {
                            labelsOverlapped = resolveOverlappedLabels(seriesByPosition.outside.reduce(((r, singleSeries) => dividePoints(singleSeries, r)), null), shiftFunction, inverseDirection, this._canvas) || labelsOverlapped
                        }
                        return labelsOverlapped
                    },
                    _setGeometry(_ref) {
                        let {
                            centerX: x,
                            centerY: y,
                            radiusInner: radiusInner
                        } = _ref;
                        this._center = {
                            x: x,
                            y: y
                        };
                        this._innerRadius = radiusInner
                    },
                    _disposeSeries() {
                        this.callBase.apply(this, arguments);
                        this._abstractSeries = null
                    },
                    _legendDataField: "point",
                    _legendItemTextField: "argument",
                    _applyPointMarkersAutoHiding: _common.noop,
                    _renderTrackers: _common.noop,
                    _trackerType: "PieTracker",
                    _createScrollBar: _common.noop,
                    _updateAxesLayout: _common.noop,
                    _applyClipRects: _common.noop,
                    _appendAdditionalSeriesGroups: _common.noop,
                    _prepareToRender: _common.noop,
                    _isLegendInside: _common.noop,
                    _renderAxes: _common.noop,
                    _shrinkAxes: _common.noop,
                    _isRotated: _common.noop,
                    _seriesPopulatedHandlerCore: _common.noop,
                    _reinitAxes: _common.noop,
                    _correctAxes: _common.noop,
                    _getExtraOptions() {
                        return {
                            startAngle: this.option("startAngle"),
                            innerRadius: this.option("innerRadius"),
                            segmentsDirection: this.option("segmentsDirection"),
                            type: this.option("type")
                        }
                    },
                    getSizeGroup() {
                        return this._themeManager.getOptions("sizeGroup")
                    },
                    getSizeGroupLayout() {
                        return this._sizeGroupLayout || {}
                    }
                });
                (0, _iterator.each)(["startAngle", "innerRadius", "segmentsDirection", "type"], ((_, name) => {
                    dxPieChart.prototype._optionChangesMap[name] = "REFRESH_SERIES_DATA_INIT"
                }));
                dxPieChart.addPlugin(_center_template.plugins.pieChart);
                dxPieChart.addPlugin(_annotations.plugins.core);
                dxPieChart.addPlugin(_annotations.plugins.pieChart);
                (0, _component_registrator.default)("dxPieChart", dxPieChart);
                exports.default = dxPieChart
            },
        52769:
            /*!*****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/viz/m_polar_chart.js ***!
              \*****************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _component_registrator = (e = __webpack_require__( /*! ../../core/component_registrator */ 92848), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                var _common = __webpack_require__( /*! ../../core/utils/common */ 17781);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 11528);
                var _annotations = __webpack_require__( /*! ../../viz/core/annotations */ 97808);
                var _utils = __webpack_require__( /*! ../../viz/core/utils */ 28779);
                var _m_advanced_chart = __webpack_require__( /*! ./chart_components/m_advanced_chart */ 78609);
                const dxPolarChart = _m_advanced_chart.AdvancedChart.inherit({
                    _themeSection: "polar",
                    _createPanes() {
                        this.callBase();
                        return [{
                            name: "default"
                        }]
                    },
                    _checkPaneName: () => true,
                    _getAxisRenderingOptions(typeSelector) {
                        const isArgumentAxis = "argumentAxis" === typeSelector;
                        let type = isArgumentAxis ? "circular" : "linear";
                        const useSpiderWeb = this.option("useSpiderWeb");
                        if (useSpiderWeb) {
                            type += "Spider"
                        }
                        return {
                            axisType: "polarAxes",
                            drawingType: type
                        }
                    },
                    _executeAppendBeforeSeries(append) {
                        append()
                    },
                    _prepareAxisOptions(typeSelector, axisOptions) {
                        const isArgumentAxis = "argumentAxis" === typeSelector;
                        const themeManager = this._themeManager;
                        const axisUserOptions = this.option("argumentAxis");
                        const argumentAxisOptions = themeManager.getOptions("argumentAxis", axisUserOptions) || {};
                        const startAngle = isFinite(argumentAxisOptions.startAngle) ? (0, _utils.normalizeAngle)(argumentAxisOptions.startAngle) : 0;
                        return {
                            type: this.option("useSpiderWeb") && isArgumentAxis ? "discrete" : axisOptions.type,
                            isHorizontal: true,
                            showCustomBoundaryTicks: isArgumentAxis,
                            startAngle: startAngle,
                            endAngle: startAngle + 360
                        }
                    },
                    _optionChangesMap: {
                        useSpiderWeb: "USE_SPIDER_WEB"
                    },
                    _change_USE_SPIDER_WEB() {
                        this._disposeAxes();
                        this._requestChange(["AXES_AND_PANES"])
                    },
                    _getExtraOptions() {
                        return {
                            spiderWidget: this.option("useSpiderWeb")
                        }
                    },
                    _prepareToRender() {
                        this._appendAxesGroups();
                        return {}
                    },
                    _calcCanvas() {
                        const canvas = (0, _extend.extend)({}, this._canvas);
                        const argumentAxis = this.getArgumentAxis();
                        const margins = argumentAxis.getMargins();
                        Object.keys(margins).forEach((margin => {
                            canvas[margin] = canvas[`original${margin[0].toUpperCase()}${margin.slice(1)}`] + margins[margin]
                        }));
                        return canvas
                    },
                    _renderAxes() {
                        const valueAxis = this._getValueAxis();
                        const argumentAxis = this.getArgumentAxis();
                        argumentAxis.draw(this._canvas);
                        valueAxis.setSpiderTicks(argumentAxis.getSpiderTicks());
                        const canvas = this._calcCanvas();
                        argumentAxis.updateSize(canvas);
                        valueAxis.draw(canvas);
                        return canvas
                    },
                    _getValueAxis() {
                        return this._valueAxes[0]
                    },
                    _shrinkAxes(sizeStorage) {
                        const valueAxis = this._getValueAxis();
                        const argumentAxis = this.getArgumentAxis();
                        if (sizeStorage && (sizeStorage.width || sizeStorage.height)) {
                            argumentAxis.hideOuterElements();
                            const canvas = this._calcCanvas();
                            argumentAxis.updateSize(canvas);
                            valueAxis.updateSize(canvas)
                        }
                    },
                    checkForMoreSpaceForPanesCanvas() {
                        return this.layoutManager.needMoreSpaceForPanesCanvas([{
                            canvas: this.getArgumentAxis().getCanvas()
                        }], this._isRotated())
                    },
                    _getLayoutTargets() {
                        return [{
                            canvas: this._canvas
                        }]
                    },
                    _getSeriesForPane() {
                        return this.series
                    },
                    _applyClipRects() {
                        const canvasClipRectID = this._getCanvasClipRectID();
                        this._createClipPathForPane();
                        this.getArgumentAxis().applyClipRects(this._getElementsClipRectID(), canvasClipRectID);
                        this._getValueAxis().applyClipRects(this._getElementsClipRectID(), canvasClipRectID)
                    },
                    _createClipPathForPane() {
                        const valueAxis = this._getValueAxis();
                        let center = valueAxis.getCenter();
                        const radius = valueAxis.getRadius();
                        const panesClipRects = this._panesClipRects;
                        center = {
                            x: Math.round(center.x),
                            y: Math.round(center.y)
                        };
                        this._createClipCircle(panesClipRects.fixed, center.x, center.y, radius);
                        this._createClipCircle(panesClipRects.base, center.x, center.y, radius);
                        if (this.series.some((s => s.areErrorBarsVisible()))) {
                            this._createClipCircle(panesClipRects.wide, center.x, center.y, radius)
                        } else {
                            panesClipRects.wide[0] = null
                        }
                    },
                    _createClipCircle(clipArray, left, top, radius) {
                        let clipCircle = clipArray[0];
                        if (!clipCircle) {
                            clipCircle = this._renderer.clipCircle(left, top, radius);
                            clipArray[0] = clipCircle
                        } else {
                            clipCircle.attr({
                                cx: left,
                                cy: top,
                                r: radius
                            })
                        }
                    },
                    _applyExtraSettings(series) {
                        const wideClipRect = this._panesClipRects.wide[0];
                        series.setClippingParams(this._panesClipRects.base[0].id, wideClipRect && wideClipRect.id, false, false)
                    },
                    getActualAngle(angle) {
                        return this.getArgumentAxis().getOptions().inverted ? 360 - angle : angle
                    },
                    getXYFromPolar(angle, radius, argument, value) {
                        const layoutInfo = {
                            angle: void 0,
                            radius: void 0,
                            x: void 0,
                            y: void 0
                        };
                        if (!(0, _type.isDefined)(angle) && !(0, _type.isDefined)(radius) && !(0, _type.isDefined)(argument) && !(0, _type.isDefined)(value)) {
                            return layoutInfo
                        }
                        const argAxis = this.getArgumentAxis();
                        const startAngle = argAxis.getAngles()[0];
                        let argAngle;
                        let translatedRadius;
                        if ((0, _type.isDefined)(argument)) {
                            argAngle = argAxis.getTranslator().translate(argument)
                        } else if (isFinite(angle)) {
                            argAngle = this.getActualAngle(angle)
                        } else if (!(0, _type.isDefined)(angle)) {
                            argAngle = 0
                        }
                        if ((0, _type.isDefined)(value)) {
                            translatedRadius = this.getValueAxis().getTranslator().translate(value)
                        } else if (isFinite(radius)) {
                            translatedRadius = radius
                        } else if (!(0, _type.isDefined)(radius)) {
                            translatedRadius = argAxis.getRadius()
                        }
                        if ((0, _type.isDefined)(argAngle) && (0, _type.isDefined)(translatedRadius)) {
                            const coords = (0, _utils.convertPolarToXY)(argAxis.getCenter(), startAngle, argAngle, translatedRadius);
                            (0, _extend.extend)(layoutInfo, coords, {
                                angle: argAxis.getTranslatedAngle(argAngle),
                                radius: translatedRadius
                            })
                        }
                        return layoutInfo
                    },
                    _applyPointMarkersAutoHiding: _common.noop,
                    _createScrollBar: _common.noop,
                    _isRotated: _common.noop,
                    _getCrosshairOptions: _common.noop,
                    _isLegendInside: _common.noop
                });
                dxPolarChart.addPlugin(_annotations.plugins.core);
                dxPolarChart.addPlugin(_annotations.plugins.polarChart);
                (0, _component_registrator.default)("dxPolarChart", dxPolarChart);
                exports.default = dxPolarChart
            },
        81578:
            /*!****************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/animation/frame.js ***!
              \****************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "cancelAnimationFrame", {
                    enumerable: true,
                    get: function() {
                        return _animation.cancelAnimationFrame
                    }
                });
                Object.defineProperty(exports, "requestAnimationFrame", {
                    enumerable: true,
                    get: function() {
                        return _animation.requestAnimationFrame
                    }
                });
                var _animation = __webpack_require__( /*! ../common/core/animation */ 16826)
            },
        44229:
            /*!*************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/animation/fx.js ***!
              \*************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _animation = __webpack_require__( /*! ../common/core/animation */ 16826);
                exports.default = _animation.fx;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        27287:
            /*!******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/animation/presets.js ***!
              \******************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _animation = __webpack_require__( /*! ../common/core/animation */ 16826);
                exports.default = _animation.animationPresets;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        54830:
            /*!******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/animation/transition_executor.js ***!
              \******************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _animation = __webpack_require__( /*! ../common/core/animation */ 16826);
                exports.default = _animation.TransitionExecutor;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        27114:
            /*!******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/bundles/modules/common.charts.js ***!
              \******************************************************************************/
            function(module, __unused_webpack_exports, __webpack_require__) {
                const DevExpress = __webpack_require__( /*! ./core */ 92307);
                DevExpress.common = DevExpress.common || {};
                DevExpress.common.charts = __webpack_require__( /*! ../../common/charts */ 20153);
                module.exports = DevExpress.common.charts
            },
        92307:
            /*!*********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/bundles/modules/core.js ***!
              \*********************************************************************/
            function(module, __unused_webpack_exports, __webpack_require__) {
                const windowUtils = __webpack_require__( /*! ../../core/utils/window */ 3104);
                const window = windowUtils.getWindow();
                const DevExpress = window.DevExpress = window.DevExpress || {};
                const errors = DevExpress.errors = __webpack_require__( /*! ../../core/errors */ 87129);
                if (DevExpress._DEVEXTREME_BUNDLE_INITIALIZED) {
                    throw errors.Error("E0024")
                }
                DevExpress._DEVEXTREME_BUNDLE_INITIALIZED = true;
                DevExpress.clientExporter = __webpack_require__( /*! ../../exporter */ 73549);
                DevExpress.excelExporter = __webpack_require__( /*! ../../common/export/excel */ 54594);
                DevExpress.pdfExporter = __webpack_require__( /*! ../../common/export/pdf */ 92731);
                DevExpress.VERSION = __webpack_require__( /*! ../../core/version */ 1956).version;
                DevExpress.assertDevExtremeVersion = __webpack_require__( /*! ../../core/version_check */ 48367).c;
                DevExpress.Class = __webpack_require__( /*! ../../core/class */ 55620);
                DevExpress.DOMComponent = __webpack_require__( /*! ../../core/dom_component */ 97832);
                DevExpress.Component = __webpack_require__( /*! ../../core/component */ 17863).Component;
                DevExpress.registerComponent = __webpack_require__( /*! ../../core/component_registrator */ 92848);
                DevExpress.devices = __webpack_require__( /*! ../../common/core/environment */ 63705).devices;
                DevExpress.trial = __webpack_require__( /*! ../../core/trial_panel */ 71669);
                DevExpress.Color = __webpack_require__( /*! ../../color */ 43101);
                const animationFrame = __webpack_require__( /*! ../../common/core/animation/frame */ 84096);
                DevExpress.utils = {};
                DevExpress.utils.requestAnimationFrame = animationFrame.requestAnimationFrame;
                DevExpress.utils.cancelAnimationFrame = animationFrame.cancelAnimationFrame;
                DevExpress.utils.initMobileViewport = __webpack_require__( /*! ../../common/core/environment */ 63705).initMobileViewport;
                DevExpress.utils.getTimeZones = __webpack_require__( /*! ../../common/core/environment */ 63705).getTimeZones;
                DevExpress.utils.extendFromObject = __webpack_require__( /*! ../../core/utils/extend */ 52576).extendFromObject;
                DevExpress.utils.triggerShownEvent = __webpack_require__( /*! ../../common/core/events/visibility_change */ 18029).triggerShownEvent;
                DevExpress.utils.triggerHidingEvent = __webpack_require__( /*! ../../common/core/events/visibility_change */ 18029).triggerHidingEvent;
                DevExpress.utils.resetActiveElement = __webpack_require__( /*! ../../core/utils/dom */ 86858).resetActiveElement;
                DevExpress.utils.findBestMatches = __webpack_require__( /*! ../../core/utils/common */ 17781).findBestMatches;
                DevExpress.createQueue = __webpack_require__( /*! ../../core/utils/queue */ 65221).create;
                DevExpress.utils.dom = __webpack_require__( /*! ../../core/utils/dom */ 86858);
                DevExpress.utils.common = __webpack_require__( /*! ../../core/utils/common */ 17781);
                DevExpress.utils.date = __webpack_require__( /*! ../../core/utils/date */ 41380);
                DevExpress.utils.browser = __webpack_require__( /*! ../../core/utils/browser */ 48314);
                DevExpress.utils.inflector = __webpack_require__( /*! ../../core/utils/inflector */ 53124);
                DevExpress.utils.iterator = __webpack_require__( /*! ../../core/utils/iterator */ 21274);
                DevExpress.utils.readyCallbacks = __webpack_require__( /*! ../../core/utils/ready_callbacks */ 3122);
                DevExpress.utils.resizeCallbacks = __webpack_require__( /*! ../../core/utils/resize_callbacks */ 63283);
                DevExpress.utils.console = __webpack_require__( /*! ../../core/utils/console */ 31951);
                DevExpress.utils.string = __webpack_require__( /*! ../../core/utils/string */ 54497);
                DevExpress.utils.support = __webpack_require__( /*! ../../core/utils/support */ 4785);
                DevExpress.utils.ajax = __webpack_require__( /*! ../../core/utils/ajax */ 78670);
                DevExpress.viewPort = __webpack_require__( /*! ../../core/utils/view_port */ 55355).value;
                DevExpress.hideTopOverlay = __webpack_require__( /*! ../../common/core/environment */ 63705).hideTopOverlay;
                DevExpress.formatHelper = __webpack_require__( /*! ../../format_helper */ 2082);
                DevExpress.config = __webpack_require__( /*! ../../common */ 83077).config;
                DevExpress.animationPresets = __webpack_require__( /*! ../../common/core/animation/presets/presets */ 61310).presets;
                DevExpress.fx = __webpack_require__( /*! ../../common/core/animation */ 16826).fx;
                DevExpress.TransitionExecutor = __webpack_require__( /*! ../../common/core/animation/transition_executor/transition_executor */ 33054).TransitionExecutor;
                DevExpress.AnimationPresetCollection = __webpack_require__( /*! ../../common/core/animation/presets/presets */ 61310).PresetCollection;
                DevExpress.events = __webpack_require__( /*! ../../common/core/events */ 52391);
                DevExpress.events.click = __webpack_require__( /*! ../../common/core/events/click */ 64044);
                DevExpress.events.utils = __webpack_require__( /*! ../../common/core/events/utils */ 98834);
                DevExpress.events.GestureEmitter = __webpack_require__( /*! ../../common/core/events/gesture/emitter.gesture */ 85915);
                DevExpress.localization = __webpack_require__( /*! ../../common/core/localization */ 46795);
                DevExpress.templateRendered = __webpack_require__( /*! ../../core/templates/template_base */ 42186).renderedCallbacks;
                DevExpress.setTemplateEngine = __webpack_require__( /*! ../../core/templates/template_engine_registry */ 35155).setTemplateEngine;
                module.exports = DevExpress
            },
        11166:
            /*!****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/bundles/modules/core.legacy.js ***!
              \****************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                __webpack_require__( /*! ../../excel_exporter */ 6285);
                __webpack_require__( /*! ../../pdf_exporter */ 72134);
                __webpack_require__( /*! ../../mobile/hide_top_overlay */ 90270);
                __webpack_require__( /*! ../../mobile/init_mobile_viewport */ 21113);
                __webpack_require__( /*! ../../file_management/custom_provider */ 85096);
                __webpack_require__( /*! ../../file_management/error */ 46327);
                __webpack_require__( /*! ../../file_management/file_system_item */ 53093);
                __webpack_require__( /*! ../../file_management/object_provider */ 76856);
                __webpack_require__( /*! ../../file_management/provider_base */ 65266);
                __webpack_require__( /*! ../../file_management/remote_provider */ 80175);
                __webpack_require__( /*! ../../events */ 69786);
                __webpack_require__( /*! ../../time_zone_utils */ 53200);
                __webpack_require__( /*! ../../core/config */ 66636);
                __webpack_require__( /*! ../../core/devices */ 65951);
                __webpack_require__( /*! ../../core/set_template_engine */ 91366);
                __webpack_require__( /*! ../../core/templates/template */ 67872);
                __webpack_require__( /*! ../../animation/frame */ 81578);
                __webpack_require__( /*! ../../animation/fx */ 44229);
                __webpack_require__( /*! ../../animation/presets */ 27287);
                __webpack_require__( /*! ../../animation/transition_executor */ 54830);
                __webpack_require__( /*! ../../localization/globalize/core */ 16615);
                __webpack_require__( /*! ../../localization/globalize/message */ 30725);
                __webpack_require__( /*! ../../localization/globalize/number */ 36069);
                __webpack_require__( /*! ../../localization/globalize/date */ 94348);
                __webpack_require__( /*! ../../localization/globalize/currency */ 89207)
            },
        54844:
            /*!*********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/bundles/modules/data.js ***!
              \*********************************************************************/
            function(module, __unused_webpack_exports, __webpack_require__) {
                const DevExpress = __webpack_require__( /*! ./core */ 92307);
                const errors = __webpack_require__( /*! ../../core/errors */ 87129);
                module.exports = DevExpress.data = DevExpress.data || {};
                Object.defineProperty(DevExpress.data, "errorHandler", {
                    get: function() {
                        return __webpack_require__( /*! ../../common/data */ 11036).errorHandler
                    },
                    set: function(value) {
                        errors.log("W0003", "DevExpress.data", "errorHandler", "21.1", "Use the 'setErrorHandler' method instead");
                        __webpack_require__( /*! ../../common/data/errors */ 82812).setErrorHandler(value)
                    }
                });
                Object.defineProperty(DevExpress.data, "_errorHandler", {
                    get: function() {
                        return __webpack_require__( /*! ../../common/data/errors */ 82812).handleError
                    },
                    set: function(value) {
                        errors.log("W0003", "DevExpress.data", "_errorHandler", "21.1", "Use the 'setErrorHandler' method instead");
                        __webpack_require__( /*! ../../common/data/errors */ 82812).setErrorHandler(value)
                    }
                });
                DevExpress.data.setErrorHandler = __webpack_require__( /*! ../../common/data/errors */ 82812).setErrorHandler;
                DevExpress.data.DataSource = __webpack_require__( /*! ../../common/data/data_source */ 14479);
                DevExpress.data.query = __webpack_require__( /*! ../../common/data/query */ 30771);
                DevExpress.data.Store = __webpack_require__( /*! ../../data/abstract_store */ 77735);
                DevExpress.data.ArrayStore = __webpack_require__( /*! ../../common/data/array_store */ 80556);
                DevExpress.data.CustomStore = __webpack_require__( /*! ../../common/data/custom_store */ 63326).CustomStore;
                DevExpress.data.LocalStore = __webpack_require__( /*! ../../common/data/local_store */ 71790);
                DevExpress.data.base64_encode = __webpack_require__( /*! ../../common/data/utils */ 89358).base64_encode;
                DevExpress.data.applyChanges = __webpack_require__( /*! ../../common/data/apply_changes */ 99745);
                DevExpress.data.Guid = __webpack_require__( /*! ../../core/guid */ 19427);
                DevExpress.data.utils = {};
                DevExpress.data.utils.compileGetter = __webpack_require__( /*! ../../core/utils/data */ 31e3).compileGetter;
                DevExpress.data.utils.compileSetter = __webpack_require__( /*! ../../core/utils/data */ 31e3).compileSetter;
                DevExpress.EndpointSelector = __webpack_require__( /*! ../../common/data/endpoint_selector */ 44180);
                DevExpress.data.queryImpl = __webpack_require__( /*! ../../common/data/query_implementation */ 84816).queryImpl;
                DevExpress.data.queryAdapters = __webpack_require__( /*! ../../common/data/query_adapters */ 5842);
                const dataUtils = __webpack_require__( /*! ../../common/data/utils */ 89358);
                DevExpress.data.utils.normalizeBinaryCriterion = dataUtils.normalizeBinaryCriterion;
                DevExpress.data.utils.normalizeSortingInfo = dataUtils.normalizeSortingInfo;
                DevExpress.data.utils.errorMessageFromXhr = dataUtils.errorMessageFromXhr;
                DevExpress.data.utils.aggregators = dataUtils.aggregators;
                DevExpress.data.utils.keysEqual = dataUtils.keysEqual;
                DevExpress.data.utils.isDisjunctiveOperator = dataUtils.isDisjunctiveOperator;
                DevExpress.data.utils.isConjunctiveOperator = dataUtils.isConjunctiveOperator;
                DevExpress.data.utils.processRequestResultLock = dataUtils.processRequestResultLock;
                DevExpress.data.utils.toComparable = __webpack_require__( /*! ../../core/utils/data */ 31e3).toComparable;
                DevExpress.data.utils.multiLevelGroup = __webpack_require__( /*! ../../common/data/store_helper */ 66177).multiLevelGroup;
                DevExpress.data.utils.arrangeSortingInfo = __webpack_require__( /*! ../../common/data/store_helper */ 66177).arrangeSortingInfo;
                DevExpress.data.utils.normalizeDataSourceOptions = __webpack_require__( /*! ../../common/data/data_source/utils */ 97169).normalizeDataSourceOptions
            },
        23555:
            /*!****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/bundles/modules/data.legacy.js ***!
              \****************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                __webpack_require__( /*! ../../data/errors */ 74760);
                __webpack_require__( /*! ../../data/data_source */ 47283);
                __webpack_require__( /*! ../../data/query */ 22567);
                __webpack_require__( /*! ../../data/abstract_store */ 77735);
                __webpack_require__( /*! ../../data/array_store */ 67664);
                __webpack_require__( /*! ../../data/custom_store */ 37754);
                __webpack_require__( /*! ../../data/local_store */ 1242);
                __webpack_require__( /*! ../../data/utils */ 99354);
                __webpack_require__( /*! ../../data/apply_changes */ 50797);
                __webpack_require__( /*! ../../core/guid */ 19427);
                __webpack_require__( /*! ../../core/utils/data */ 31e3);
                __webpack_require__( /*! ../../data/endpoint_selector */ 73192);
                __webpack_require__( /*! ../../data/utils */ 99354)
            },
        71043:
            /*!***************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/bundles/modules/data.odata.js ***!
              \***************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                __webpack_require__( /*! ./data */ 54844);
                DevExpress.data.ODataStore = __webpack_require__( /*! ../../common/data/odata/store */ 29284);
                DevExpress.data.ODataContext = __webpack_require__( /*! ../../common/data/odata/context */ 34170);
                DevExpress.data.utils = DevExpress.data.utils || {};
                DevExpress.data.utils.odata = {};
                DevExpress.data.utils.odata.keyConverters = __webpack_require__( /*! ../../common/data/odata/utils */ 8056).keyConverters;
                DevExpress.data.EdmLiteral = __webpack_require__( /*! ../../common/data/odata/utils */ 8056).EdmLiteral;
                const ODataUtilsModule = __webpack_require__( /*! ../../common/data/odata/utils */ 8056);
                DevExpress.data.utils.odata.serializePropName = ODataUtilsModule.serializePropName;
                DevExpress.data.utils.odata.serializeValue = ODataUtilsModule.serializeValue;
                DevExpress.data.utils.odata.serializeKey = ODataUtilsModule.serializeKey;
                DevExpress.data.utils.odata.sendRequest = ODataUtilsModule.sendRequest;
                DevExpress.data.queryAdapters = DevExpress.data.queryAdapters || {};
                DevExpress.data.queryAdapters.odata = __webpack_require__( /*! ../../common/data/odata/query_adapter */ 65001).odata
            },
        42190:
            /*!**********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/bundles/modules/data.odata.legacy.js ***!
              \**********************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                __webpack_require__( /*! ./data */ 54844);
                __webpack_require__( /*! ../../data/odata/store */ 25184);
                __webpack_require__( /*! ../../data/odata/context */ 87062);
                __webpack_require__( /*! ../../data/odata/utils */ 57076)
            },
        67712:
            /*!***************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/bundles/modules/parts/core.js ***!
              \***************************************************************************/
            function(module, __unused_webpack_exports, __webpack_require__) {
                const DevExpress = __webpack_require__( /*! ../../../bundles/modules/core */ 92307);
                __webpack_require__( /*! ../../../bundles/modules/core.legacy */ 11166);
                __webpack_require__( /*! ../../../integration/jquery */ 21001);
                __webpack_require__( /*! ../../../integration/knockout */ 34563);
                __webpack_require__( /*! ../../../common/core/localization/globalize/core */ 23805);
                __webpack_require__( /*! ../../../common/core/localization/globalize/message */ 84207);
                __webpack_require__( /*! ../../../common/core/localization/globalize/number */ 13203);
                __webpack_require__( /*! ../../../common/core/localization/globalize/date */ 99862);
                __webpack_require__( /*! ../../../common/core/localization/globalize/currency */ 869);
                __webpack_require__( /*! ../../../common/core/events/click */ 64044);
                __webpack_require__( /*! ../../../common/core/events/contextmenu */ 80248);
                __webpack_require__( /*! ../../../common/core/events/double_click */ 5636);
                __webpack_require__( /*! ../../../common/core/events/drag */ 59144);
                __webpack_require__( /*! ../../../common/core/events/hold */ 68095);
                __webpack_require__( /*! ../../../common/core/events/hover */ 638);
                __webpack_require__( /*! ../../../common/core/events/pointer */ 89797);
                __webpack_require__( /*! ../../../common/core/events/swipe */ 80250);
                __webpack_require__( /*! ../../../common/core/events/transform */ 37008);
                module.exports = DevExpress
            },
        51323:
            /*!***************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/bundles/modules/parts/data.js ***!
              \***************************************************************************/
            function(module, __unused_webpack_exports, __webpack_require__) {
                const DevExpress = __webpack_require__( /*! ./core */ 67712);
                const data = DevExpress.data = __webpack_require__( /*! ../../../bundles/modules/data */ 54844);
                __webpack_require__( /*! ../../../bundles/modules/data.legacy */ 23555);
                data.odata = __webpack_require__( /*! ../../../bundles/modules/data.odata */ 71043);
                __webpack_require__( /*! ../../../bundles/modules/data.odata.legacy */ 42190);
                module.exports = data
            },
        90750:
            /*!**************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/bundles/modules/parts/viz.js ***!
              \**************************************************************************/
            function(module, __unused_webpack_exports, __webpack_require__) {
                const DevExpress = __webpack_require__( /*! ./core */ 67712);
                __webpack_require__( /*! ./data */ 51323);
                __webpack_require__( /*! ../../../bundles/modules/common.charts */ 27114);
                const viz = DevExpress.viz = __webpack_require__( /*! ../../../bundles/modules/viz */ 2211);
                viz.currentTheme = __webpack_require__( /*! ../../../viz/themes */ 84560).currentTheme;
                viz.registerTheme = __webpack_require__( /*! ../../../viz/themes */ 84560).registerTheme;
                viz.exportFromMarkup = __webpack_require__( /*! ../../../viz/export */ 88168).exportFromMarkup;
                viz.getMarkup = __webpack_require__( /*! ../../../viz/export */ 88168).getMarkup;
                viz.exportWidgets = __webpack_require__( /*! ../../../viz/export */ 88168).exportWidgets;
                viz.currentPalette = __webpack_require__( /*! ../../../viz/palette */ 9735).currentPalette;
                viz.getPalette = __webpack_require__( /*! ../../../viz/palette */ 9735).getPalette;
                viz.generateColors = __webpack_require__( /*! ../../../viz/palette */ 9735).generateColors;
                viz.registerPalette = __webpack_require__( /*! ../../../viz/palette */ 9735).registerPalette;
                viz.refreshTheme = __webpack_require__( /*! ../../../viz/themes */ 84560).refreshTheme;
                viz.dxChart = __webpack_require__( /*! ../../../viz/chart */ 26408);
                viz.dxPieChart = __webpack_require__( /*! ../../../viz/pie_chart */ 4381);
                viz.dxPolarChart = __webpack_require__( /*! ../../../viz/polar_chart */ 11247);
                viz.dxLinearGauge = __webpack_require__( /*! ../../../viz/linear_gauge */ 4655);
                viz.dxCircularGauge = __webpack_require__( /*! ../../../viz/circular_gauge */ 89463);
                viz.dxBarGauge = __webpack_require__( /*! ../../../viz/bar_gauge */ 84601);
                viz.dxRangeSelector = __webpack_require__( /*! ../../../viz/range_selector */ 30185);
                viz.dxVectorMap = __webpack_require__( /*! ../../../viz/vector_map */ 85148);
                viz.map = {};
                viz.map.sources = {};
                viz.map.projection = __webpack_require__( /*! ../../../viz/vector_map/projection */ 99094).projection;
                viz.dxSparkline = __webpack_require__( /*! ../../../viz/sparkline */ 71871);
                viz.dxBullet = __webpack_require__( /*! ../../../viz/bullet */ 75954);
                viz.dxTreeMap = __webpack_require__( /*! ../../../viz/tree_map */ 61015);
                viz.dxFunnel = __webpack_require__( /*! ../../../viz/funnel */ 61434);
                viz.dxSankey = __webpack_require__( /*! ../../../viz/sankey */ 37755);
                viz.getTheme = __webpack_require__( /*! ../../../viz/themes */ 84560).getTheme;
                viz.findTheme = __webpack_require__( /*! ../../../viz/themes */ 84560).getTheme;
                viz.refreshAll = __webpack_require__( /*! ../../../viz/themes */ 84560).refreshTheme;
                viz.refreshPaths = __webpack_require__( /*! ../../../viz/utils */ 2225).refreshPaths;
                viz.gauges = {
                    __internals: {}
                };
                viz._dashboard = {};
                viz._dashboard.Renderer = __webpack_require__( /*! ../../../viz/core/renderers/renderer */ 63022).Renderer;
                viz._dashboard.SvgElement = __webpack_require__( /*! ../../../viz/core/renderers/renderer */ 63022).SvgElement;
                viz._dashboard.patchFontOptions = __webpack_require__( /*! ../../../viz/core/utils */ 28779).patchFontOptions;
                module.exports = viz
            },
        2211:
            /*!********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/bundles/modules/viz.js ***!
              \********************************************************************/
            function(module, __unused_webpack_exports, __webpack_require__) {
                __webpack_require__( /*! ./core */ 92307);
                module.exports = DevExpress.viz = DevExpress.viz || {}
            },
        43101:
            /*!******************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/color.js ***!
              \******************************************************/
            function(module, exports) {
                exports.default = void 0;
                const standardColorNames = {
                    aliceblue: "f0f8ff",
                    antiquewhite: "faebd7",
                    aqua: "00ffff",
                    aquamarine: "7fffd4",
                    azure: "f0ffff",
                    beige: "f5f5dc",
                    bisque: "ffe4c4",
                    black: "000000",
                    blanchedalmond: "ffebcd",
                    blue: "0000ff",
                    blueviolet: "8a2be2",
                    brown: "a52a2a",
                    burlywood: "deb887",
                    cadetblue: "5f9ea0",
                    chartreuse: "7fff00",
                    chocolate: "d2691e",
                    coral: "ff7f50",
                    cornflowerblue: "6495ed",
                    cornsilk: "fff8dc",
                    crimson: "dc143c",
                    cyan: "00ffff",
                    darkblue: "00008b",
                    darkcyan: "008b8b",
                    darkgoldenrod: "b8860b",
                    darkgray: "a9a9a9",
                    darkgreen: "006400",
                    darkgrey: "a9a9a9",
                    darkkhaki: "bdb76b",
                    darkmagenta: "8b008b",
                    darkolivegreen: "556b2f",
                    darkorange: "ff8c00",
                    darkorchid: "9932cc",
                    darkred: "8b0000",
                    darksalmon: "e9967a",
                    darkseagreen: "8fbc8f",
                    darkslateblue: "483d8b",
                    darkslategray: "2f4f4f",
                    darkslategrey: "2f4f4f",
                    darkturquoise: "00ced1",
                    darkviolet: "9400d3",
                    deeppink: "ff1493",
                    deepskyblue: "00bfff",
                    dimgray: "696969",
                    dimgrey: "696969",
                    dodgerblue: "1e90ff",
                    feldspar: "d19275",
                    firebrick: "b22222",
                    floralwhite: "fffaf0",
                    forestgreen: "228b22",
                    fuchsia: "ff00ff",
                    gainsboro: "dcdcdc",
                    ghostwhite: "f8f8ff",
                    gold: "ffd700",
                    goldenrod: "daa520",
                    gray: "808080",
                    green: "008000",
                    greenyellow: "adff2f",
                    grey: "808080",
                    honeydew: "f0fff0",
                    hotpink: "ff69b4",
                    indianred: "cd5c5c",
                    indigo: "4b0082",
                    ivory: "fffff0",
                    khaki: "f0e68c",
                    lavender: "e6e6fa",
                    lavenderblush: "fff0f5",
                    lawngreen: "7cfc00",
                    lemonchiffon: "fffacd",
                    lightblue: "add8e6",
                    lightcoral: "f08080",
                    lightcyan: "e0ffff",
                    lightgoldenrodyellow: "fafad2",
                    lightgray: "d3d3d3",
                    lightgreen: "90ee90",
                    lightgrey: "d3d3d3",
                    lightpink: "ffb6c1",
                    lightsalmon: "ffa07a",
                    lightseagreen: "20b2aa",
                    lightskyblue: "87cefa",
                    lightslateblue: "8470ff",
                    lightslategray: "778899",
                    lightslategrey: "778899",
                    lightsteelblue: "b0c4de",
                    lightyellow: "ffffe0",
                    lime: "00ff00",
                    limegreen: "32cd32",
                    linen: "faf0e6",
                    magenta: "ff00ff",
                    maroon: "800000",
                    mediumaquamarine: "66cdaa",
                    mediumblue: "0000cd",
                    mediumorchid: "ba55d3",
                    mediumpurple: "9370d8",
                    mediumseagreen: "3cb371",
                    mediumslateblue: "7b68ee",
                    mediumspringgreen: "00fa9a",
                    mediumturquoise: "48d1cc",
                    mediumvioletred: "c71585",
                    midnightblue: "191970",
                    mintcream: "f5fffa",
                    mistyrose: "ffe4e1",
                    moccasin: "ffe4b5",
                    navajowhite: "ffdead",
                    navy: "000080",
                    oldlace: "fdf5e6",
                    olive: "808000",
                    olivedrab: "6b8e23",
                    orange: "ffa500",
                    orangered: "ff4500",
                    orchid: "da70d6",
                    palegoldenrod: "eee8aa",
                    palegreen: "98fb98",
                    paleturquoise: "afeeee",
                    palevioletred: "d87093",
                    papayawhip: "ffefd5",
                    peachpuff: "ffdab9",
                    peru: "cd853f",
                    pink: "ffc0cb",
                    plum: "dda0dd",
                    powderblue: "b0e0e6",
                    purple: "800080",
                    rebeccapurple: "663399",
                    red: "ff0000",
                    rosybrown: "bc8f8f",
                    royalblue: "4169e1",
                    saddlebrown: "8b4513",
                    salmon: "fa8072",
                    sandybrown: "f4a460",
                    seagreen: "2e8b57",
                    seashell: "fff5ee",
                    sienna: "a0522d",
                    silver: "c0c0c0",
                    skyblue: "87ceeb",
                    slateblue: "6a5acd",
                    slategray: "708090",
                    slategrey: "708090",
                    snow: "fffafa",
                    springgreen: "00ff7f",
                    steelblue: "4682b4",
                    tan: "d2b48c",
                    teal: "008080",
                    thistle: "d8bfd8",
                    tomato: "ff6347",
                    turquoise: "40e0d0",
                    violet: "ee82ee",
                    violetred: "d02090",
                    wheat: "f5deb3",
                    white: "ffffff",
                    whitesmoke: "f5f5f5",
                    yellow: "ffff00",
                    yellowgreen: "9acd32"
                };
                const standardColorTypes = [{
                    re: /^rgb\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})\)$/,
                    process: function(colorString) {
                        return [parseInt(colorString[1], 10), parseInt(colorString[2], 10), parseInt(colorString[3], 10)]
                    }
                }, {
                    re: /^rgba\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3}),\s*(\d*\.*\d+)\)$/,
                    process: function(colorString) {
                        return [parseInt(colorString[1], 10), parseInt(colorString[2], 10), parseInt(colorString[3], 10), parseFloat(colorString[4])]
                    }
                }, {
                    re: /^#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})$/,
                    process: function(colorString) {
                        return [parseInt(colorString[1], 16), parseInt(colorString[2], 16), parseInt(colorString[3], 16)]
                    }
                }, {
                    re: /^#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})$/,
                    process: function(colorString) {
                        return [parseInt(colorString[1], 16), parseInt(colorString[2], 16), parseInt(colorString[3], 16), Number((parseInt(colorString[4], 16) / 255).toFixed(2))]
                    }
                }, {
                    re: /^#([a-f0-9]{1})([a-f0-9]{1})([a-f0-9]{1})([a-f0-9]{1})$/,
                    process: function(colorString) {
                        return [parseInt(colorString[1] + colorString[1], 16), parseInt(colorString[2] + colorString[2], 16), parseInt(colorString[3] + colorString[3], 16), Number((parseInt(colorString[4] + colorString[4], 16) / 255).toFixed(2))]
                    }
                }, {
                    re: /^#([a-f0-9]{1})([a-f0-9]{1})([a-f0-9]{1})$/,
                    process: function(colorString) {
                        return [parseInt(colorString[1] + colorString[1], 16), parseInt(colorString[2] + colorString[2], 16), parseInt(colorString[3] + colorString[3], 16)]
                    }
                }, {
                    re: /^hsv\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})\)$/,
                    process: function(colorString) {
                        const h = parseInt(colorString[1], 10);
                        const s = parseInt(colorString[2], 10);
                        const v = parseInt(colorString[3], 10);
                        const rgb = hsvToRgb(h, s, v);
                        return [rgb[0], rgb[1], rgb[2], 1, [h, s, v]]
                    }
                }, {
                    re: /^hsl\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})\)$/,
                    process: function(colorString) {
                        const h = parseInt(colorString[1], 10);
                        const s = parseInt(colorString[2], 10);
                        const l = parseInt(colorString[3], 10);
                        const rgb = hslToRgb(h, s, l);
                        return [rgb[0], rgb[1], rgb[2], 1, null, [h, s, l]]
                    }
                }];
                const _round = Math.round;

                function Color(value) {
                    this.baseColor = value;
                    let color;
                    if (value) {
                        color = String(value).toLowerCase().replace(/ /g, "");
                        color = standardColorNames[color] ? "#" + standardColorNames[color] : color;
                        color = function(color) {
                            if ("transparent" === color) {
                                return [0, 0, 0, 0]
                            }
                            let i = 0;
                            const ii = standardColorTypes.length;
                            let str;
                            for (; i < ii; ++i) {
                                str = standardColorTypes[i].re.exec(color);
                                if (str) {
                                    return standardColorTypes[i].process(str)
                                }
                            }
                            return null
                        }(color)
                    }
                    if (!color) {
                        this.colorIsInvalid = true
                    }
                    color = color || {};
                    this.r = normalize(color[0]);
                    this.g = normalize(color[1]);
                    this.b = normalize(color[2]);
                    this.a = normalize(color[3], 1, 1);
                    if (color[4]) {
                        this.hsv = {
                            h: color[4][0],
                            s: color[4][1],
                            v: color[4][2]
                        }
                    } else {
                        this.hsv = function(r, g, b) {
                            const max = Math.max(r, g, b);
                            const min = Math.min(r, g, b);
                            const delta = max - min;
                            let H;
                            let S;
                            let V = max;
                            S = 0 === max ? 0 : 1 - min / max;
                            if (max === min) {
                                H = 0
                            } else {
                                switch (max) {
                                    case r:
                                        H = (g - b) / delta * 60;
                                        if (g < b) {
                                            H += 360
                                        }
                                        break;
                                    case g:
                                        H = (b - r) / delta * 60 + 120;
                                        break;
                                    case b:
                                        H = (r - g) / delta * 60 + 240
                                }
                            }
                            S *= 100;
                            V *= 100 / 255;
                            return {
                                h: Math.round(H),
                                s: Math.round(S),
                                v: Math.round(V)
                            }
                        }(this.r, this.g, this.b)
                    }
                    if (color[5]) {
                        this.hsl = {
                            h: color[5][0],
                            s: color[5][1],
                            l: color[5][2]
                        }
                    } else {
                        this.hsl = function(r, g, b) {
                            r = convertTo01Bounds(r, 255);
                            g = convertTo01Bounds(g, 255);
                            b = convertTo01Bounds(b, 255);
                            const max = Math.max(r, g, b);
                            const min = Math.min(r, g, b);
                            const maxMinSum = max + min;
                            let h;
                            let s;
                            const l = maxMinSum / 2;
                            if (max === min) {
                                h = s = 0
                            } else {
                                const delta = max - min;
                                if (l > .5) {
                                    s = delta / (2 - maxMinSum)
                                } else {
                                    s = delta / maxMinSum
                                }
                                h = function(r, g, b, delta) {
                                    const max = Math.max(r, g, b);
                                    switch (max) {
                                        case r:
                                            return (g - b) / delta + (g < b ? 6 : 0);
                                        case g:
                                            return (b - r) / delta + 2;
                                        case b:
                                            return (r - g) / delta + 4
                                    }
                                }(r, g, b, delta);
                                h /= 6
                            }
                            return {
                                h: _round(360 * h),
                                s: _round(100 * s),
                                l: _round(100 * l)
                            }
                        }(this.r, this.g, this.b)
                    }
                }

                function normalize(colorComponent, def, max) {
                    def = def || 0;
                    max = max || 255;
                    return colorComponent < 0 || isNaN(colorComponent) ? def : colorComponent > max ? max : colorComponent
                }

                function hsvToRgb(h, s, v) {
                    const index = Math.floor(h % 360 / 60);
                    const vMin = (100 - s) * v / 100;
                    const a = h % 60 / 60 * (v - vMin);
                    const vInc = vMin + a;
                    const vDec = v - a;
                    let r;
                    let g;
                    let b;
                    switch (index) {
                        case 0:
                            r = v;
                            g = vInc;
                            b = vMin;
                            break;
                        case 1:
                            r = vDec;
                            g = v;
                            b = vMin;
                            break;
                        case 2:
                            r = vMin;
                            g = v;
                            b = vInc;
                            break;
                        case 3:
                            r = vMin;
                            g = vDec;
                            b = v;
                            break;
                        case 4:
                            r = vInc;
                            g = vMin;
                            b = v;
                            break;
                        case 5:
                            r = v;
                            g = vMin;
                            b = vDec
                    }
                    return [Math.round(2.55 * r), Math.round(2.55 * g), Math.round(2.55 * b)]
                }

                function makeColorTint(colorPart, h) {
                    let colorTint = h;
                    if ("r" === colorPart) {
                        colorTint = h + 1 / 3
                    }
                    if ("b" === colorPart) {
                        colorTint = h - 1 / 3
                    }
                    return colorTint
                }

                function hueToRgb(p, q, colorTint) {
                    colorTint = function(colorTint) {
                        if (colorTint < 0) {
                            colorTint += 1
                        }
                        if (colorTint > 1) {
                            colorTint -= 1
                        }
                        return colorTint
                    }(colorTint);
                    if (colorTint < 1 / 6) {
                        return p + 6 * (q - p) * colorTint
                    }
                    if (colorTint < .5) {
                        return q
                    }
                    if (colorTint < 2 / 3) {
                        return p + (q - p) * (2 / 3 - colorTint) * 6
                    }
                    return p
                }

                function hslToRgb(h, s, l) {
                    let r;
                    let g;
                    let b;
                    h = convertTo01Bounds(h, 360);
                    s = convertTo01Bounds(s, 100);
                    l = convertTo01Bounds(l, 100);
                    if (0 === s) {
                        r = g = b = l
                    } else {
                        const q = l < .5 ? l * (1 + s) : l + s - l * s;
                        const p = 2 * l - q;
                        r = hueToRgb(p, q, makeColorTint("r", h));
                        g = hueToRgb(p, q, makeColorTint("g", h));
                        b = hueToRgb(p, q, makeColorTint("b", h))
                    }
                    return [_round(255 * r), _round(255 * g), _round(255 * b)]
                }

                function convertTo01Bounds(n, max) {
                    n = Math.min(max, Math.max(0, parseFloat(n)));
                    if (Math.abs(n - max) < 1e-6) {
                        return 1
                    }
                    return n % max / parseFloat(max)
                }

                function isIntegerBetweenMinAndMax(number, min, max) {
                    min = min || 0;
                    max = max || 255;
                    if (number % 1 !== 0 || number < min || number > max || "number" !== typeof number || isNaN(number)) {
                        return false
                    }
                    return true
                }
                Color.prototype = {
                    constructor: Color,
                    highlight: function(step) {
                        step = step || 10;
                        return this.alter(step).toHex()
                    },
                    darken: function(step) {
                        step = step || 10;
                        return this.alter(-step).toHex()
                    },
                    alter: function(step) {
                        const result = new Color;
                        result.r = normalize(this.r + step);
                        result.g = normalize(this.g + step);
                        result.b = normalize(this.b + step);
                        return result
                    },
                    blend: function(blendColor, opacity) {
                        const other = blendColor instanceof Color ? blendColor : new Color(blendColor);
                        const result = new Color;
                        result.r = normalize(_round(this.r * (1 - opacity) + other.r * opacity));
                        result.g = normalize(_round(this.g * (1 - opacity) + other.g * opacity));
                        result.b = normalize(_round(this.b * (1 - opacity) + other.b * opacity));
                        return result
                    },
                    toHex: function() {
                        return r = this.r, g = this.g, b = this.b, "#" + (16777216 | r << 16 | g << 8 | b).toString(16).slice(1);
                        var r, g, b
                    },
                    getPureColor: function() {
                        const rgb = hsvToRgb(this.hsv.h, 100, 100);
                        return new Color("rgb(" + rgb.join(",") + ")")
                    },
                    isValidHex: function(hex) {
                        return /(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(hex)
                    },
                    isValidRGB: function(r, g, b) {
                        if (!isIntegerBetweenMinAndMax(r) || !isIntegerBetweenMinAndMax(g) || !isIntegerBetweenMinAndMax(b)) {
                            return false
                        }
                        return true
                    },
                    isValidAlpha: function(a) {
                        if (isNaN(a) || a < 0 || a > 1 || "number" !== typeof a) {
                            return false
                        }
                        return true
                    },
                    colorIsInvalid: false,
                    fromHSL: function(hsl) {
                        const color = new Color;
                        const rgb = hslToRgb(hsl.h, hsl.s, hsl.l);
                        color.r = rgb[0];
                        color.g = rgb[1];
                        color.b = rgb[2];
                        return color
                    }
                };
                exports.default = Color;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        83077:
            /*!*******************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common.js ***!
              \*******************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "Guid", {
                    enumerable: true,
                    get: function() {
                        return _guid.default
                    }
                });
                Object.defineProperty(exports, "config", {
                    enumerable: true,
                    get: function() {
                        return _config.default
                    }
                });
                Object.defineProperty(exports, "setTemplateEngine", {
                    enumerable: true,
                    get: function() {
                        return _set_template_engine.default
                    }
                });
                var _config = _interopRequireDefault(__webpack_require__( /*! ./common/config */ 66518));
                var _guid = _interopRequireDefault(__webpack_require__( /*! ./common/guid */ 71037));
                var _set_template_engine = _interopRequireDefault(__webpack_require__( /*! ./common/set_template_engine */ 32480));

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
            },
        20153:
            /*!**************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/charts.js ***!
              \**************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "registerGradient", {
                    enumerable: true,
                    get: function() {
                        return _m_charts.registerGradient
                    }
                });
                Object.defineProperty(exports, "registerPattern", {
                    enumerable: true,
                    get: function() {
                        return _m_charts.registerPattern
                    }
                });
                var _m_charts = __webpack_require__( /*! ../__internal/common/m_charts */ 55351)
            },
        66518:
            /*!**************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/config.js ***!
              \**************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _m_config = (e = __webpack_require__( /*! ../__internal/core/m_config */ 34338), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                exports.default = _m_config.default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        16826:
            /*!**********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/core/animation.js ***!
              \**********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "TransitionExecutor", {
                    enumerable: true,
                    get: function() {
                        return _transition_executor.default
                    }
                });
                Object.defineProperty(exports, "animationPresets", {
                    enumerable: true,
                    get: function() {
                        return _presets.default
                    }
                });
                Object.defineProperty(exports, "cancelAnimationFrame", {
                    enumerable: true,
                    get: function() {
                        return _frame.cancelAnimationFrame
                    }
                });
                Object.defineProperty(exports, "fx", {
                    enumerable: true,
                    get: function() {
                        return _fx.default
                    }
                });
                Object.defineProperty(exports, "requestAnimationFrame", {
                    enumerable: true,
                    get: function() {
                        return _frame.requestAnimationFrame
                    }
                });
                var _frame = __webpack_require__( /*! ./animation/frame */ 84096);
                var _fx = _interopRequireDefault(__webpack_require__( /*! ./animation/fx */ 27075));
                var _presets = _interopRequireDefault(__webpack_require__( /*! ./animation/presets */ 58049));
                var _transition_executor = _interopRequireDefault(__webpack_require__( /*! ./animation/transition_executor */ 94680));

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
            },
        88424:
            /*!*****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/core/animation/easing.js ***!
              \*****************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.convertTransitionTimingFuncToEasing = void 0;
                exports.getEasing = function(name) {
                    return easing[name]
                };
                exports.setEasing = function(value) {
                    easing = value
                };
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528);
                const CSS_TRANSITION_EASING_REGEX = /cubic-bezier\((\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\)/;
                const TransitionTimingFuncMap = {
                    linear: "cubic-bezier(0, 0, 1, 1)",
                    swing: "cubic-bezier(0.445, 0.05, 0.55, 0.95)",
                    ease: "cubic-bezier(0.25, 0.1, 0.25, 1)",
                    "ease-in": "cubic-bezier(0.42, 0, 1, 1)",
                    "ease-out": "cubic-bezier(0, 0, 0.58, 1)",
                    "ease-in-out": "cubic-bezier(0.42, 0, 0.58, 1)"
                };
                const polynomBezier = function(x1, y1, x2, y2) {
                    const Cx = 3 * x1;
                    const Bx = 3 * (x2 - x1) - Cx;
                    const Ax = 1 - Cx - Bx;
                    const Cy = 3 * y1;
                    const By = 3 * (y2 - y1) - Cy;
                    const Ay = 1 - Cy - By;
                    const bezierX = function(t) {
                        return t * (Cx + t * (Bx + t * Ax))
                    };
                    const derivativeX = function(t) {
                        return Cx + t * (2 * Bx + 3 * t * Ax)
                    };
                    return function(t) {
                        return function(t) {
                            return t * (Cy + t * (By + t * Ay))
                        }(function(t) {
                            let x = t;
                            let i = 0;
                            let z;
                            while (i < 14) {
                                z = bezierX(x) - t;
                                if (Math.abs(z) < .001) {
                                    break
                                }
                                x -= z / derivativeX(x);
                                i++
                            }
                            return x
                        }(t))
                    }
                };
                let easing = {};
                exports.convertTransitionTimingFuncToEasing = function(cssTransitionEasing) {
                    cssTransitionEasing = TransitionTimingFuncMap[cssTransitionEasing] || cssTransitionEasing;
                    let coeffs = cssTransitionEasing.match(CSS_TRANSITION_EASING_REGEX);
                    let forceName;
                    if (!coeffs) {
                        forceName = "linear";
                        coeffs = TransitionTimingFuncMap[forceName].match(CSS_TRANSITION_EASING_REGEX)
                    }
                    coeffs = coeffs.slice(1, 5);
                    for (let i = 0; i < coeffs.length; i++) {
                        coeffs[i] = parseFloat(coeffs[i])
                    }
                    const easingName = forceName || "cubicbezier_" + coeffs.join("_").replace(/\./g, "p");
                    if (!(0, _type.isFunction)(easing[easingName])) {
                        easing[easingName] = function(x, t, b, c, d) {
                            return c * polynomBezier(coeffs[0], coeffs[1], coeffs[2], coeffs[3])(t / d) + b
                        }
                    }
                    return easingName
                }
            },
        84096:
            /*!****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/core/animation/frame.js ***!
              \****************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.cancelAnimationFrame = function() {
                    setAnimationFrameMethods();
                    cancel.apply(window, arguments)
                };
                exports.requestAnimationFrame = function() {
                    setAnimationFrameMethods();
                    return request.apply(window, arguments)
                };
                var _window = __webpack_require__( /*! ../../../core/utils/window */ 3104);
                var _call_once = (e = __webpack_require__( /*! ../../../core/utils/call_once */ 13630), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                const window = (0, _window.hasWindow)() ? (0, _window.getWindow)() : {};
                let request = function(callback) {
                    return setTimeout(callback, 16.666666666666668)
                };
                let cancel = function(requestID) {
                    clearTimeout(requestID)
                };
                const setAnimationFrameMethods = (0, _call_once.default)((function() {
                    const nativeRequest = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame;
                    const nativeCancel = window.cancelAnimationFrame || window.webkitCancelAnimationFrame || window.mozCancelAnimationFrame || window.oCancelAnimationFrame || window.msCancelAnimationFrame;
                    if (nativeRequest && nativeCancel) {
                        request = nativeRequest;
                        cancel = nativeCancel
                    }
                }))
            },
        27075:
            /*!*************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/core/animation/fx.js ***!
              \*************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553));
                var _window = __webpack_require__( /*! ../../../core/utils/window */ 3104);
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../events/core/events_engine */ 92774));
                var _errors = _interopRequireDefault(__webpack_require__( /*! ../../../core/errors */ 87129));
                var _element = __webpack_require__( /*! ../../../core/element */ 61404);
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576);
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528);
                var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274);
                var _translator = __webpack_require__( /*! ./translator */ 88603);
                var _easing = __webpack_require__( /*! ./easing */ 88424);
                var _frame = __webpack_require__( /*! ./frame */ 84096);
                var _m_support = _interopRequireDefault(__webpack_require__( /*! ../../../__internal/core/utils/m_support */ 85991));
                var _position = _interopRequireDefault(__webpack_require__( /*! ./position */ 3030));
                var _remove = __webpack_require__( /*! ../events/remove */ 28630);
                var _index = __webpack_require__( /*! ../events/utils/index */ 98834);
                var _deferred = __webpack_require__( /*! ../../../core/utils/deferred */ 87739);
                var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781);

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const window = (0, _window.getWindow)();
                const removeEventName = (0, _index.addNamespace)(_remove.removeEvent, "dxFX");
                const RELATIVE_VALUE_REGEX = /^([+-])=(.*)/i;
                const TransitionAnimationStrategy = {
                    initAnimation: function($element, config) {
                        $element.css({
                            transitionProperty: "none"
                        });
                        if ("string" === typeof config.from) {
                            $element.addClass(config.from)
                        } else {
                            setProps($element, config.from)
                        }
                        const that = this;
                        const deferred = new _deferred.Deferred;
                        const cleanupWhen = config.cleanupWhen;
                        config.transitionAnimation = {
                            deferred: deferred,
                            finish: function() {
                                that._finishTransition($element);
                                if (cleanupWhen) {
                                    (0, _deferred.when)(deferred, cleanupWhen).always((function() {
                                        that._cleanup($element, config)
                                    }))
                                } else {
                                    that._cleanup($element, config)
                                }
                                deferred.resolveWith($element, [config, $element])
                            }
                        };
                        this._completeAnimationCallback($element, config).done((function() {
                            config.transitionAnimation.finish()
                        })).fail((function() {
                            deferred.rejectWith($element, [config, $element])
                        }));
                        if (!config.duration) {
                            config.transitionAnimation.finish()
                        }
                        $element.css("transform")
                    },
                    animate: function($element, config) {
                        this._startAnimation($element, config);
                        return config.transitionAnimation.deferred.promise()
                    },
                    _completeAnimationCallback: function($element, config) {
                        const that = this;
                        const startTime = Date.now() + config.delay;
                        const deferred = new _deferred.Deferred;
                        const transitionEndFired = new _deferred.Deferred;
                        const simulatedTransitionEndFired = new _deferred.Deferred;
                        let simulatedEndEventTimer;
                        const transitionEndEventFullName = _m_support.default.transitionEndEventName() + ".dxFX";
                        config.transitionAnimation.cleanup = function() {
                            clearTimeout(simulatedEndEventTimer);
                            clearTimeout(waitForJSCompleteTimer);
                            _events_engine.default.off($element, transitionEndEventFullName);
                            _events_engine.default.off($element, removeEventName)
                        };
                        _events_engine.default.one($element, transitionEndEventFullName, (function() {
                            if (Date.now() - startTime >= config.duration) {
                                transitionEndFired.reject()
                            }
                        }));
                        _events_engine.default.off($element, removeEventName);
                        _events_engine.default.on($element, removeEventName, (function() {
                            that.stop($element, config);
                            deferred.reject()
                        }));
                        const waitForJSCompleteTimer = setTimeout((function() {
                            simulatedEndEventTimer = setTimeout((function() {
                                simulatedTransitionEndFired.reject()
                            }), config.duration + config.delay + fx._simulatedTransitionEndDelay);
                            (0, _deferred.when)(transitionEndFired, simulatedTransitionEndFired).fail(function() {
                                deferred.resolve()
                            }.bind(this))
                        }));
                        return deferred.promise()
                    },
                    _startAnimation: function($element, config) {
                        $element.css({
                            transitionProperty: "all",
                            transitionDelay: config.delay + "ms",
                            transitionDuration: config.duration + "ms",
                            transitionTimingFunction: config.easing
                        });
                        if ("string" === typeof config.to) {
                            $element[0].className += " " + config.to
                        } else if (config.to) {
                            setProps($element, config.to)
                        }
                    },
                    _finishTransition: function($element) {
                        $element.css("transition", "none")
                    },
                    _cleanup: function($element, config) {
                        config.transitionAnimation.cleanup();
                        if ("string" === typeof config.from) {
                            $element.removeClass(config.from);
                            $element.removeClass(config.to)
                        }
                    },
                    stop: function($element, config, jumpToEnd) {
                        if (!config) {
                            return
                        }
                        if (jumpToEnd) {
                            config.transitionAnimation.finish()
                        } else {
                            if ((0, _type.isPlainObject)(config.to)) {
                                (0, _iterator.each)(config.to, (function(key) {
                                    $element.css(key, $element.css(key))
                                }))
                            }
                            this._finishTransition($element);
                            this._cleanup($element, config)
                        }
                    }
                };
                const FrameAnimationStrategy = {
                    initAnimation: function($element, config) {
                        setProps($element, config.from)
                    },
                    animate: function($element, config) {
                        const deferred = new _deferred.Deferred;
                        const that = this;
                        if (!config) {
                            return deferred.reject().promise()
                        }(0, _iterator.each)(config.to, (function(prop) {
                            if (void 0 === config.from[prop]) {
                                config.from[prop] = that._normalizeValue($element.css(prop))
                            }
                        }));
                        if (config.to.transform) {
                            config.from.transform = that._parseTransform(config.from.transform);
                            config.to.transform = that._parseTransform(config.to.transform)
                        }
                        config.frameAnimation = {
                            to: config.to,
                            from: config.from,
                            currentValue: config.from,
                            easing: (0, _easing.convertTransitionTimingFuncToEasing)(config.easing),
                            duration: config.duration,
                            startTime: (new Date).valueOf(),
                            finish: function() {
                                this.currentValue = this.to;
                                this.draw();
                                (0, _frame.cancelAnimationFrame)(config.frameAnimation.animationFrameId);
                                deferred.resolve()
                            },
                            draw: function() {
                                if (config.draw) {
                                    config.draw(this.currentValue);
                                    return
                                }
                                const currentValue = (0, _extend.extend)({}, this.currentValue);
                                if (currentValue.transform) {
                                    currentValue.transform = (0, _iterator.map)(currentValue.transform, (function(value, prop) {
                                        if ("translate" === prop) {
                                            return (0, _translator.getTranslateCss)(value)
                                        } else if ("scale" === prop) {
                                            return "scale(" + value + ")"
                                        } else if ("rotate" === prop.substr(0, prop.length - 1)) {
                                            return prop + "(" + value + "deg)"
                                        }
                                    })).join(" ")
                                }
                                $element.css(currentValue)
                            }
                        };
                        if (config.delay) {
                            config.frameAnimation.startTime += config.delay;
                            config.frameAnimation.delayTimeout = setTimeout((function() {
                                that._startAnimation($element, config)
                            }), config.delay)
                        } else {
                            that._startAnimation($element, config)
                        }
                        return deferred.promise()
                    },
                    _startAnimation: function($element, config) {
                        _events_engine.default.off($element, removeEventName);
                        _events_engine.default.on($element, removeEventName, (function() {
                            if (config.frameAnimation) {
                                (0, _frame.cancelAnimationFrame)(config.frameAnimation.animationFrameId)
                            }
                        }));
                        this._animationStep($element, config)
                    },
                    _parseTransform: function(transformString) {
                        const result = {};
                        (0, _iterator.each)(transformString.match(/\w+\d*\w*\([^)]*\)\s*/g), (function(i, part) {
                            const translateData = (0, _translator.parseTranslate)(part);
                            const scaleData = part.match(/scale\((.+?)\)/);
                            const rotateData = part.match(/(rotate.)\((.+)deg\)/);
                            if (translateData) {
                                result.translate = translateData
                            }
                            if (scaleData && scaleData[1]) {
                                result.scale = parseFloat(scaleData[1])
                            }
                            if (rotateData && rotateData[1]) {
                                result[rotateData[1]] = parseFloat(rotateData[2])
                            }
                        }));
                        return result
                    },
                    stop: function($element, config, jumpToEnd) {
                        const frameAnimation = config && config.frameAnimation;
                        if (!frameAnimation) {
                            return
                        }(0, _frame.cancelAnimationFrame)(frameAnimation.animationFrameId);
                        clearTimeout(frameAnimation.delayTimeout);
                        if (jumpToEnd) {
                            frameAnimation.finish()
                        }
                        delete config.frameAnimation
                    },
                    _animationStep: function($element, config) {
                        const frameAnimation = config && config.frameAnimation;
                        if (!frameAnimation) {
                            return
                        }
                        const now = (new Date).valueOf();
                        if (now >= frameAnimation.startTime + frameAnimation.duration) {
                            frameAnimation.finish();
                            return
                        }
                        frameAnimation.currentValue = this._calcStepValue(frameAnimation, now - frameAnimation.startTime);
                        frameAnimation.draw();
                        const that = this;
                        frameAnimation.animationFrameId = (0, _frame.requestAnimationFrame)((function() {
                            that._animationStep($element, config)
                        }))
                    },
                    _calcStepValue: function(frameAnimation, currentDuration) {
                        const calcValueRecursively = function(from, to) {
                            const result = Array.isArray(to) ? [] : {};
                            (0, _iterator.each)(to, (function(propName, endPropValue) {
                                if ("string" === typeof endPropValue && false === parseFloat(endPropValue)) {
                                    return true
                                }
                                result[propName] = "object" === typeof endPropValue ? calcValueRecursively(from[propName], endPropValue) : function(propName) {
                                    const x = currentDuration / frameAnimation.duration;
                                    const t = currentDuration;
                                    const b = 1 * from[propName];
                                    const c = to[propName] - from[propName];
                                    const d = frameAnimation.duration;
                                    return (0, _easing.getEasing)(frameAnimation.easing)(x, t, b, c, d)
                                }(propName)
                            }));
                            return result
                        };
                        return calcValueRecursively(frameAnimation.from, frameAnimation.to)
                    },
                    _normalizeValue: function(value) {
                        const numericValue = parseFloat(value);
                        if (false === numericValue) {
                            return value
                        }
                        return numericValue
                    }
                };
                const FallbackToNoAnimationStrategy = {
                    initAnimation: function() {},
                    animate: function() {
                        return (new _deferred.Deferred).resolve().promise()
                    },
                    stop: _common.noop,
                    isSynchronous: true
                };
                const baseConfigValidator = function(config, animationType, validate, typeMessage) {
                    (0, _iterator.each)(["from", "to"], (function() {
                        if (!validate(config[this])) {
                            throw _errors.default.Error("E0010", animationType, this, typeMessage)
                        }
                    }))
                };
                const isObjectConfigValidator = function(config, animationType) {
                    return baseConfigValidator(config, animationType, (function(target) {
                        return (0, _type.isPlainObject)(target)
                    }), "a plain object")
                };
                const CssAnimationConfigurator = {
                    validateConfig: function(config) {
                        ! function(config, animationType) {
                            return baseConfigValidator(config, animationType, (function(target) {
                                return "string" === typeof target
                            }), "a string")
                        }(config, "css")
                    },
                    setup: function() {}
                };
                const positionAliases = {
                    top: {
                        my: "bottom center",
                        at: "top center"
                    },
                    bottom: {
                        my: "top center",
                        at: "bottom center"
                    },
                    right: {
                        my: "left center",
                        at: "right center"
                    },
                    left: {
                        my: "right center",
                        at: "left center"
                    }
                };
                const SlideAnimationConfigurator = {
                    validateConfig: function(config) {
                        isObjectConfigValidator(config, "slide")
                    },
                    setup: function($element, config) {
                        const location = (0, _translator.locate)($element);
                        if ("slide" !== config.type) {
                            const positioningConfig = "slideIn" === config.type ? config.from : config.to;
                            positioningConfig.position = (0, _extend.extend)({
                                of: window
                            }, positionAliases[config.direction]);
                            setupPosition($element, positioningConfig)
                        }
                        this._setUpConfig(location, config.from);
                        this._setUpConfig(location, config.to);
                        (0, _translator.clearCache)($element)
                    },
                    _setUpConfig: function(location, config) {
                        config.left = "left" in config ? config.left : "+=0";
                        config.top = "top" in config ? config.top : "+=0";
                        this._initNewPosition(location, config)
                    },
                    _initNewPosition: function(location, config) {
                        const position = {
                            left: config.left,
                            top: config.top
                        };
                        delete config.left;
                        delete config.top;
                        let relativeValue = this._getRelativeValue(position.left);
                        if (void 0 !== relativeValue) {
                            position.left = relativeValue + location.left
                        } else {
                            config.left = 0
                        }
                        relativeValue = this._getRelativeValue(position.top);
                        if (void 0 !== relativeValue) {
                            position.top = relativeValue + location.top
                        } else {
                            config.top = 0
                        }
                        config.transform = (0, _translator.getTranslateCss)({
                            x: position.left,
                            y: position.top
                        })
                    },
                    _getRelativeValue: function(value) {
                        let relativeValue;
                        if ("string" === typeof value && (relativeValue = RELATIVE_VALUE_REGEX.exec(value))) {
                            return parseInt(relativeValue[1] + "1") * relativeValue[2]
                        }
                    }
                };
                const FadeAnimationConfigurator = {
                    setup: function($element, config) {
                        const from = config.from;
                        const to = config.to;
                        const defaultFromOpacity = "fadeOut" === config.type ? 1 : 0;
                        const defaultToOpacity = "fadeOut" === config.type ? 0 : 1;
                        let fromOpacity = (0, _type.isPlainObject)(from) ? String(from.opacity ?? defaultFromOpacity) : String(from);
                        let toOpacity = (0, _type.isPlainObject)(to) ? String(to.opacity ?? defaultToOpacity) : String(to);
                        if (!config.skipElementInitialStyles) {
                            fromOpacity = $element.css("opacity")
                        }
                        switch (config.type) {
                            case "fadeIn":
                                toOpacity = 1;
                                break;
                            case "fadeOut":
                                toOpacity = 0
                        }
                        config.from = {
                            visibility: "visible",
                            opacity: fromOpacity
                        };
                        config.to = {
                            opacity: toOpacity
                        }
                    }
                };
                const PopAnimationConfigurator = {
                    validateConfig: function(config) {
                        isObjectConfigValidator(config, "pop")
                    },
                    setup: function($element, config) {
                        const from = config.from;
                        const to = config.to;
                        const fromOpacity = "opacity" in from ? from.opacity : $element.css("opacity");
                        const toOpacity = "opacity" in to ? to.opacity : 1;
                        const fromScale = "scale" in from ? from.scale : 0;
                        const toScale = "scale" in to ? to.scale : 1;
                        config.from = {
                            opacity: fromOpacity
                        };
                        const translate = (0, _translator.getTranslate)($element);
                        config.from.transform = this._getCssTransform(translate, fromScale);
                        config.to = {
                            opacity: toOpacity
                        };
                        config.to.transform = this._getCssTransform(translate, toScale)
                    },
                    _getCssTransform: function(translate, scale) {
                        return (0, _translator.getTranslateCss)(translate) + "scale(" + scale + ")"
                    }
                };
                const animationConfigurators = {
                    custom: {
                        setup: function() {}
                    },
                    slide: SlideAnimationConfigurator,
                    slideIn: SlideAnimationConfigurator,
                    slideOut: SlideAnimationConfigurator,
                    fade: FadeAnimationConfigurator,
                    fadeIn: FadeAnimationConfigurator,
                    fadeOut: FadeAnimationConfigurator,
                    pop: PopAnimationConfigurator,
                    css: CssAnimationConfigurator
                };
                const defaultJSConfig = {
                    type: "custom",
                    from: {},
                    to: {},
                    duration: 400,
                    start: _common.noop,
                    complete: _common.noop,
                    easing: "ease",
                    delay: 0
                };
                const defaultCssConfig = {
                    duration: 400,
                    easing: "ease",
                    delay: 0
                };

                function setupAnimationOnElement() {
                    const $element = this.element;
                    const config = this.config;
                    setupPosition($element, config.from);
                    setupPosition($element, config.to);
                    this.configurator.setup($element, config);
                    $element.data("dxAnimData", this);
                    if (fx.off) {
                        config.duration = 0;
                        config.delay = 0
                    }
                    this.strategy.initAnimation($element, config);
                    if (config.start) {
                        const element = (0, _element.getPublicElement)($element);
                        config.start.apply(this, [element, config])
                    }
                }
                const startAnimationOnElement = function() {
                    const animation = this;
                    const $element = animation.element;
                    const config = animation.config;
                    animation.isStarted = true;
                    return animation.strategy.animate($element, config).done((function() {
                        ! function(animation) {
                            const $element = animation.element;
                            const config = animation.config;
                            $element.removeData("dxAnimData");
                            if (config.complete) {
                                const element = (0, _element.getPublicElement)($element);
                                config.complete.apply(this, [element, config])
                            }
                            animation.deferred.resolveWith(this, [$element, config])
                        }(animation)
                    })).fail((function() {
                        animation.deferred.rejectWith(this, [$element, config])
                    }))
                };
                const stopAnimationOnElement = function(jumpToEnd) {
                    const animation = this;
                    const $element = animation.element;
                    const config = animation.config;
                    clearTimeout(animation.startTimeout);
                    if (!animation.isStarted) {
                        animation.start()
                    }
                    animation.strategy.stop($element, config, jumpToEnd)
                };
                const scopedRemoveEvent = (0, _index.addNamespace)(_remove.removeEvent, "dxFXStartAnimation");
                const createAnimation = function(element, initialConfig) {
                    const defaultConfig = "css" === initialConfig.type ? defaultCssConfig : defaultJSConfig;
                    const config = (0, _extend.extend)(true, {}, defaultConfig, initialConfig);
                    const configurator = function(config) {
                        const result = animationConfigurators[config.type];
                        if (!result) {
                            throw _errors.default.Error("E0011", config.type)
                        }
                        return result
                    }(config);
                    const strategy = function(config) {
                        config = config || {};
                        const animationStrategies = {
                            transition: _m_support.default.transition() ? TransitionAnimationStrategy : FrameAnimationStrategy,
                            frame: FrameAnimationStrategy,
                            noAnimation: FallbackToNoAnimationStrategy
                        };
                        let strategy = config.strategy || "transition";
                        if ("css" === config.type && !_m_support.default.transition()) {
                            strategy = "noAnimation"
                        }
                        return animationStrategies[strategy]
                    }(config);
                    const animation = {
                        element: (0, _renderer.default)(element),
                        config: config,
                        configurator: configurator,
                        strategy: strategy,
                        isSynchronous: strategy.isSynchronous,
                        setup: setupAnimationOnElement,
                        start: startAnimationOnElement,
                        stop: stopAnimationOnElement,
                        deferred: new _deferred.Deferred
                    };
                    if ((0, _type.isFunction)(configurator.validateConfig)) {
                        configurator.validateConfig(config)
                    }! function(animation) {
                        _events_engine.default.off(animation.element, scopedRemoveEvent);
                        _events_engine.default.on(animation.element, scopedRemoveEvent, (function() {
                            fx.stop(animation.element)
                        }));
                        animation.deferred.always((function() {
                            _events_engine.default.off(animation.element, scopedRemoveEvent)
                        }))
                    }(animation);
                    return animation
                };

                function getAnimQueueData($element) {
                    return $element.data("dxAnimQueue") || []
                }
                const destroyAnimQueueData = function($element) {
                    $element.removeData("dxAnimQueue")
                };

                function isAnimating($element) {
                    return !!$element.data("dxAnimData")
                }

                function shiftFromAnimationQueue($element, queueData) {
                    queueData = getAnimQueueData($element);
                    if (!queueData.length) {
                        return
                    }
                    const animation = queueData.shift();
                    if (0 === queueData.length) {
                        destroyAnimQueueData($element)
                    }(function(animation) {
                        animation.setup();
                        if (fx.off || animation.isSynchronous) {
                            animation.start()
                        } else {
                            animation.startTimeout = setTimeout((function() {
                                animation.start()
                            }))
                        }
                        return animation.deferred.promise()
                    })(animation).done((function() {
                        if (!isAnimating($element)) {
                            shiftFromAnimationQueue($element)
                        }
                    }))
                }

                function setupPosition($element, config) {
                    if (!config || !config.position) {
                        return
                    }
                    const win = (0, _renderer.default)(window);
                    let left = 0;
                    let top = 0;
                    const position = _position.default.calculate($element, config.position);
                    const offset = $element.offset();
                    const currentPosition = $element.position();
                    if (currentPosition.top > offset.top) {
                        top = win.scrollTop()
                    }
                    if (currentPosition.left > offset.left) {
                        left = win.scrollLeft()
                    }(0, _extend.extend)(config, {
                        left: position.h.location - offset.left + currentPosition.left - left,
                        top: position.v.location - offset.top + currentPosition.top - top
                    });
                    delete config.position
                }

                function setProps($element, props) {
                    (0, _iterator.each)(props, (function(key, value) {
                        try {
                            $element.css(key, (0, _type.isFunction)(value) ? value() : value)
                        } catch (e) {}
                    }))
                }
                const fx = {
                    off: false,
                    animationTypes: animationConfigurators,
                    animate: function(element, config) {
                        const $element = (0, _renderer.default)(element);
                        if (!$element.length) {
                            return (new _deferred.Deferred).resolve().promise()
                        }
                        const animation = createAnimation($element, config);
                        ! function($element, animation) {
                            const queueData = getAnimQueueData($element);
                            ! function($element, queueData) {
                                $element.data("dxAnimQueue", queueData)
                            }($element, queueData);
                            queueData.push(animation);
                            if (!isAnimating($element)) {
                                shiftFromAnimationQueue($element, queueData)
                            }
                        }($element, animation);
                        return animation.deferred.promise()
                    },
                    createAnimation: createAnimation,
                    isAnimating: isAnimating,
                    stop: function(element, jumpToEnd) {
                        const $element = (0, _renderer.default)(element);
                        const queueData = getAnimQueueData($element);
                        (0, _iterator.each)(queueData, (function(_, animation) {
                            animation.config.delay = 0;
                            animation.config.duration = 0;
                            animation.isSynchronous = true
                        }));
                        if (!isAnimating($element)) {
                            shiftFromAnimationQueue($element, queueData)
                        }
                        const animation = $element.data("dxAnimData");
                        if (animation) {
                            animation.stop(jumpToEnd)
                        }
                        $element.removeData("dxAnimData");
                        destroyAnimQueueData($element)
                    },
                    _simulatedTransitionEndDelay: 100
                };
                exports.default = fx;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        3030:
            /*!*******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/core/animation/position.js ***!
              \*******************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _size = __webpack_require__( /*! ../../../core/utils/size */ 57653);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553));
                var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781);
                var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274);
                var _window = __webpack_require__( /*! ../../../core/utils/window */ 3104);
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../core/dom_adapter */ 64960));
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528);
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576);
                var _position = __webpack_require__( /*! ../../../core/utils/position */ 41639);
                var _browser = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/browser */ 48314));
                var _translator = __webpack_require__( /*! ./translator */ 88603);
                var _support = __webpack_require__( /*! ../../../core/utils/support */ 4785);
                var _devices = _interopRequireDefault(__webpack_require__( /*! ../../../core/devices */ 65951));
                var _style = __webpack_require__( /*! ../../../core/utils/style */ 58515);

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const window = (0, _window.getWindow)();
                const horzRe = /left|right/;
                const vertRe = /top|bottom/;
                const collisionRe = /fit|flip|none/;
                const scaleRe = /scale\(.+?\)/;
                const IS_SAFARI = _browser.default.safari;
                const normalizeAlign = function(raw) {
                    const result = {
                        h: "center",
                        v: "center"
                    };
                    const pair = (0, _common.splitPair)(raw);
                    if (pair) {
                        (0, _iterator.each)(pair, (function() {
                            const w = String(this).toLowerCase();
                            if (horzRe.test(w)) {
                                result.h = w
                            } else if (vertRe.test(w)) {
                                result.v = w
                            }
                        }))
                    }
                    return result
                };
                const normalizeOffset = function(raw, preventRound) {
                    return (0, _common.pairToObject)(raw, preventRound)
                };
                const getAlignFactor = function(align) {
                    switch (align) {
                        case "center":
                            return .5;
                        case "right":
                        case "bottom":
                            return 1;
                        default:
                            return 0
                    }
                };
                const inverseAlign = function(align) {
                    switch (align) {
                        case "left":
                            return "right";
                        case "right":
                            return "left";
                        case "top":
                            return "bottom";
                        case "bottom":
                            return "top";
                        default:
                            return align
                    }
                };
                const calculateOversize = function(data, bounds) {
                    let oversize = 0;
                    if (data.myLocation < bounds.min) {
                        oversize += bounds.min - data.myLocation
                    }
                    if (data.myLocation > bounds.max) {
                        oversize += data.myLocation - bounds.max
                    }
                    return oversize
                };
                const collisionSide = function(direction, data, bounds) {
                    if (data.myLocation < bounds.min) {
                        return "h" === direction ? "left" : "top"
                    }
                    if (data.myLocation > bounds.max) {
                        return "h" === direction ? "right" : "bottom"
                    }
                    return "none"
                };
                const initMyLocation = function(data) {
                    data.myLocation = data.atLocation + getAlignFactor(data.atAlign) * data.atSize - getAlignFactor(data.myAlign) * data.mySize + data.offset
                };
                const collisionResolvers = {
                    fit: function(data, bounds) {
                        let result = false;
                        if (data.myLocation > bounds.max) {
                            data.myLocation = bounds.max;
                            result = true
                        }
                        if (data.myLocation < bounds.min) {
                            data.myLocation = bounds.min;
                            result = true
                        }
                        data.fit = result
                    },
                    flip: function(data, bounds) {
                        data.flip = false;
                        if ("center" === data.myAlign && "center" === data.atAlign) {
                            return
                        }
                        if (data.myLocation < bounds.min || data.myLocation > bounds.max) {
                            const inverseData = (0, _extend.extend)({}, data, {
                                myAlign: inverseAlign(data.myAlign),
                                atAlign: inverseAlign(data.atAlign),
                                offset: -data.offset
                            });
                            initMyLocation(inverseData);
                            inverseData.oversize = calculateOversize(inverseData, bounds);
                            if (inverseData.myLocation >= bounds.min && inverseData.myLocation <= bounds.max || data.oversize > inverseData.oversize) {
                                data.myLocation = inverseData.myLocation;
                                data.oversize = inverseData.oversize;
                                data.flip = true
                            }
                        }
                    },
                    flipfit: function(data, bounds) {
                        this.flip(data, bounds);
                        this.fit(data, bounds)
                    },
                    none: function(data) {
                        data.oversize = 0
                    }
                };
                let scrollbarWidth;
                const calculateScrollbarWidth = function() {
                    const $scrollDiv = (0, _renderer.default)("<div>").css({
                        width: 100,
                        height: 100,
                        overflow: "scroll",
                        position: "absolute",
                        top: -9999
                    }).appendTo((0, _renderer.default)("body"));
                    const result = $scrollDiv.get(0).offsetWidth - $scrollDiv.get(0).clientWidth;
                    $scrollDiv.remove();
                    scrollbarWidth = result
                };
                const defaultPositionResult = {
                    h: {
                        location: 0,
                        flip: false,
                        fit: false,
                        oversize: 0
                    },
                    v: {
                        location: 0,
                        flip: false,
                        fit: false,
                        oversize: 0
                    }
                };
                const calculatePosition = function(what, options) {
                    const $what = (0, _renderer.default)(what);
                    const currentOffset = $what.offset();
                    const result = (0, _extend.extend)(true, {}, defaultPositionResult, {
                        h: {
                            location: currentOffset.left
                        },
                        v: {
                            location: currentOffset.top
                        }
                    });
                    if (!options) {
                        return result
                    }
                    const my = normalizeAlign(options.my);
                    const at = normalizeAlign(options.at);
                    let of = (0, _renderer.default)(options.of).length && options.of || window;
                    const offset = normalizeOffset(options.offset, options.precise);
                    const collision = function(raw) {
                        const pair = (0, _common.splitPair)(raw);
                        let h = String(pair && pair[0]).toLowerCase();
                        let v = String(pair && pair[1]).toLowerCase();
                        if (!collisionRe.test(h)) {
                            h = "none"
                        }
                        if (!collisionRe.test(v)) {
                            v = h
                        }
                        return {
                            h: h,
                            v: v
                        }
                    }(options.collision);
                    const boundary = options.boundary;
                    const boundaryOffset = normalizeOffset(options.boundaryOffset, options.precise);
                    const h = {
                        mySize: (0, _size.getOuterWidth)($what),
                        myAlign: my.h,
                        atAlign: at.h,
                        offset: offset.h,
                        collision: collision.h,
                        boundaryOffset: boundaryOffset.h
                    };
                    const v = {
                        mySize: (0, _size.getOuterHeight)($what),
                        myAlign: my.v,
                        atAlign: at.v,
                        offset: offset.v,
                        collision: collision.v,
                        boundaryOffset: boundaryOffset.v
                    };
                    if (of.preventDefault) {
                        h.atLocation = of.pageX;
                        v.atLocation = of.pageY;
                        h.atSize = 0;
                        v.atSize = 0
                    } else {
                        of = (0, _renderer.default)(of);
                        if ((0, _type.isWindow)(of [0])) {
                            h.atLocation = of.scrollLeft();
                            v.atLocation = of.scrollTop();
                            if ("phone" === _devices.default.real().deviceType && of [0].visualViewport) {
                                h.atLocation = Math.max(h.atLocation, of [0].visualViewport.offsetLeft);
                                v.atLocation = Math.max(v.atLocation, of [0].visualViewport.offsetTop);
                                h.atSize = of [0].visualViewport.width;
                                v.atSize = of [0].visualViewport.height
                            } else {
                                h.atSize = of [0].innerWidth > of [0].outerWidth ? of [0].innerWidth : (0, _size.getWidth)(of);
                                v.atSize = of [0].innerHeight > of [0].outerHeight || IS_SAFARI ? of [0].innerHeight : (0, _size.getHeight)(of)
                            }
                        } else if (9 === of [0].nodeType) {
                            h.atLocation = 0;
                            v.atLocation = 0;
                            h.atSize = (0, _size.getWidth)(of);
                            v.atSize = (0, _size.getHeight)(of)
                        } else {
                            const ofRect = (0, _position.getBoundingRect)(of.get(0));
                            const o = getOffsetWithoutScale(of);
                            h.atLocation = o.left;
                            v.atLocation = o.top;
                            h.atSize = Math.max(ofRect.width, (0, _size.getOuterWidth)(of));
                            v.atSize = Math.max(ofRect.height, (0, _size.getOuterHeight)(of))
                        }
                    }
                    initMyLocation(h);
                    initMyLocation(v);
                    const bounds = function() {
                        const win = (0, _renderer.default)(window);
                        const windowWidth = (0, _size.getWidth)(win);
                        const windowHeight = (0, _size.getHeight)(win);
                        let left = win.scrollLeft();
                        let top = win.scrollTop();
                        const documentElement = _dom_adapter.default.getDocumentElement();
                        const hZoomLevel = _support.touch ? documentElement.clientWidth / windowWidth : 1;
                        const vZoomLevel = _support.touch ? documentElement.clientHeight / windowHeight : 1;
                        if (void 0 === scrollbarWidth) {
                            calculateScrollbarWidth()
                        }
                        let boundaryWidth = windowWidth;
                        let boundaryHeight = windowHeight;
                        if (boundary && !(0, _type.isWindow)(boundary)) {
                            const $boundary = (0, _renderer.default)(boundary);
                            const boundaryPosition = $boundary.offset();
                            left = boundaryPosition.left;
                            top = boundaryPosition.top;
                            boundaryWidth = (0, _size.getWidth)($boundary);
                            boundaryHeight = (0, _size.getHeight)($boundary)
                        }
                        return {
                            h: {
                                min: left + h.boundaryOffset,
                                max: left + boundaryWidth / hZoomLevel - h.mySize - h.boundaryOffset
                            },
                            v: {
                                min: top + v.boundaryOffset,
                                max: top + boundaryHeight / vZoomLevel - v.mySize - v.boundaryOffset
                            }
                        }
                    }();
                    h.oversize = calculateOversize(h, bounds.h);
                    v.oversize = calculateOversize(v, bounds.v);
                    h.collisionSide = collisionSide("h", h, bounds.h);
                    v.collisionSide = collisionSide("v", v, bounds.v);
                    if (collisionResolvers[h.collision]) {
                        collisionResolvers[h.collision](h, bounds.h)
                    }
                    if (collisionResolvers[v.collision]) {
                        collisionResolvers[v.collision](v, bounds.v)
                    }
                    const preciser = function(number) {
                        return options.precise ? number : Math.round(number)
                    };
                    (0, _extend.extend)(true, result, {
                        h: {
                            location: preciser(h.myLocation),
                            oversize: preciser(h.oversize),
                            fit: h.fit,
                            flip: h.flip,
                            collisionSide: h.collisionSide
                        },
                        v: {
                            location: preciser(v.myLocation),
                            oversize: preciser(v.oversize),
                            fit: v.fit,
                            flip: v.flip,
                            collisionSide: v.collisionSide
                        },
                        precise: options.precise
                    });
                    return result
                };
                const setScaleProperty = function(element, scale, styleAttr, isEmpty) {
                    const stylePropIsValid = (0, _type.isDefined)(element.style) && !_dom_adapter.default.isNode(element.style);
                    const newStyleValue = isEmpty ? styleAttr.replace(scale, "") : styleAttr;
                    if (stylePropIsValid) {
                        (0, _style.setStyle)(element, newStyleValue, false)
                    } else {
                        const styleAttributeNode = _dom_adapter.default.createAttribute("style");
                        styleAttributeNode.value = newStyleValue;
                        element.setAttributeNode(styleAttributeNode)
                    }
                };
                const getOffsetWithoutScale = function($startElement) {
                    var _currentElement$getAt, _style$match;
                    let $currentElement = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : $startElement;
                    const currentElement = $currentElement.get(0);
                    if (!currentElement) {
                        return $startElement.offset()
                    }
                    const style = (null === (_currentElement$getAt = currentElement.getAttribute) || void 0 === _currentElement$getAt ? void 0 : _currentElement$getAt.call(currentElement, "style")) || "";
                    const scale = null === (_style$match = style.match(scaleRe)) || void 0 === _style$match ? void 0 : _style$match[0];
                    let offset;
                    if (scale) {
                        setScaleProperty(currentElement, scale, style, true);
                        offset = getOffsetWithoutScale($startElement, $currentElement.parent());
                        setScaleProperty(currentElement, scale, style, false)
                    } else {
                        offset = getOffsetWithoutScale($startElement, $currentElement.parent())
                    }
                    return offset
                };
                const position = function(what, options) {
                    const $what = (0, _renderer.default)(what);
                    if (!options) {
                        return $what.offset()
                    }(0, _translator.resetPosition)($what, true);
                    const offset = getOffsetWithoutScale($what);
                    const targetPosition = options.h && options.v ? options : calculatePosition($what, options);
                    const preciser = function(number) {
                        return options.precise ? number : Math.round(number)
                    };
                    (0, _translator.move)($what, {
                        left: targetPosition.h.location - preciser(offset.left),
                        top: targetPosition.v.location - preciser(offset.top)
                    });
                    return targetPosition
                };
                if (!position.inverseAlign) {
                    position.inverseAlign = inverseAlign
                }
                if (!position.normalizeAlign) {
                    position.normalizeAlign = normalizeAlign
                }
                exports.default = {
                    calculateScrollbarWidth: calculateScrollbarWidth,
                    calculate: calculatePosition,
                    setup: position,
                    offset: function(element) {
                        element = (0, _renderer.default)(element).get(0);
                        if ((0, _type.isWindow)(element)) {
                            return null
                        } else if (element && "pageY" in element && "pageX" in element) {
                            return {
                                top: element.pageY,
                                left: element.pageX
                            }
                        }
                        return (0, _renderer.default)(element).offset()
                    }
                };
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        58049:
            /*!******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/core/animation/presets.js ***!
              \******************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _presets = __webpack_require__( /*! ./presets/presets */ 61310);
                exports.default = _presets.presets;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        61310:
            /*!**************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/core/animation/presets/presets.js ***!
              \**************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.presets = exports.PresetCollection = void 0;
                var _size = __webpack_require__( /*! ../../../../core/utils/size */ 57653);
                var _component = __webpack_require__( /*! ../../../../core/component */ 17863);
                var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 21274);
                var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 52576);
                var _devices = _interopRequireDefault(__webpack_require__( /*! ../../environment/devices */ 44257));
                var _fx = _interopRequireDefault(__webpack_require__( /*! ../fx */ 27075));

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const directionPostfixes = {
                    forward: " dx-forward",
                    backward: " dx-backward",
                    none: " dx-no-direction",
                    undefined: " dx-no-direction"
                };
                const AnimationPresetCollection = exports.PresetCollection = _component.Component.inherit({
                    ctor: function() {
                        this.callBase.apply(this, arguments);
                        this._registeredPresets = [];
                        this.resetToDefaults()
                    },
                    _getDefaultOptions: function() {
                        return (0, _extend.extend)(this.callBase(), {
                            defaultAnimationDuration: 400,
                            defaultAnimationDelay: 0,
                            defaultStaggerAnimationDuration: 300,
                            defaultStaggerAnimationDelay: 40,
                            defaultStaggerAnimationStartDelay: 500
                        })
                    },
                    _defaultOptionsRules: function() {
                        return this.callBase().concat([{
                            device: function(device) {
                                return device.phone
                            },
                            options: {
                                defaultStaggerAnimationDuration: 350,
                                defaultStaggerAnimationDelay: 50,
                                defaultStaggerAnimationStartDelay: 0
                            }
                        }, {
                            device: function() {
                                return _devices.default.current().android || _devices.default.real.android
                            },
                            options: {
                                defaultAnimationDelay: 100
                            }
                        }])
                    },
                    _getPresetOptionName: function(animationName) {
                        return "preset_" + animationName
                    },
                    _createAndroidSlideAnimationConfig: function(throughOpacity, widthMultiplier) {
                        const that = this;
                        const createBaseConfig = function(configModifier) {
                            return {
                                type: "slide",
                                delay: void 0 === configModifier.delay ? that.option("defaultAnimationDelay") : configModifier.delay,
                                duration: void 0 === configModifier.duration ? that.option("defaultAnimationDuration") : configModifier.duration
                            }
                        };
                        return {
                            enter: function($element, configModifier) {
                                const width = (0, _size.getWidth)($element.parent()) * widthMultiplier;
                                const direction = configModifier.direction;
                                const config = createBaseConfig(configModifier);
                                config.to = {
                                    left: 0,
                                    opacity: 1
                                };
                                if ("forward" === direction) {
                                    config.from = {
                                        left: width,
                                        opacity: throughOpacity
                                    }
                                } else if ("backward" === direction) {
                                    config.from = {
                                        left: -width,
                                        opacity: throughOpacity
                                    }
                                } else {
                                    config.from = {
                                        left: 0,
                                        opacity: 0
                                    }
                                }
                                return _fx.default.createAnimation($element, config)
                            },
                            leave: function($element, configModifier) {
                                const width = (0, _size.getWidth)($element.parent()) * widthMultiplier;
                                const direction = configModifier.direction;
                                const config = createBaseConfig(configModifier);
                                config.from = {
                                    left: 0,
                                    opacity: 1
                                };
                                if ("forward" === direction) {
                                    config.to = {
                                        left: -width,
                                        opacity: throughOpacity
                                    }
                                } else if ("backward" === direction) {
                                    config.to = {
                                        left: width,
                                        opacity: throughOpacity
                                    }
                                } else {
                                    config.to = {
                                        left: 0,
                                        opacity: 0
                                    }
                                }
                                return _fx.default.createAnimation($element, config)
                            }
                        }
                    },
                    _createOpenDoorConfig: function() {
                        const that = this;
                        const createBaseConfig = function(configModifier) {
                            return {
                                type: "css",
                                extraCssClasses: "dx-opendoor-animation",
                                delay: void 0 === configModifier.delay ? that.option("defaultAnimationDelay") : configModifier.delay,
                                duration: void 0 === configModifier.duration ? that.option("defaultAnimationDuration") : configModifier.duration
                            }
                        };
                        return {
                            enter: function($element, configModifier) {
                                const direction = configModifier.direction;
                                const config = createBaseConfig(configModifier);
                                config.delay = "none" === direction ? config.delay : config.duration;
                                config.from = "dx-enter dx-opendoor-animation" + directionPostfixes[direction];
                                config.to = "dx-enter-active";
                                return _fx.default.createAnimation($element, config)
                            },
                            leave: function($element, configModifier) {
                                const direction = configModifier.direction;
                                const config = createBaseConfig(configModifier);
                                config.from = "dx-leave dx-opendoor-animation" + directionPostfixes[direction];
                                config.to = "dx-leave-active";
                                return _fx.default.createAnimation($element, config)
                            }
                        }
                    },
                    _createWinPopConfig: function() {
                        const that = this;
                        const baseConfig = {
                            type: "css",
                            extraCssClasses: "dx-win-pop-animation",
                            duration: that.option("defaultAnimationDuration")
                        };
                        return {
                            enter: function($element, configModifier) {
                                const config = baseConfig;
                                const direction = configModifier.direction;
                                config.delay = "none" === direction ? that.option("defaultAnimationDelay") : that.option("defaultAnimationDuration") / 2;
                                config.from = "dx-enter dx-win-pop-animation" + directionPostfixes[direction];
                                config.to = "dx-enter-active";
                                return _fx.default.createAnimation($element, config)
                            },
                            leave: function($element, configModifier) {
                                const config = baseConfig;
                                const direction = configModifier.direction;
                                config.delay = that.option("defaultAnimationDelay");
                                config.from = "dx-leave dx-win-pop-animation" + directionPostfixes[direction];
                                config.to = "dx-leave-active";
                                return _fx.default.createAnimation($element, config)
                            }
                        }
                    },
                    resetToDefaults: function() {
                        this.clear();
                        this.registerDefaultPresets();
                        this.applyChanges()
                    },
                    clear: function(name) {
                        const that = this;
                        const newRegisteredPresets = [];
                        (0, _iterator.each)(this._registeredPresets, (function(index, preset) {
                            if (!name || name === preset.name) {
                                that.option(that._getPresetOptionName(preset.name), void 0)
                            } else {
                                newRegisteredPresets.push(preset)
                            }
                        }));
                        this._registeredPresets = newRegisteredPresets;
                        this.applyChanges()
                    },
                    registerPreset: function(name, config) {
                        this._registeredPresets.push({
                            name: name,
                            config: config
                        })
                    },
                    applyChanges: function() {
                        const that = this;
                        const customRules = [];
                        (0, _iterator.each)(this._registeredPresets, (function(index, preset) {
                            const rule = {
                                device: preset.config.device,
                                options: {}
                            };
                            rule.options[that._getPresetOptionName(preset.name)] = preset.config.animation;
                            customRules.push(rule)
                        }));
                        this._setOptionsByDevice(customRules)
                    },
                    getPreset: function(name) {
                        let result = name;
                        while ("string" === typeof result) {
                            result = this.option(this._getPresetOptionName(result))
                        }
                        return result
                    },
                    registerDefaultPresets: function() {
                        this.registerPreset("pop", {
                            animation: {
                                extraCssClasses: "dx-android-pop-animation",
                                delay: this.option("defaultAnimationDelay"),
                                duration: this.option("defaultAnimationDuration")
                            }
                        });
                        this.registerPreset("openDoor", {
                            animation: this._createOpenDoorConfig()
                        });
                        this.registerPreset("win-pop", {
                            animation: this._createWinPopConfig()
                        });
                        this.registerPreset("fade", {
                            animation: {
                                extraCssClasses: "dx-fade-animation",
                                delay: this.option("defaultAnimationDelay"),
                                duration: this.option("defaultAnimationDuration")
                            }
                        });
                        this.registerPreset("slide", {
                            device: function() {
                                return _devices.default.current().android || _devices.default.real.android
                            },
                            animation: this._createAndroidSlideAnimationConfig(1, 1)
                        });
                        this.registerPreset("slide", {
                            device: function() {
                                return !_devices.default.current().android && !_devices.default.real.android
                            },
                            animation: {
                                extraCssClasses: "dx-slide-animation",
                                delay: this.option("defaultAnimationDelay"),
                                duration: this.option("defaultAnimationDuration")
                            }
                        });
                        this.registerPreset("ios7-slide", {
                            animation: {
                                extraCssClasses: "dx-ios7-slide-animation",
                                delay: this.option("defaultAnimationDelay"),
                                duration: this.option("defaultAnimationDuration")
                            }
                        });
                        this.registerPreset("overflow", {
                            animation: {
                                extraCssClasses: "dx-overflow-animation",
                                delay: this.option("defaultAnimationDelay"),
                                duration: this.option("defaultAnimationDuration")
                            }
                        });
                        this.registerPreset("ios7-toolbar", {
                            device: function() {
                                return !_devices.default.current().android && !_devices.default.real.android
                            },
                            animation: {
                                extraCssClasses: "dx-ios7-toolbar-animation",
                                delay: this.option("defaultAnimationDelay"),
                                duration: this.option("defaultAnimationDuration")
                            }
                        });
                        this.registerPreset("ios7-toolbar", {
                            device: function() {
                                return _devices.default.current().android || _devices.default.real.android
                            },
                            animation: this._createAndroidSlideAnimationConfig(0, .4)
                        });
                        this.registerPreset("stagger-fade", {
                            animation: {
                                extraCssClasses: "dx-fade-animation",
                                staggerDelay: this.option("defaultStaggerAnimationDelay"),
                                duration: this.option("defaultStaggerAnimationDuration"),
                                delay: this.option("defaultStaggerAnimationStartDelay")
                            }
                        });
                        this.registerPreset("stagger-slide", {
                            animation: {
                                extraCssClasses: "dx-slide-animation",
                                staggerDelay: this.option("defaultStaggerAnimationDelay"),
                                duration: this.option("defaultStaggerAnimationDuration"),
                                delay: this.option("defaultStaggerAnimationStartDelay")
                            }
                        });
                        this.registerPreset("stagger-fade-slide", {
                            animation: {
                                extraCssClasses: "dx-fade-slide-animation",
                                staggerDelay: this.option("defaultStaggerAnimationDelay"),
                                duration: this.option("defaultStaggerAnimationDuration"),
                                delay: this.option("defaultStaggerAnimationStartDelay")
                            }
                        });
                        this.registerPreset("stagger-drop", {
                            animation: {
                                extraCssClasses: "dx-drop-animation",
                                staggerDelay: this.option("defaultStaggerAnimationDelay"),
                                duration: this.option("defaultStaggerAnimationDuration"),
                                delay: this.option("defaultStaggerAnimationStartDelay")
                            }
                        });
                        this.registerPreset("stagger-fade-drop", {
                            animation: {
                                extraCssClasses: "dx-fade-drop-animation",
                                staggerDelay: this.option("defaultStaggerAnimationDelay"),
                                duration: this.option("defaultStaggerAnimationDuration"),
                                delay: this.option("defaultStaggerAnimationStartDelay")
                            }
                        });
                        this.registerPreset("stagger-fade-rise", {
                            animation: {
                                extraCssClasses: "dx-fade-rise-animation",
                                staggerDelay: this.option("defaultStaggerAnimationDelay"),
                                duration: this.option("defaultStaggerAnimationDuration"),
                                delay: this.option("defaultStaggerAnimationStartDelay")
                            }
                        });
                        this.registerPreset("stagger-3d-drop", {
                            animation: {
                                extraCssClasses: "dx-3d-drop-animation",
                                staggerDelay: this.option("defaultStaggerAnimationDelay"),
                                duration: this.option("defaultStaggerAnimationDuration"),
                                delay: this.option("defaultStaggerAnimationStartDelay")
                            }
                        });
                        this.registerPreset("stagger-fade-zoom", {
                            animation: {
                                extraCssClasses: "dx-fade-zoom-animation",
                                staggerDelay: this.option("defaultStaggerAnimationDelay"),
                                duration: this.option("defaultStaggerAnimationDuration"),
                                delay: this.option("defaultStaggerAnimationStartDelay")
                            }
                        })
                    }
                });
                exports.presets = new AnimationPresetCollection
            },
        94680:
            /*!******************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/core/animation/transition_executor.js ***!
              \******************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _transition_executor = __webpack_require__( /*! ./transition_executor/transition_executor */ 33054);
                exports.default = _transition_executor.TransitionExecutor;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        33054:
            /*!**************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/core/animation/transition_executor/transition_executor.js ***!
              \**************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.TransitionExecutor = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 64553));
                var _class = _interopRequireDefault(__webpack_require__( /*! ../../../../core/class */ 55620));
                var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 52576);
                var _m_common = _interopRequireDefault(__webpack_require__( /*! ../../../../__internal/core/utils/m_common */ 39315));
                var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528);
                var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 21274);
                var _fx = _interopRequireDefault(__webpack_require__( /*! ../fx */ 27075));
                var _presets = __webpack_require__( /*! ../presets/presets */ 61310);
                var _deferred = __webpack_require__( /*! ../../../../core/utils/deferred */ 87739);

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const directionPostfixes = {
                    forward: " dx-forward",
                    backward: " dx-backward",
                    none: " dx-no-direction",
                    undefined: " dx-no-direction"
                };
                exports.TransitionExecutor = _class.default.inherit({
                    ctor: function() {
                        this._accumulatedDelays = {
                            enter: 0,
                            leave: 0
                        };
                        this._animations = [];
                        this.reset()
                    },
                    _createAnimations: function($elements, initialConfig, configModifier, type) {
                        $elements = (0, _renderer.default)($elements);
                        const that = this;
                        const result = [];
                        configModifier = configModifier || {};
                        const animationConfig = this._prepareElementAnimationConfig(initialConfig, configModifier, type);
                        if (animationConfig) {
                            $elements.each((function() {
                                const animation = that._createAnimation((0, _renderer.default)(this), animationConfig, configModifier);
                                if (animation) {
                                    animation.element.addClass("dx-animating");
                                    animation.setup();
                                    result.push(animation)
                                }
                            }))
                        }
                        return result
                    },
                    _prepareElementAnimationConfig: function(config, configModifier, type) {
                        let result;
                        if ("string" === typeof config) {
                            const presetName = config;
                            config = _presets.presets.getPreset(presetName)
                        }
                        if (!config) {
                            result = void 0
                        } else if ((0, _type.isFunction)(config[type])) {
                            result = config[type]
                        } else {
                            result = (0, _extend.extend)({
                                skipElementInitialStyles: true,
                                cleanupWhen: this._completePromise
                            }, config, configModifier);
                            if (!result.type || "css" === result.type) {
                                const cssClass = "dx-" + type;
                                const extraCssClasses = (result.extraCssClasses ? " " + result.extraCssClasses : "") + directionPostfixes[result.direction];
                                result.type = "css";
                                result.from = (result.from || cssClass) + extraCssClasses;
                                result.to = result.to || cssClass + "-active"
                            }
                            result.staggerDelay = result.staggerDelay || 0;
                            result.delay = result.delay || 0;
                            if (result.staggerDelay) {
                                result.delay += this._accumulatedDelays[type];
                                this._accumulatedDelays[type] += result.staggerDelay
                            }
                        }
                        return result
                    },
                    _createAnimation: function($element, animationConfig, configModifier) {
                        let result;
                        if ((0, _type.isPlainObject)(animationConfig)) {
                            result = _fx.default.createAnimation($element, animationConfig)
                        } else if ((0, _type.isFunction)(animationConfig)) {
                            result = animationConfig($element, configModifier)
                        }
                        return result
                    },
                    _startAnimations: function() {
                        const animations = this._animations;
                        for (let i = 0; i < animations.length; i++) {
                            animations[i].start()
                        }
                    },
                    _stopAnimations: function(jumpToEnd) {
                        const animations = this._animations;
                        for (let i = 0; i < animations.length; i++) {
                            animations[i].stop(jumpToEnd)
                        }
                    },
                    _clearAnimations: function() {
                        const animations = this._animations;
                        for (let i = 0; i < animations.length; i++) {
                            animations[i].element.removeClass("dx-animating")
                        }
                        this._animations.length = 0
                    },
                    reset: function() {
                        this._accumulatedDelays.enter = 0;
                        this._accumulatedDelays.leave = 0;
                        this._clearAnimations();
                        this._completeDeferred = new _deferred.Deferred;
                        this._completePromise = this._completeDeferred.promise()
                    },
                    enter: function($elements, animationConfig, configModifier) {
                        const animations = this._createAnimations($elements, animationConfig, configModifier, "enter");
                        this._animations.push.apply(this._animations, animations)
                    },
                    leave: function($elements, animationConfig, configModifier) {
                        const animations = this._createAnimations($elements, animationConfig, configModifier, "leave");
                        this._animations.push.apply(this._animations, animations)
                    },
                    start: function() {
                        const that = this;
                        let result;
                        if (!this._animations.length) {
                            that.reset();
                            result = (new _deferred.Deferred).resolve().promise()
                        } else {
                            const animationDeferreds = (0, _iterator.map)(this._animations, (function(animation) {
                                const result = new _deferred.Deferred;
                                animation.deferred.always((function() {
                                    result.resolve()
                                }));
                                return result.promise()
                            }));
                            result = _deferred.when.apply(_renderer.default, animationDeferreds).always((function() {
                                that._completeDeferred.resolve();
                                that.reset()
                            }));
                            _m_common.default.executeAsync((function() {
                                that._startAnimations()
                            }))
                        }
                        return result
                    },
                    stop: function(jumpToEnd) {
                        this._stopAnimations(jumpToEnd)
                    }
                })
            },
        88603:
            /*!*********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/core/animation/translator.js ***!
              \*********************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.resetPosition = exports.parseTranslate = exports.move = exports.locate = exports.getTranslateCss = exports.getTranslate = exports.clearCache = void 0;
                var _renderer = (e = __webpack_require__( /*! ../../../core/renderer */ 64553), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                var _element_data = __webpack_require__( /*! ../../../core/element_data */ 74663);
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528);
                const TRANSFORM_MATRIX_REGEX = /matrix(3d)?\((.+?)\)/;
                const TRANSLATE_REGEX = /translate(?:3d)?\((.+?)\)/;
                exports.locate = function($element) {
                    $element = (0, _renderer.default)($element);
                    const translate = getTranslate($element);
                    return {
                        left: translate.x,
                        top: translate.y
                    }
                };

                function isPercentValue(value) {
                    return "string" === (0, _type.type)(value) && "%" === value[value.length - 1]
                }

                function cacheTranslate($element, translate) {
                    if ($element.length) {
                        (0, _element_data.data)($element.get(0), "dxTranslator", translate)
                    }
                }
                const clearCache = function($element) {
                    if ($element.length) {
                        (0, _element_data.removeData)($element.get(0), "dxTranslator")
                    }
                };
                exports.clearCache = clearCache;
                const getTranslateCss = function(translate) {
                    translate.x = translate.x || 0;
                    translate.y = translate.y || 0;
                    const xValueString = isPercentValue(translate.x) ? translate.x : translate.x + "px";
                    const yValueString = isPercentValue(translate.y) ? translate.y : translate.y + "px";
                    return "translate(" + xValueString + ", " + yValueString + ")"
                };
                exports.getTranslateCss = getTranslateCss;
                const getTranslate = function($element) {
                    let result = $element.length ? (0, _element_data.data)($element.get(0), "dxTranslator") : null;
                    if (!result) {
                        const transformValue = $element.css("transform") || getTranslateCss({
                            x: 0,
                            y: 0
                        });
                        let matrix = transformValue.match(TRANSFORM_MATRIX_REGEX);
                        const is3D = matrix && matrix[1];
                        if (matrix) {
                            matrix = matrix[2].split(",");
                            if ("3d" === is3D) {
                                matrix = matrix.slice(12, 15)
                            } else {
                                matrix.push(0);
                                matrix = matrix.slice(4, 7)
                            }
                        } else {
                            matrix = [0, 0, 0]
                        }
                        result = {
                            x: parseFloat(matrix[0]),
                            y: parseFloat(matrix[1]),
                            z: parseFloat(matrix[2])
                        };
                        cacheTranslate($element, result)
                    }
                    return result
                };
                exports.getTranslate = getTranslate;
                exports.move = function($element, position) {
                    $element = (0, _renderer.default)($element);
                    const left = position.left;
                    const top = position.top;
                    let translate;
                    if (void 0 === left) {
                        translate = getTranslate($element);
                        translate.y = top || 0
                    } else if (void 0 === top) {
                        translate = getTranslate($element);
                        translate.x = left || 0
                    } else {
                        translate = {
                            x: left || 0,
                            y: top || 0,
                            z: 0
                        };
                        cacheTranslate($element, translate)
                    }
                    $element.css({
                        transform: getTranslateCss(translate)
                    });
                    if (isPercentValue(left) || isPercentValue(top)) {
                        clearCache($element)
                    }
                };
                exports.resetPosition = function($element, finishTransition) {
                    $element = (0, _renderer.default)($element);
                    let originalTransition;
                    const stylesConfig = {
                        left: 0,
                        top: 0,
                        transform: "none"
                    };
                    if (finishTransition) {
                        originalTransition = $element.css("transition");
                        stylesConfig.transition = "none"
                    }
                    $element.css(stylesConfig);
                    clearCache($element);
                    if (finishTransition) {
                        $element.get(0).offsetHeight;
                        $element.css("transition", originalTransition)
                    }
                };
                exports.parseTranslate = function(translateString) {
                    let result = translateString.match(TRANSLATE_REGEX);
                    if (!result || !result[1]) {
                        return
                    }
                    result = result[1].split(",");
                    result = {
                        x: parseFloat(result[0]),
                        y: parseFloat(result[1]),
                        z: parseFloat(result[2])
                    };
                    return result
                }
            },
        63705:
            /*!************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/core/environment.js ***!
              \************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "devices", {
                    enumerable: true,
                    get: function() {
                        return _devices.default
                    }
                });
                Object.defineProperty(exports, "getTimeZones", {
                    enumerable: true,
                    get: function() {
                        return _time_zone_utils.getTimeZones
                    }
                });
                Object.defineProperty(exports, "hideTopOverlay", {
                    enumerable: true,
                    get: function() {
                        return _hide_top_overlay.default
                    }
                });
                Object.defineProperty(exports, "initMobileViewport", {
                    enumerable: true,
                    get: function() {
                        return _init_mobile_viewport.default
                    }
                });
                var _devices = _interopRequireDefault(__webpack_require__( /*! ./environment/devices */ 44257));
                var _hide_top_overlay = _interopRequireDefault(__webpack_require__( /*! ./environment/hide_top_overlay */ 45527));
                var _init_mobile_viewport = _interopRequireDefault(__webpack_require__( /*! ./environment/init_mobile_viewport */ 64256));
                var _time_zone_utils = __webpack_require__( /*! ./environment/time_zone_utils */ 95256);

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
            },
        44257:
            /*!********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/core/environment/devices.js ***!
              \********************************************************************************/
            function(module, exports, __webpack_require__) {
                Object.defineProperty(exports, "default", {
                    enumerable: true,
                    get: function() {
                        return _m_devices.default
                    }
                });
                var _m_devices = (e = __webpack_require__( /*! ../../../__internal/core/m_devices */ 98905), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        83916:
            /*!**************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/core/environment/hide_callback.js ***!
              \**************************************************************************************/
            function(__unused_webpack_module, exports) {
                exports.hideCallback = void 0;
                exports.hideCallback = function() {
                    let callbacks = [];
                    return {
                        add: function(callback) {
                            if (!callbacks.includes(callback)) {
                                callbacks.push(callback)
                            }
                        },
                        remove: function(callback) {
                            const indexOfCallback = callbacks.indexOf(callback);
                            if (-1 !== indexOfCallback) {
                                callbacks.splice(indexOfCallback, 1)
                            }
                        },
                        fire: function() {
                            const callback = callbacks.pop();
                            const result = !!callback;
                            if (result) {
                                callback()
                            }
                            return result
                        },
                        hasCallback: function() {
                            return callbacks.length > 0
                        }
                    }
                }()
            },
        45527:
            /*!*****************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/core/environment/hide_top_overlay.js ***!
              \*****************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = function() {
                    return _hide_callback.hideCallback.fire()
                };
                var _hide_callback = __webpack_require__( /*! ./hide_callback */ 83916);
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        64256:
            /*!*********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/core/environment/init_mobile_viewport.js ***!
              \*********************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _init_mobile_viewport = __webpack_require__( /*! ./init_mobile_viewport/init_mobile_viewport */ 79279);
                exports.default = _init_mobile_viewport.initMobileViewport;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        79279:
            /*!******************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/core/environment/init_mobile_viewport/init_mobile_viewport.js ***!
              \******************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.initMobileViewport = void 0;
                var _size = __webpack_require__( /*! ../../../../core/utils/size */ 57653);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 64553));
                var _window = __webpack_require__( /*! ../../../../core/utils/window */ 3104);
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../events/core/events_engine */ 92774));
                var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 52576);
                var _resize_callbacks = _interopRequireDefault(__webpack_require__( /*! ../../../../core/utils/resize_callbacks */ 63283));
                var _style = __webpack_require__( /*! ../../../../core/utils/style */ 58515);
                var _m_devices = _interopRequireDefault(__webpack_require__( /*! ../../../../__internal/core/m_devices */ 98905));
                var _m_dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../../__internal/core/m_dom_adapter */ 62018));
                var _m_support = _interopRequireDefault(__webpack_require__( /*! ../../../../__internal/core/utils/m_support */ 85991));

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const window = (0, _window.getWindow)();
                exports.initMobileViewport = function(options) {
                    options = (0, _extend.extend)({}, options);
                    let realDevice = _m_devices.default.real();
                    const allowZoom = options.allowZoom;
                    const allowPan = options.allowPan;
                    const allowSelection = "allowSelection" in options ? options.allowSelection : "generic" === realDevice.platform;
                    if (!(0, _renderer.default)("meta[name=viewport]").length) {
                        (0, _renderer.default)("<meta>").attr("name", "viewport").appendTo("head")
                    }
                    const metaVerbs = ["width=device-width"];
                    const msTouchVerbs = [];
                    if (allowZoom) {
                        msTouchVerbs.push("pinch-zoom")
                    } else {
                        metaVerbs.push("initial-scale=1.0", "maximum-scale=1.0, user-scalable=no")
                    }
                    if (allowPan) {
                        msTouchVerbs.push("pan-x", "pan-y")
                    }
                    if (!allowPan && !allowZoom) {
                        (0, _renderer.default)("html, body").css({
                            msContentZooming: "none",
                            msUserSelect: "none",
                            overflow: "hidden"
                        })
                    } else {
                        (0, _renderer.default)("html").css("msOverflowStyle", "-ms-autohiding-scrollbar")
                    }
                    if (!allowSelection && _m_support.default.supportProp("userSelect")) {
                        (0, _renderer.default)(".dx-viewport").css((0, _style.styleProp)("userSelect"), "none")
                    }(0, _renderer.default)("meta[name=viewport]").attr("content", metaVerbs.join());
                    (0, _renderer.default)("html").css("msTouchAction", msTouchVerbs.join(" ") || "none");
                    realDevice = _m_devices.default.real();
                    if (_m_support.default.touch) {
                        _events_engine.default.off(_m_dom_adapter.default.getDocument(), ".dxInitMobileViewport");
                        _events_engine.default.on(_m_dom_adapter.default.getDocument(), "dxpointermove.dxInitMobileViewport", (function(e) {
                            const count = e.pointers.length;
                            const isTouchEvent = "touch" === e.pointerType;
                            const zoomDisabled = !allowZoom && count > 1;
                            const panDisabled = !allowPan && 1 === count && !e.isScrollingEvent;
                            if (isTouchEvent && (zoomDisabled || panDisabled)) {
                                e.preventDefault()
                            }
                        }))
                    }
                    if (realDevice.ios) {
                        const isPhoneGap = "file:" === _m_dom_adapter.default.getLocation().protocol;
                        if (!isPhoneGap) {
                            _resize_callbacks.default.add((function() {
                                const windowWidth = (0, _size.getWidth)(window);
                                (0, _size.setWidth)((0, _renderer.default)("body"), windowWidth)
                            }))
                        }
                    }
                    if (realDevice.android) {
                        _resize_callbacks.default.add((function() {
                            setTimeout((function() {
                                const activeElement = _m_dom_adapter.default.getActiveElement();
                                activeElement.scrollIntoViewIfNeeded ? activeElement.scrollIntoViewIfNeeded() : activeElement.scrollIntoView(false)
                            }))
                        }))
                    }
                }
            },
        95256:
            /*!****************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/core/environment/time_zone_utils.js ***!
              \****************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.getTimeZones = void 0;
                var _m_utils_time_zone = (e = __webpack_require__( /*! ../../../__internal/scheduler/m_utils_time_zone */ 18648), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                exports.getTimeZones = _m_utils_time_zone.default.getTimeZones
            },
        52391:
            /*!*******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/core/events.js ***!
              \*******************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.trigger = exports.one = exports.on = exports.off = exports.Event = void 0;
                var _events_engine = (e = __webpack_require__( /*! ./events/core/events_engine */ 92774), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                exports.on = _events_engine.default.on;
                exports.one = _events_engine.default.one;
                exports.off = _events_engine.default.off;
                exports.trigger = _events_engine.default.trigger;
                exports.Event = _events_engine.default.Event
            },
        64044:
            /*!*************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/core/events/click.js ***!
              \*************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                var _m_click = __webpack_require__( /*! ../../../__internal/events/m_click */ 28356);
                Object.keys(_m_click).forEach((function(key) {
                    if ("default" === key || "__esModule" === key) {
                        return
                    }
                    if (key in exports && exports[key] === _m_click[key]) {
                        return
                    }
                    Object.defineProperty(exports, key, {
                        enumerable: true,
                        get: function() {
                            return _m_click[key]
                        }
                    })
                }))
            },
        80248:
            /*!*******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/core/events/contextmenu.js ***!
              \*******************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                var _m_contextmenu = __webpack_require__( /*! ../../../__internal/events/m_contextmenu */ 90096);
                Object.keys(_m_contextmenu).forEach((function(key) {
                    if ("default" === key || "__esModule" === key) {
                        return
                    }
                    if (key in exports && exports[key] === _m_contextmenu[key]) {
                        return
                    }
                    Object.defineProperty(exports, key, {
                        enumerable: true,
                        get: function() {
                            return _m_contextmenu[key]
                        }
                    })
                }))
            },
        69331:
            /*!*****************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/core/events/core/emitter.feedback.js ***!
              \*****************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                var _m_emitter = __webpack_require__( /*! ../../../../__internal/events/core/m_emitter.feedback */ 14911);
                Object.keys(_m_emitter).forEach((function(key) {
                    if ("default" === key || "__esModule" === key) {
                        return
                    }
                    if (key in exports && exports[key] === _m_emitter[key]) {
                        return
                    }
                    Object.defineProperty(exports, key, {
                        enumerable: true,
                        get: function() {
                            return _m_emitter[key]
                        }
                    })
                }))
            },
        59e3:
            /*!********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/core/events/core/emitter.js ***!
              \********************************************************************************/
            function(module, exports, __webpack_require__) {
                Object.defineProperty(exports, "default", {
                    enumerable: true,
                    get: function() {
                        return _m_emitter.default
                    }
                });
                var _m_emitter = (e = __webpack_require__( /*! ../../../../__internal/events/core/m_emitter */ 96292), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        81411:
            /*!********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/core/events/core/emitter_registrator.js ***!
              \********************************************************************************************/
            function(module, exports, __webpack_require__) {
                Object.defineProperty(exports, "default", {
                    enumerable: true,
                    get: function() {
                        return _m_emitter_registrator.default
                    }
                });
                var _m_emitter_registrator = (e = __webpack_require__( /*! ../../../../__internal/events/core/m_emitter_registrator */ 58063), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        15273:
            /*!******************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/core/events/core/event_registrator.js ***!
              \******************************************************************************************/
            function(module, exports, __webpack_require__) {
                Object.defineProperty(exports, "default", {
                    enumerable: true,
                    get: function() {
                        return _m_event_registrator.default
                    }
                });
                var _m_event_registrator = (e = __webpack_require__( /*! ../../../../__internal/events/core/m_event_registrator */ 65381), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        85030:
            /*!****************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/core/events/core/event_registrator_callbacks.js ***!
              \****************************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _memorized_callbacks = (e = __webpack_require__( /*! ../../../../core/memorized_callbacks */ 35329), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                exports.default = new _memorized_callbacks.default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        92774:
            /*!**************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/core/events/core/events_engine.js ***!
              \**************************************************************************************/
            function(module, exports, __webpack_require__) {
                Object.defineProperty(exports, "default", {
                    enumerable: true,
                    get: function() {
                        return _m_events_engine.default
                    }
                });
                var _m_events_engine = (e = __webpack_require__( /*! ../../../../__internal/events/core/m_events_engine */ 36306), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        65462:
            /*!*****************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/core/events/core/hook_touch_props.js ***!
              \*****************************************************************************************/
            function(module, exports, __webpack_require__) {
                Object.defineProperty(exports, "default", {
                    enumerable: true,
                    get: function() {
                        return _m_hook_touch_props.default
                    }
                });
                var _m_hook_touch_props = (e = __webpack_require__( /*! ../../../../__internal/events/core/m_hook_touch_props */ 40866), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        52818:
            /*!*******************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/core/events/core/keyboard_processor.js ***!
              \*******************************************************************************************/
            function(module, exports, __webpack_require__) {
                Object.defineProperty(exports, "default", {
                    enumerable: true,
                    get: function() {
                        return _m_keyboard_processor.default
                    }
                });
                var _m_keyboard_processor = (e = __webpack_require__( /*! ../../../../__internal/events/core/m_keyboard_processor */ 34422), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        37373:
            /*!******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/core/events/core/wheel.js ***!
              \******************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                var _m_wheel = __webpack_require__( /*! ../../../../__internal/events/core/m_wheel */ 58065);
                Object.keys(_m_wheel).forEach((function(key) {
                    if ("default" === key || "__esModule" === key) {
                        return
                    }
                    if (key in exports && exports[key] === _m_wheel[key]) {
                        return
                    }
                    Object.defineProperty(exports, key, {
                        enumerable: true,
                        get: function() {
                            return _m_wheel[key]
                        }
                    })
                }))
            },
        5636:
            /*!********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/core/events/double_click.js ***!
              \********************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "name", {
                    enumerable: true,
                    get: function() {
                        return _m_dblclick.name
                    }
                });
                var _m_dblclick = __webpack_require__( /*! ../../../__internal/events/m_dblclick */ 36212);
                var _event_registrator = (e = __webpack_require__( /*! ./core/event_registrator */ 15273), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                (0, _event_registrator.default)(_m_dblclick.name, _m_dblclick.dblClick)
            },
        59144:
            /*!************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/core/events/drag.js ***!
              \************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                var _m_drag = __webpack_require__( /*! ../../../__internal/events/m_drag */ 88480);
                Object.keys(_m_drag).forEach((function(key) {
                    if ("default" === key || "__esModule" === key) {
                        return
                    }
                    if (key in exports && exports[key] === _m_drag[key]) {
                        return
                    }
                    Object.defineProperty(exports, key, {
                        enumerable: true,
                        get: function() {
                            return _m_drag[key]
                        }
                    })
                }))
            },
        85915:
            /*!*******************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/core/events/gesture/emitter.gesture.js ***!
              \*******************************************************************************************/
            function(module, exports, __webpack_require__) {
                Object.defineProperty(exports, "default", {
                    enumerable: true,
                    get: function() {
                        return _m_emitter.default
                    }
                });
                var _m_emitter = (e = __webpack_require__( /*! ../../../../__internal/events/gesture/m_emitter.gesture */ 77859), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        86548:
            /*!**************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/core/events/gesture/emitter.gesture.scroll.js ***!
              \**************************************************************************************************/
            function(module, exports, __webpack_require__) {
                Object.defineProperty(exports, "default", {
                    enumerable: true,
                    get: function() {
                        return _m_emitterGesture.default
                    }
                });
                var _m_emitterGesture = (e = __webpack_require__( /*! ../../../../__internal/events/gesture/m_emitter.gesture.scroll */ 18572), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        68095:
            /*!************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/core/events/hold.js ***!
              \************************************************************************/
            function(module, exports, __webpack_require__) {
                Object.defineProperty(exports, "default", {
                    enumerable: true,
                    get: function() {
                        return _m_hold.default
                    }
                });
                var _m_hold = (e = __webpack_require__( /*! ../../../__internal/events/m_hold */ 3111), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        638:
            /*!*************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/core/events/hover.js ***!
              \*************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                var _m_hover = __webpack_require__( /*! ../../../__internal/events/m_hover */ 57798);
                Object.keys(_m_hover).forEach((function(key) {
                    if ("default" === key || "__esModule" === key) {
                        return
                    }
                    if (key in exports && exports[key] === _m_hover[key]) {
                        return
                    }
                    Object.defineProperty(exports, key, {
                        enumerable: true,
                        get: function() {
                            return _m_hover[key]
                        }
                    })
                }))
            },
        89797:
            /*!***************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/core/events/pointer.js ***!
              \***************************************************************************/
            function(module, exports, __webpack_require__) {
                Object.defineProperty(exports, "default", {
                    enumerable: true,
                    get: function() {
                        return _m_pointer.default
                    }
                });
                var _m_pointer = (e = __webpack_require__( /*! ../../../__internal/events/m_pointer */ 24381), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        725:
            /*!********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/core/events/pointer/base.js ***!
              \********************************************************************************/
            function(module, exports, __webpack_require__) {
                Object.defineProperty(exports, "default", {
                    enumerable: true,
                    get: function() {
                        return _m_base.default
                    }
                });
                var _m_base = (e = __webpack_require__( /*! ../../../../__internal/events/pointer/m_base */ 37321), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        5949:
            /*!*********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/core/events/pointer/mouse.js ***!
              \*********************************************************************************/
            function(module, exports, __webpack_require__) {
                Object.defineProperty(exports, "default", {
                    enumerable: true,
                    get: function() {
                        return _m_mouse.default
                    }
                });
                var _m_mouse = (e = __webpack_require__( /*! ../../../../__internal/events/pointer/m_mouse */ 45841), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        71887:
            /*!*******************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/core/events/pointer/mouse_and_touch.js ***!
              \*******************************************************************************************/
            function(module, exports, __webpack_require__) {
                Object.defineProperty(exports, "default", {
                    enumerable: true,
                    get: function() {
                        return _m_mouse_and_touch.default
                    }
                });
                var _m_mouse_and_touch = (e = __webpack_require__( /*! ../../../../__internal/events/pointer/m_mouse_and_touch */ 60699), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        38242:
            /*!************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/core/events/pointer/observer.js ***!
              \************************************************************************************/
            function(module, exports, __webpack_require__) {
                Object.defineProperty(exports, "default", {
                    enumerable: true,
                    get: function() {
                        return _m_observer.default
                    }
                });
                var _m_observer = (e = __webpack_require__( /*! ../../../../__internal/events/pointer/m_observer */ 62814), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        71017:
            /*!*********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/core/events/pointer/touch.js ***!
              \*********************************************************************************/
            function(module, exports, __webpack_require__) {
                Object.defineProperty(exports, "default", {
                    enumerable: true,
                    get: function() {
                        return _m_touch.default
                    }
                });
                var _m_touch = (e = __webpack_require__( /*! ../../../../__internal/events/pointer/m_touch */ 95253), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        28630:
            /*!**************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/core/events/remove.js ***!
              \**************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                var _m_remove = __webpack_require__( /*! ../../../__internal/events/m_remove */ 92686);
                Object.keys(_m_remove).forEach((function(key) {
                    if ("default" === key || "__esModule" === key) {
                        return
                    }
                    if (key in exports && exports[key] === _m_remove[key]) {
                        return
                    }
                    Object.defineProperty(exports, key, {
                        enumerable: true,
                        get: function() {
                            return _m_remove[key]
                        }
                    })
                }))
            },
        42222:
            /*!*************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/core/events/short.js ***!
              \*************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                var _m_short = __webpack_require__( /*! ../../../__internal/events/m_short */ 43926);
                Object.keys(_m_short).forEach((function(key) {
                    if ("default" === key || "__esModule" === key) {
                        return
                    }
                    if (key in exports && exports[key] === _m_short[key]) {
                        return
                    }
                    Object.defineProperty(exports, key, {
                        enumerable: true,
                        get: function() {
                            return _m_short[key]
                        }
                    })
                }))
            },
        80250:
            /*!*************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/core/events/swipe.js ***!
              \*************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                var _m_swipe = __webpack_require__( /*! ../../../__internal/events/m_swipe */ 6066);
                Object.keys(_m_swipe).forEach((function(key) {
                    if ("default" === key || "__esModule" === key) {
                        return
                    }
                    if (key in exports && exports[key] === _m_swipe[key]) {
                        return
                    }
                    Object.defineProperty(exports, key, {
                        enumerable: true,
                        get: function() {
                            return _m_swipe[key]
                        }
                    })
                }))
            },
        37008:
            /*!*****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/core/events/transform.js ***!
              \*****************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.zoomstart = exports.zoomend = exports.zoom = exports.translatestart = exports.translateend = exports.translate = exports.transformstart = exports.transformend = exports.transform = exports.rotatestart = exports.rotateend = exports.rotate = exports.pinchstart = exports.pinchend = exports.pinch = void 0;
                var _m_transform = __webpack_require__( /*! ../../../__internal/events/m_transform */ 68264);
                const {
                    transformstart: transformstart,
                    transform: transform,
                    transformend: transformend,
                    translatestart: translatestart,
                    translate: translate,
                    translateend: translateend,
                    zoomstart: zoomstart,
                    zoom: zoom,
                    zoomend: zoomend,
                    pinchstart: pinchstart,
                    pinch: pinch,
                    pinchend: pinchend,
                    rotatestart: rotatestart,
                    rotate: rotate,
                    rotateend: rotateend
                } = _m_transform.exportNames;
                exports.rotateend = rotateend;
                exports.rotate = rotate;
                exports.rotatestart = rotatestart;
                exports.pinchend = pinchend;
                exports.pinch = pinch;
                exports.pinchstart = pinchstart;
                exports.zoomend = zoomend;
                exports.zoom = zoom;
                exports.zoomstart = zoomstart;
                exports.translateend = translateend;
                exports.translate = translate;
                exports.translatestart = translatestart;
                exports.transformend = transformend;
                exports.transform = transform;
                exports.transformstart = transformstart
            },
        47413:
            /*!***********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/core/events/utils/event_nodes_disposing.js ***!
              \***********************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                var _m_event_nodes_disposing = __webpack_require__( /*! ../../../../__internal/events/utils/m_event_nodes_disposing */ 68337);
                Object.keys(_m_event_nodes_disposing).forEach((function(key) {
                    if ("default" === key || "__esModule" === key) {
                        return
                    }
                    if (key in exports && exports[key] === _m_event_nodes_disposing[key]) {
                        return
                    }
                    Object.defineProperty(exports, key, {
                        enumerable: true,
                        get: function() {
                            return _m_event_nodes_disposing[key]
                        }
                    })
                }))
            },
        45280:
            /*!**************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/core/events/utils/event_target.js ***!
              \**************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                var _m_event_target = __webpack_require__( /*! ../../../../__internal/events/utils/m_event_target */ 86940);
                Object.keys(_m_event_target).forEach((function(key) {
                    if ("default" === key || "__esModule" === key) {
                        return
                    }
                    if (key in exports && exports[key] === _m_event_target[key]) {
                        return
                    }
                    Object.defineProperty(exports, key, {
                        enumerable: true,
                        get: function() {
                            return _m_event_target[key]
                        }
                    })
                }))
            },
        98834:
            /*!*******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/core/events/utils/index.js ***!
              \*******************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                var _index = __webpack_require__( /*! ../../../../__internal/events/utils/index */ 61210);
                Object.keys(_index).forEach((function(key) {
                    if ("default" === key || "__esModule" === key) {
                        return
                    }
                    if (key in exports && exports[key] === _index[key]) {
                        return
                    }
                    Object.defineProperty(exports, key, {
                        enumerable: true,
                        get: function() {
                            return _index[key]
                        }
                    })
                }))
            },
        18029:
            /*!*************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/core/events/visibility_change.js ***!
              \*************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.triggerShownEvent = exports.triggerResizeEvent = exports.triggerHidingEvent = exports.default = void 0;
                var _m_visibility_change = (e = __webpack_require__( /*! ../../../__internal/events/m_visibility_change */ 52997), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                exports.triggerShownEvent = _m_visibility_change.default.triggerShownEvent;
                exports.triggerHidingEvent = _m_visibility_change.default.triggerHidingEvent;
                exports.triggerResizeEvent = _m_visibility_change.default.triggerResizeEvent;
                exports.default = _m_visibility_change.default
            },
        46795:
            /*!*************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/core/localization.js ***!
              \*************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "date", {
                    enumerable: true,
                    get: function() {
                        return _date.default
                    }
                });
                exports.disableIntl = function() {
                    if ("intl" === _number.default.engine()) {
                        _number.default.resetInjection()
                    }
                    if ("intl" === _date.default.engine()) {
                        _date.default.resetInjection()
                    }
                };
                exports.locale = exports.loadMessages = exports.formatNumber = exports.formatMessage = exports.formatDate = void 0;
                Object.defineProperty(exports, "message", {
                    enumerable: true,
                    get: function() {
                        return _message.default
                    }
                });
                Object.defineProperty(exports, "number", {
                    enumerable: true,
                    get: function() {
                        return _number.default
                    }
                });
                exports.parseNumber = exports.parseDate = void 0;
                var _core = _interopRequireDefault(__webpack_require__( /*! ./localization/core */ 84109));
                var _message = _interopRequireDefault(__webpack_require__( /*! ./localization/message */ 4671));
                var _number = _interopRequireDefault(__webpack_require__( /*! ./localization/number */ 52771));
                var _date = _interopRequireDefault(__webpack_require__( /*! ./localization/date */ 38662));
                __webpack_require__( /*! ./localization/currency */ 17333);

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                exports.locale = _core.default.locale.bind(_core.default);
                exports.loadMessages = _message.default.load.bind(_message.default);
                exports.formatMessage = _message.default.format.bind(_message.default);
                exports.formatNumber = _number.default.format.bind(_number.default);
                exports.parseNumber = _number.default.parse.bind(_number.default);
                exports.formatDate = _date.default.format.bind(_date.default);
                exports.parseDate = _date.default.parse.bind(_date.default)
            },
        55581:
            /*!******************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/core/localization/cldr-data/accounting_formats.js ***!
              \******************************************************************************************************/
            function(module, exports) {
                exports.default = void 0;
                // !!! AUTO-GENERATED FILE, DO NOT EDIT
                exports.default = {
                    af: "\xa4#,##0.00;(\xa4#,##0.00)",
                    "af-NA": "\xa4#,##0.00;(\xa4#,##0.00)",
                    agq: "#,##0.00\xa4",
                    ak: "\xa4#,##0.00",
                    am: "\xa4#,##0.00;(\xa4#,##0.00)",
                    ar: "\xa4#,##0.00;(\xa4#,##0.00)",
                    "ar-AE": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "ar-BH": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "ar-DJ": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "ar-DZ": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "ar-EG": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "ar-EH": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "ar-ER": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "ar-IL": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "ar-IQ": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "ar-JO": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "ar-KM": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "ar-KW": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "ar-LB": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "ar-LY": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "ar-MA": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "ar-MR": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "ar-OM": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "ar-PS": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "ar-QA": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "ar-SA": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "ar-SD": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "ar-SO": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "ar-SS": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "ar-SY": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "ar-TD": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "ar-TN": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "ar-YE": "\xa4#,##0.00;(\xa4#,##0.00)",
                    as: "\xa4\xa0#,##,##0.00",
                    asa: "#,##0.00\xa0\xa4",
                    ast: "#,##0.00\xa0\xa4",
                    az: "#,##0.00\xa0\xa4",
                    "az-Cyrl": "#,##0.00\xa0\xa4",
                    "az-Latn": "#,##0.00\xa0\xa4",
                    bas: "#,##0.00\xa0\xa4",
                    be: "#,##0.00\xa0\xa4",
                    "be-tarask": "#,##0.00\xa0\xa4",
                    bem: "\xa4#,##0.00;(\xa4#,##0.00)",
                    bez: "#,##0.00\xa4",
                    bg: "0.00\xa0\xa4;(0.00\xa0\xa4)",
                    bm: "\xa4#,##0.00;(\xa4#,##0.00)",
                    bn: "#,##,##0.00\xa4;(#,##,##0.00\xa4)",
                    "bn-IN": "#,##,##0.00\xa4;(#,##,##0.00\xa4)",
                    bo: "\xa4\xa0#,##0.00",
                    "bo-IN": "\xa4\xa0#,##0.00",
                    br: "#,##0.00\xa0\xa4",
                    brx: "\xa4\xa0#,##,##0.00",
                    bs: "#,##0.00\xa0\xa4",
                    "bs-Cyrl": "#,##0.00\xa0\xa4",
                    "bs-Latn": "#,##0.00\xa0\xa4",
                    ca: "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "ca-AD": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "ca-ES-valencia": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "ca-FR": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "ca-IT": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    ccp: "#,##,##0.00\xa4;(#,##,##0.00\xa4)",
                    "ccp-IN": "#,##,##0.00\xa4;(#,##,##0.00\xa4)",
                    ce: "#,##0.00\xa0\xa4",
                    ceb: "\xa4#,##0.00;(\xa4#,##0.00)",
                    cgg: "\xa4#,##0.00",
                    chr: "\xa4#,##0.00;(\xa4#,##0.00)",
                    ckb: "\xa4\xa0#,##0.00",
                    "ckb-IR": "\xa4\xa0#,##0.00",
                    cs: "#,##0.00\xa0\xa4",
                    cy: "\xa4#,##0.00;(\xa4#,##0.00)",
                    da: "#,##0.00\xa0\xa4",
                    "da-GL": "#,##0.00\xa0\xa4",
                    dav: "\xa4#,##0.00;(\xa4#,##0.00)",
                    de: "#,##0.00\xa0\xa4",
                    "de-AT": "#,##0.00\xa0\xa4",
                    "de-BE": "#,##0.00\xa0\xa4",
                    "de-CH": "#,##0.00\xa0\xa4",
                    "de-IT": "#,##0.00\xa0\xa4",
                    "de-LI": "#,##0.00\xa0\xa4",
                    "de-LU": "#,##0.00\xa0\xa4",
                    dje: "#,##0.00\xa4",
                    doi: "\xa4#,##0.00",
                    dsb: "#,##0.00\xa0\xa4",
                    dua: "#,##0.00\xa0\xa4",
                    dyo: "#,##0.00\xa0\xa4",
                    dz: "\xa4#,##,##0.00",
                    ebu: "\xa4#,##0.00;(\xa4#,##0.00)",
                    ee: "\xa4#,##0.00;(\xa4#,##0.00)",
                    "ee-TG": "\xa4#,##0.00;(\xa4#,##0.00)",
                    el: "#,##0.00\xa0\xa4",
                    "el-CY": "#,##0.00\xa0\xa4",
                    en: "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-001": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-150": "#,##0.00\xa0\xa4",
                    "en-AE": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-AG": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-AI": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-AS": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-AT": "\xa4\xa0#,##0.00",
                    "en-AU": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-BB": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-BE": "#,##0.00\xa0\xa4",
                    "en-BI": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-BM": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-BS": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-BW": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-BZ": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-CA": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-CC": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-CH": "\xa4\xa0#,##0.00;\xa4-#,##0.00",
                    "en-CK": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-CM": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-CX": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-CY": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-DE": "#,##0.00\xa0\xa4",
                    "en-DG": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-DK": "#,##0.00\xa0\xa4",
                    "en-DM": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-ER": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-FI": "#,##0.00\xa0\xa4",
                    "en-FJ": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-FK": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-FM": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-GB": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-GD": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-GG": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-GH": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-GI": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-GM": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-GU": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-GY": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-HK": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-IE": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-IL": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-IM": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-IN": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-IO": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-JE": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-JM": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-KE": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-KI": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-KN": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-KY": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-LC": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-LR": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-LS": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-MG": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-MH": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-MO": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-MP": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-MS": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-MT": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-MU": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-MV": "\xa4\xa0#,##0.00",
                    "en-MW": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-MY": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-NA": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-NF": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-NG": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-NL": "\xa4\xa0#,##0.00;(\xa4\xa0#,##0.00)",
                    "en-NR": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-NU": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-NZ": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-PG": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-PH": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-PK": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-PN": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-PR": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-PW": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-RW": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-SB": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-SC": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-SD": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-SE": "#,##0.00\xa0\xa4",
                    "en-SG": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-SH": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-SI": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "en-SL": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-SS": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-SX": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-SZ": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-TC": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-TK": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-TO": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-TT": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-TV": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-TZ": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-UG": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-UM": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-VC": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-VG": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-VI": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-VU": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-WS": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-ZA": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-ZM": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-ZW": "\xa4#,##0.00;(\xa4#,##0.00)",
                    eo: "\xa4\xa0#,##0.00",
                    es: "#,##0.00\xa0\xa4",
                    "es-419": "\xa4#,##0.00",
                    "es-AR": "\xa4\xa0#,##0.00;(\xa4\xa0#,##0.00)",
                    "es-BO": "\xa4#,##0.00",
                    "es-BR": "\xa4#,##0.00",
                    "es-BZ": "\xa4#,##0.00",
                    "es-CL": "\xa4#,##0.00",
                    "es-CO": "\xa4#,##0.00",
                    "es-CR": "\xa4#,##0.00",
                    "es-CU": "\xa4#,##0.00",
                    "es-DO": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "es-EA": "#,##0.00\xa0\xa4",
                    "es-EC": "\xa4#,##0.00",
                    "es-GQ": "#,##0.00\xa0\xa4",
                    "es-GT": "\xa4#,##0.00",
                    "es-HN": "\xa4#,##0.00",
                    "es-IC": "#,##0.00\xa0\xa4",
                    "es-MX": "\xa4#,##0.00",
                    "es-NI": "\xa4#,##0.00",
                    "es-PA": "\xa4#,##0.00",
                    "es-PE": "\xa4#,##0.00",
                    "es-PH": "#,##0.00\xa0\xa4",
                    "es-PR": "\xa4#,##0.00",
                    "es-PY": "\xa4#,##0.00",
                    "es-SV": "\xa4#,##0.00",
                    "es-US": "\xa4#,##0.00",
                    "es-UY": "\xa4\xa0#,##0.00;(\xa4\xa0#,##0.00)",
                    "es-VE": "\xa4#,##0.00",
                    et: "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    eu: "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    ewo: "#,##0.00\xa0\xa4",
                    fa: "\u200e\xa4\xa0#,##0.00;\u200e(\xa4\xa0#,##0.00)",
                    "fa-AF": "\xa4\xa0#,##0.00;\u200e(\xa4\xa0#,##0.00)",
                    ff: "#,##0.00\xa0\xa4",
                    "ff-Adlm": "\xa4\xa0#,##0.00",
                    "ff-Adlm-BF": "\xa4\xa0#,##0.00",
                    "ff-Adlm-CM": "\xa4\xa0#,##0.00",
                    "ff-Adlm-GH": "\xa4\xa0#,##0.00",
                    "ff-Adlm-GM": "\xa4\xa0#,##0.00",
                    "ff-Adlm-GW": "\xa4\xa0#,##0.00",
                    "ff-Adlm-LR": "\xa4\xa0#,##0.00",
                    "ff-Adlm-MR": "\xa4\xa0#,##0.00",
                    "ff-Adlm-NE": "\xa4\xa0#,##0.00",
                    "ff-Adlm-NG": "\xa4\xa0#,##0.00",
                    "ff-Adlm-SL": "\xa4\xa0#,##0.00",
                    "ff-Adlm-SN": "\xa4\xa0#,##0.00",
                    "ff-Latn": "#,##0.00\xa0\xa4",
                    "ff-Latn-BF": "#,##0.00\xa0\xa4",
                    "ff-Latn-CM": "#,##0.00\xa0\xa4",
                    "ff-Latn-GH": "#,##0.00\xa0\xa4",
                    "ff-Latn-GM": "#,##0.00\xa0\xa4",
                    "ff-Latn-GN": "#,##0.00\xa0\xa4",
                    "ff-Latn-GW": "#,##0.00\xa0\xa4",
                    "ff-Latn-LR": "#,##0.00\xa0\xa4",
                    "ff-Latn-MR": "#,##0.00\xa0\xa4",
                    "ff-Latn-NE": "#,##0.00\xa0\xa4",
                    "ff-Latn-NG": "#,##0.00\xa0\xa4",
                    "ff-Latn-SL": "#,##0.00\xa0\xa4",
                    fi: "#,##0.00\xa0\xa4",
                    fil: "\xa4#,##0.00;(\xa4#,##0.00)",
                    fo: "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fo-DK": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    fr: "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-BE": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-BF": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-BI": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-BJ": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-BL": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-CA": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-CD": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-CF": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-CG": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-CH": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-CI": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-CM": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-DJ": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-DZ": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-GA": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-GF": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-GN": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-GP": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-GQ": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-HT": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-KM": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-LU": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-MA": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-MC": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-MF": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-MG": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-ML": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-MQ": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-MR": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-MU": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-NC": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-NE": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-PF": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-PM": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-RE": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-RW": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-SC": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-SN": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-SY": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-TD": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-TG": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-TN": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-VU": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-WF": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-YT": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    fur: "\xa4\xa0#,##0.00",
                    fy: "\xa4\xa0#,##0.00;(\xa4\xa0#,##0.00)",
                    ga: "\xa4#,##0.00;(\xa4#,##0.00)",
                    "ga-GB": "\xa4#,##0.00;(\xa4#,##0.00)",
                    gd: "\xa4#,##0.00;(\xa4#,##0.00)",
                    gl: "#,##0.00\xa0\xa4",
                    gsw: "#,##0.00\xa0\xa4",
                    "gsw-FR": "#,##0.00\xa0\xa4",
                    "gsw-LI": "#,##0.00\xa0\xa4",
                    gu: "\xa4#,##,##0.00;(\xa4#,##,##0.00)",
                    guz: "\xa4#,##0.00;(\xa4#,##0.00)",
                    gv: "\xa4#,##0.00",
                    ha: "\xa4\xa0#,##0.00",
                    "ha-GH": "\xa4\xa0#,##0.00",
                    "ha-NE": "\xa4\xa0#,##0.00",
                    haw: "\xa4#,##0.00;(\xa4#,##0.00)",
                    he: "#,##0.00\xa0\xa4",
                    hi: "\xa4#,##,##0.00",
                    "hi-Latn": "\xa4#,##,##0.00",
                    hr: "#,##0.00\xa0\xa4",
                    "hr-BA": "#,##0.00\xa0\xa4",
                    hsb: "#,##0.00\xa0\xa4",
                    hu: "#,##0.00\xa0\xa4",
                    hy: "#,##0.00\xa0\xa4",
                    ia: "\xa4\xa0#,##0.00;(\xa4\xa0#,##0.00)",
                    id: "\xa4#,##0.00",
                    ig: "\xa4#,##0.00;(\xa4#,##0.00)",
                    ii: "\xa4\xa0#,##0.00",
                    is: "#,##0.00\xa0\xa4",
                    it: "#,##0.00\xa0\xa4",
                    "it-CH": "#,##0.00\xa0\xa4",
                    "it-SM": "#,##0.00\xa0\xa4",
                    "it-VA": "#,##0.00\xa0\xa4",
                    ja: "\xa4#,##0.00;(\xa4#,##0.00)",
                    jgo: "\xa4\xa0#,##0.00",
                    jmc: "\xa4#,##0.00",
                    jv: "\xa4\xa0#,##0.00",
                    ka: "#,##0.00\xa0\xa4",
                    kab: "#,##0.00\xa4",
                    kam: "\xa4#,##0.00;(\xa4#,##0.00)",
                    kde: "\xa4#,##0.00;(\xa4#,##0.00)",
                    kea: "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    kgp: "\xa4\xa0#,##0.00",
                    khq: "#,##0.00\xa4",
                    ki: "\xa4#,##0.00;(\xa4#,##0.00)",
                    kk: "#,##0.00\xa0\xa4",
                    kkj: "\xa4\xa0#,##0.00",
                    kl: "\xa4#,##0.00;\xa4-#,##0.00",
                    kln: "\xa4#,##0.00;(\xa4#,##0.00)",
                    km: "#,##0.00\xa4;(#,##0.00\xa4)",
                    kn: "\xa4#,##0.00;(\xa4#,##0.00)",
                    ko: "\xa4#,##0.00;(\xa4#,##0.00)",
                    "ko-KP": "\xa4#,##0.00;(\xa4#,##0.00)",
                    kok: "\xa4#,##0.00;(\xa4#,##0.00)",
                    ks: "\xa4#,##0.00",
                    "ks-Arab": "\xa4#,##0.00",
                    "ks-Deva": "\xa4\xa0#,##0.00",
                    ksb: "#,##0.00\xa4",
                    ksf: "#,##0.00\xa0\xa4",
                    ksh: "#,##0.00\xa0\xa4",
                    ku: "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    kw: "\xa4#,##0.00",
                    ky: "#,##0.00\xa0\xa4",
                    lag: "\xa4\xa0#,##0.00",
                    lb: "#,##0.00\xa0\xa4",
                    lg: "#,##0.00\xa4",
                    lkt: "\xa4\xa0#,##0.00",
                    ln: "#,##0.00\xa0\xa4",
                    "ln-AO": "#,##0.00\xa0\xa4",
                    "ln-CF": "#,##0.00\xa0\xa4",
                    "ln-CG": "#,##0.00\xa0\xa4",
                    lo: "\xa4#,##0.00;\xa4-#,##0.00",
                    lrc: "\xa4\xa0#,##0.00",
                    "lrc-IQ": "\xa4\xa0#,##0.00",
                    lt: "#,##0.00\xa0\xa4",
                    lu: "#,##0.00\xa4",
                    luo: "#,##0.00\xa4",
                    luy: "\xa4#,##0.00;\xa4-\xa0#,##0.00",
                    lv: "#,##0.00\xa0\xa4",
                    mai: "\xa4\xa0#,##0.00",
                    mas: "\xa4#,##0.00;(\xa4#,##0.00)",
                    "mas-TZ": "\xa4#,##0.00;(\xa4#,##0.00)",
                    mer: "\xa4#,##0.00;(\xa4#,##0.00)",
                    mfe: "\xa4\xa0#,##0.00",
                    mg: "\xa4#,##0.00",
                    mgh: "\xa4\xa0#,##0.00",
                    mgo: "\xa4\xa0#,##0.00",
                    mi: "\xa4\xa0#,##0.00",
                    mk: "#,##0.00\xa0\xa4",
                    ml: "\xa4#,##0.00;(\xa4#,##0.00)",
                    mn: "\xa4\xa0#,##0.00",
                    mni: "\xa4\xa0#,##0.00",
                    "mni-Beng": "\xa4\xa0#,##0.00",
                    mr: "\xa4#,##0.00;(\xa4#,##0.00)",
                    ms: "\xa4#,##0.00;(\xa4#,##0.00)",
                    "ms-BN": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "ms-ID": "\xa4#,##0.00",
                    "ms-SG": "\xa4#,##0.00;(\xa4#,##0.00)",
                    mt: "\xa4#,##0.00",
                    mua: "\xa4#,##0.00;(\xa4#,##0.00)",
                    my: "\xa4\xa0#,##0.00",
                    mzn: "\xa4\xa0#,##0.00",
                    naq: "\xa4#,##0.00",
                    nb: "\xa4\xa0#,##0.00;(\xa4\xa0#,##0.00)",
                    "nb-SJ": "\xa4\xa0#,##0.00;(\xa4\xa0#,##0.00)",
                    nd: "\xa4#,##0.00;(\xa4#,##0.00)",
                    nds: "\xa4\xa0#,##0.00",
                    "nds-NL": "\xa4\xa0#,##0.00",
                    ne: "\xa4\xa0#,##,##0.00",
                    "ne-IN": "\xa4\xa0#,##,##0.00",
                    nl: "\xa4\xa0#,##0.00;(\xa4\xa0#,##0.00)",
                    "nl-AW": "\xa4\xa0#,##0.00;(\xa4\xa0#,##0.00)",
                    "nl-BE": "\xa4\xa0#,##0.00;(\xa4\xa0#,##0.00)",
                    "nl-BQ": "\xa4\xa0#,##0.00;(\xa4\xa0#,##0.00)",
                    "nl-CW": "\xa4\xa0#,##0.00;(\xa4\xa0#,##0.00)",
                    "nl-SR": "\xa4\xa0#,##0.00;(\xa4\xa0#,##0.00)",
                    "nl-SX": "\xa4\xa0#,##0.00;(\xa4\xa0#,##0.00)",
                    nmg: "#,##0.00\xa0\xa4",
                    nn: "#,##0.00\xa0\xa4",
                    nnh: "\xa4\xa0#,##0.00",
                    no: "\xa4\xa0#,##0.00;(\xa4\xa0#,##0.00)",
                    nus: "\xa4#,##0.00;(\xa4#,##0.00)",
                    nyn: "\xa4#,##0.00",
                    om: "\xa4#,##0.00",
                    "om-KE": "\xa4#,##0.00",
                    or: "\xa4#,##0.00;(\xa4#,##0.00)",
                    os: "\xa4\xa0#,##0.00",
                    "os-RU": "\xa4\xa0#,##0.00",
                    pa: "\xa4\xa0#,##0.00",
                    "pa-Arab": "\xa4\xa0#,##0.00",
                    "pa-Guru": "\xa4\xa0#,##0.00",
                    pcm: "\xa4#,##0.00",
                    pl: "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    ps: "\xa4#,##0.00;(\xa4#,##0.00)",
                    "ps-PK": "\xa4#,##0.00;(\xa4#,##0.00)",
                    pt: "\xa4\xa0#,##0.00",
                    "pt-AO": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "pt-CH": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "pt-CV": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "pt-GQ": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "pt-GW": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "pt-LU": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "pt-MO": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "pt-MZ": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "pt-PT": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "pt-ST": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "pt-TL": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    qu: "\xa4\xa0#,##0.00",
                    "qu-BO": "\xa4\xa0#,##0.00",
                    "qu-EC": "\xa4\xa0#,##0.00",
                    rm: "#,##0.00\xa0\xa4",
                    rn: "#,##0.00\xa4",
                    ro: "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "ro-MD": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    rof: "\xa4#,##0.00",
                    ru: "#,##0.00\xa0\xa4",
                    "ru-BY": "#,##0.00\xa0\xa4",
                    "ru-KG": "#,##0.00\xa0\xa4",
                    "ru-KZ": "#,##0.00\xa0\xa4",
                    "ru-MD": "#,##0.00\xa0\xa4",
                    "ru-UA": "#,##0.00\xa0\xa4",
                    rw: "\xa4\xa0#,##0.00",
                    rwk: "#,##0.00\xa4",
                    sa: "\xa4\xa0#,##0.00",
                    sah: "#,##0.00\xa0\xa4",
                    saq: "\xa4#,##0.00;(\xa4#,##0.00)",
                    sat: "\xa4\xa0#,##0.00",
                    "sat-Olck": "\xa4\xa0#,##0.00",
                    sbp: "#,##0.00\xa4",
                    sc: "#,##0.00\xa0\xa4",
                    sd: "\xa4\xa0#,##0.00",
                    "sd-Arab": "\xa4\xa0#,##0.00",
                    "sd-Deva": "\xa4\xa0#,##0.00",
                    se: "#,##0.00\xa0\xa4",
                    "se-FI": "#,##0.00\xa0\xa4",
                    "se-SE": "#,##0.00\xa0\xa4",
                    seh: "#,##0.00\xa4",
                    ses: "#,##0.00\xa4",
                    sg: "\xa4#,##0.00;\xa4-#,##0.00",
                    shi: "#,##0.00\xa4",
                    "shi-Latn": "#,##0.00\xa4",
                    "shi-Tfng": "#,##0.00\xa4",
                    si: "\xa4#,##0.00;(\xa4#,##0.00)",
                    sk: "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    sl: "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    smn: "#,##0.00\xa0\xa4",
                    sn: "\xa4#,##0.00;(\xa4#,##0.00)",
                    so: "\xa4#,##0.00;(\xa4#,##0.00)",
                    "so-DJ": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "so-ET": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "so-KE": "\xa4#,##0.00;(\xa4#,##0.00)",
                    sq: "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "sq-MK": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "sq-XK": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    sr: "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "sr-Cyrl": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "sr-Cyrl-BA": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "sr-Cyrl-ME": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "sr-Cyrl-XK": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "sr-Latn": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "sr-Latn-BA": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "sr-Latn-ME": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "sr-Latn-XK": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    su: "\xa4#,##0.00",
                    "su-Latn": "\xa4#,##0.00",
                    sv: "#,##0.00\xa0\xa4",
                    "sv-AX": "#,##0.00\xa0\xa4",
                    "sv-FI": "#,##0.00\xa0\xa4",
                    sw: "\xa4\xa0#,##0.00",
                    "sw-CD": "\xa4\xa0#,##0.00",
                    "sw-KE": "\xa4\xa0#,##0.00",
                    "sw-UG": "\xa4\xa0#,##0.00",
                    ta: "\xa4#,##0.00;(\xa4#,##0.00)",
                    "ta-LK": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "ta-MY": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "ta-SG": "\xa4#,##0.00;(\xa4#,##0.00)",
                    te: "\xa4#,##0.00;(\xa4#,##0.00)",
                    teo: "\xa4#,##0.00;(\xa4#,##0.00)",
                    "teo-KE": "\xa4#,##0.00;(\xa4#,##0.00)",
                    tg: "#,##0.00\xa0\xa4",
                    th: "\xa4#,##0.00;(\xa4#,##0.00)",
                    ti: "\xa4#,##0.00",
                    "ti-ER": "\xa4#,##0.00",
                    tk: "#,##0.00\xa0\xa4",
                    to: "\xa4\xa0#,##0.00",
                    tr: "\xa4#,##0.00;(\xa4#,##0.00)",
                    "tr-CY": "\xa4#,##0.00;(\xa4#,##0.00)",
                    tt: "#,##0.00\xa0\xa4",
                    twq: "#,##0.00\xa4",
                    tzm: "#,##0.00\xa0\xa4",
                    ug: "\xa4#,##0.00;(\xa4#,##0.00)",
                    uk: "#,##0.00\xa0\xa4",
                    und: "\xa4\xa0#,##0.00",
                    ur: "\xa4#,##0.00;(\xa4#,##0.00)",
                    "ur-IN": "\xa4#,##0.00;(\xa4#,##0.00)",
                    uz: "#,##0.00\xa0\xa4",
                    "uz-Arab": "\xa4\xa0#,##0.00",
                    "uz-Cyrl": "#,##0.00\xa0\xa4",
                    "uz-Latn": "#,##0.00\xa0\xa4",
                    vai: "\xa4#,##0.00;(\xa4#,##0.00)",
                    "vai-Latn": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "vai-Vaii": "\xa4#,##0.00;(\xa4#,##0.00)",
                    vi: "#,##0.00\xa0\xa4",
                    vun: "\xa4#,##0.00",
                    wae: "\xa4\xa0#,##0.00",
                    wo: "\xa4\xa0#,##0.00",
                    xh: "\xa4#,##0.00",
                    xog: "#,##0.00\xa0\xa4",
                    yav: "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    yi: "\xa4\xa0#,##0.00",
                    yo: "\xa4#,##0.00;(\xa4#,##0.00)",
                    "yo-BJ": "\xa4#,##0.00;(\xa4#,##0.00)",
                    yrl: "\xa4\xa0#,##0.00",
                    "yrl-CO": "\xa4\xa0#,##0.00",
                    "yrl-VE": "\xa4\xa0#,##0.00",
                    yue: "\xa4#,##0.00;(\xa4#,##0.00)",
                    "yue-Hans": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "yue-Hant": "\xa4#,##0.00;(\xa4#,##0.00)",
                    zgh: "#,##0.00\xa4",
                    zh: "\xa4#,##0.00;(\xa4#,##0.00)",
                    "zh-Hans": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "zh-Hans-HK": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "zh-Hans-MO": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "zh-Hans-SG": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "zh-Hant": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "zh-Hant-HK": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "zh-Hant-MO": "\xa4#,##0.00;(\xa4#,##0.00)",
                    zu: "\xa4#,##0.00;(\xa4#,##0.00)"
                };
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        61316:
            /*!**************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/core/localization/cldr-data/en.js ***!
              \**************************************************************************************/
            function(__unused_webpack_module, exports) {
                exports.enCldr = void 0;
                // !!! AUTO-GENERATED FILE, DO NOT EDIT
                exports.enCldr = {
                    main: {
                        en: {
                            identity: {
                                version: {
                                    _cldrVersion: "36"
                                }
                            },
                            dates: {
                                calendars: {
                                    gregorian: {
                                        months: {
                                            format: {
                                                abbreviated: {
                                                    1: "Jan",
                                                    2: "Feb",
                                                    3: "Mar",
                                                    4: "Apr",
                                                    5: "May",
                                                    6: "Jun",
                                                    7: "Jul",
                                                    8: "Aug",
                                                    9: "Sep",
                                                    10: "Oct",
                                                    11: "Nov",
                                                    12: "Dec"
                                                },
                                                narrow: {
                                                    1: "J",
                                                    2: "F",
                                                    3: "M",
                                                    4: "A",
                                                    5: "M",
                                                    6: "J",
                                                    7: "J",
                                                    8: "A",
                                                    9: "S",
                                                    10: "O",
                                                    11: "N",
                                                    12: "D"
                                                },
                                                wide: {
                                                    1: "January",
                                                    2: "February",
                                                    3: "March",
                                                    4: "April",
                                                    5: "May",
                                                    6: "June",
                                                    7: "July",
                                                    8: "August",
                                                    9: "September",
                                                    10: "October",
                                                    11: "November",
                                                    12: "December"
                                                }
                                            },
                                            "stand-alone": {
                                                abbreviated: {
                                                    1: "Jan",
                                                    2: "Feb",
                                                    3: "Mar",
                                                    4: "Apr",
                                                    5: "May",
                                                    6: "Jun",
                                                    7: "Jul",
                                                    8: "Aug",
                                                    9: "Sep",
                                                    10: "Oct",
                                                    11: "Nov",
                                                    12: "Dec"
                                                },
                                                narrow: {
                                                    1: "J",
                                                    2: "F",
                                                    3: "M",
                                                    4: "A",
                                                    5: "M",
                                                    6: "J",
                                                    7: "J",
                                                    8: "A",
                                                    9: "S",
                                                    10: "O",
                                                    11: "N",
                                                    12: "D"
                                                },
                                                wide: {
                                                    1: "January",
                                                    2: "February",
                                                    3: "March",
                                                    4: "April",
                                                    5: "May",
                                                    6: "June",
                                                    7: "July",
                                                    8: "August",
                                                    9: "September",
                                                    10: "October",
                                                    11: "November",
                                                    12: "December"
                                                }
                                            }
                                        },
                                        days: {
                                            format: {
                                                abbreviated: {
                                                    sun: "Sun",
                                                    mon: "Mon",
                                                    tue: "Tue",
                                                    wed: "Wed",
                                                    thu: "Thu",
                                                    fri: "Fri",
                                                    sat: "Sat"
                                                },
                                                narrow: {
                                                    sun: "S",
                                                    mon: "M",
                                                    tue: "T",
                                                    wed: "W",
                                                    thu: "T",
                                                    fri: "F",
                                                    sat: "S"
                                                },
                                                short: {
                                                    sun: "Su",
                                                    mon: "Mo",
                                                    tue: "Tu",
                                                    wed: "We",
                                                    thu: "Th",
                                                    fri: "Fr",
                                                    sat: "Sa"
                                                },
                                                wide: {
                                                    sun: "Sunday",
                                                    mon: "Monday",
                                                    tue: "Tuesday",
                                                    wed: "Wednesday",
                                                    thu: "Thursday",
                                                    fri: "Friday",
                                                    sat: "Saturday"
                                                }
                                            },
                                            "stand-alone": {
                                                abbreviated: {
                                                    sun: "Sun",
                                                    mon: "Mon",
                                                    tue: "Tue",
                                                    wed: "Wed",
                                                    thu: "Thu",
                                                    fri: "Fri",
                                                    sat: "Sat"
                                                },
                                                narrow: {
                                                    sun: "S",
                                                    mon: "M",
                                                    tue: "T",
                                                    wed: "W",
                                                    thu: "T",
                                                    fri: "F",
                                                    sat: "S"
                                                },
                                                short: {
                                                    sun: "Su",
                                                    mon: "Mo",
                                                    tue: "Tu",
                                                    wed: "We",
                                                    thu: "Th",
                                                    fri: "Fr",
                                                    sat: "Sa"
                                                },
                                                wide: {
                                                    sun: "Sunday",
                                                    mon: "Monday",
                                                    tue: "Tuesday",
                                                    wed: "Wednesday",
                                                    thu: "Thursday",
                                                    fri: "Friday",
                                                    sat: "Saturday"
                                                }
                                            }
                                        },
                                        quarters: {
                                            format: {
                                                abbreviated: {
                                                    1: "Q1",
                                                    2: "Q2",
                                                    3: "Q3",
                                                    4: "Q4"
                                                },
                                                narrow: {
                                                    1: "1",
                                                    2: "2",
                                                    3: "3",
                                                    4: "4"
                                                },
                                                wide: {
                                                    1: "1st quarter",
                                                    2: "2nd quarter",
                                                    3: "3rd quarter",
                                                    4: "4th quarter"
                                                }
                                            },
                                            "stand-alone": {
                                                abbreviated: {
                                                    1: "Q1",
                                                    2: "Q2",
                                                    3: "Q3",
                                                    4: "Q4"
                                                },
                                                narrow: {
                                                    1: "1",
                                                    2: "2",
                                                    3: "3",
                                                    4: "4"
                                                },
                                                wide: {
                                                    1: "1st quarter",
                                                    2: "2nd quarter",
                                                    3: "3rd quarter",
                                                    4: "4th quarter"
                                                }
                                            }
                                        },
                                        dayPeriods: {
                                            format: {
                                                abbreviated: {
                                                    midnight: "midnight",
                                                    am: "AM",
                                                    "am-alt-variant": "am",
                                                    noon: "noon",
                                                    pm: "PM",
                                                    "pm-alt-variant": "pm",
                                                    morning1: "in the morning",
                                                    afternoon1: "in the afternoon",
                                                    evening1: "in the evening",
                                                    night1: "at night"
                                                },
                                                narrow: {
                                                    midnight: "mi",
                                                    am: "a",
                                                    "am-alt-variant": "am",
                                                    noon: "n",
                                                    pm: "p",
                                                    "pm-alt-variant": "pm",
                                                    morning1: "in the morning",
                                                    afternoon1: "in the afternoon",
                                                    evening1: "in the evening",
                                                    night1: "at night"
                                                },
                                                wide: {
                                                    midnight: "midnight",
                                                    am: "AM",
                                                    "am-alt-variant": "am",
                                                    noon: "noon",
                                                    pm: "PM",
                                                    "pm-alt-variant": "pm",
                                                    morning1: "in the morning",
                                                    afternoon1: "in the afternoon",
                                                    evening1: "in the evening",
                                                    night1: "at night"
                                                }
                                            },
                                            "stand-alone": {
                                                abbreviated: {
                                                    midnight: "midnight",
                                                    am: "AM",
                                                    "am-alt-variant": "am",
                                                    noon: "noon",
                                                    pm: "PM",
                                                    "pm-alt-variant": "pm",
                                                    morning1: "morning",
                                                    afternoon1: "afternoon",
                                                    evening1: "evening",
                                                    night1: "night"
                                                },
                                                narrow: {
                                                    midnight: "midnight",
                                                    am: "AM",
                                                    "am-alt-variant": "am",
                                                    noon: "noon",
                                                    pm: "PM",
                                                    "pm-alt-variant": "pm",
                                                    morning1: "morning",
                                                    afternoon1: "afternoon",
                                                    evening1: "evening",
                                                    night1: "night"
                                                },
                                                wide: {
                                                    midnight: "midnight",
                                                    am: "AM",
                                                    "am-alt-variant": "am",
                                                    noon: "noon",
                                                    pm: "PM",
                                                    "pm-alt-variant": "pm",
                                                    morning1: "morning",
                                                    afternoon1: "afternoon",
                                                    evening1: "evening",
                                                    night1: "night"
                                                }
                                            }
                                        },
                                        eras: {
                                            eraNames: {
                                                0: "Before Christ",
                                                1: "Anno Domini",
                                                "0-alt-variant": "Before Common Era",
                                                "1-alt-variant": "Common Era"
                                            },
                                            eraAbbr: {
                                                0: "BC",
                                                1: "AD",
                                                "0-alt-variant": "BCE",
                                                "1-alt-variant": "CE"
                                            },
                                            eraNarrow: {
                                                0: "B",
                                                1: "A",
                                                "0-alt-variant": "BCE",
                                                "1-alt-variant": "CE"
                                            }
                                        },
                                        dateFormats: {
                                            full: "EEEE, MMMM d, y",
                                            long: "MMMM d, y",
                                            medium: "MMM d, y",
                                            short: "M/d/yy"
                                        },
                                        timeFormats: {
                                            full: "h:mm:ss a zzzz",
                                            long: "h:mm:ss a z",
                                            medium: "h:mm:ss a",
                                            short: "h:mm a"
                                        },
                                        dateTimeFormats: {
                                            full: "{1} 'at' {0}",
                                            long: "{1} 'at' {0}",
                                            medium: "{1}, {0}",
                                            short: "{1}, {0}",
                                            availableFormats: {
                                                Bh: "h B",
                                                Bhm: "h:mm B",
                                                Bhms: "h:mm:ss B",
                                                d: "d",
                                                E: "ccc",
                                                EBhm: "E h:mm B",
                                                EBhms: "E h:mm:ss B",
                                                Ed: "d E",
                                                Ehm: "E h:mm a",
                                                EHm: "E HH:mm",
                                                Ehms: "E h:mm:ss a",
                                                EHms: "E HH:mm:ss",
                                                Gy: "y G",
                                                GyMMM: "MMM y G",
                                                GyMMMd: "MMM d, y G",
                                                GyMMMEd: "E, MMM d, y G",
                                                h: "h a",
                                                H: "HH",
                                                hm: "h:mm a",
                                                Hm: "HH:mm",
                                                hms: "h:mm:ss a",
                                                Hms: "HH:mm:ss",
                                                hmsv: "h:mm:ss a v",
                                                Hmsv: "HH:mm:ss v",
                                                hmv: "h:mm a v",
                                                Hmv: "HH:mm v",
                                                M: "L",
                                                Md: "M/d",
                                                MEd: "E, M/d",
                                                MMM: "LLL",
                                                MMMd: "MMM d",
                                                MMMEd: "E, MMM d",
                                                MMMMd: "MMMM d",
                                                "MMMMW-count-one": "'week' W 'of' MMMM",
                                                "MMMMW-count-other": "'week' W 'of' MMMM",
                                                ms: "mm:ss",
                                                y: "y",
                                                yM: "M/y",
                                                yMd: "M/d/y",
                                                yMEd: "E, M/d/y",
                                                yMMM: "MMM y",
                                                yMMMd: "MMM d, y",
                                                yMMMEd: "E, MMM d, y",
                                                yMMMM: "MMMM y",
                                                yQQQ: "QQQ y",
                                                yQQQQ: "QQQQ y",
                                                "yw-count-one": "'week' w 'of' Y",
                                                "yw-count-other": "'week' w 'of' Y"
                                            }
                                        }
                                    }
                                }
                            },
                            numbers: {
                                defaultNumberingSystem: "latn",
                                otherNumberingSystems: {
                                    native: "latn"
                                },
                                minimumGroupingDigits: "1",
                                "symbols-numberSystem-latn": {
                                    decimal: ".",
                                    group: ",",
                                    list: ";",
                                    percentSign: "%",
                                    plusSign: "+",
                                    minusSign: "-",
                                    exponential: "E",
                                    superscriptingExponent: "\xd7",
                                    perMille: "\u2030",
                                    infinity: "\u221e",
                                    nan: "NaN",
                                    timeSeparator: ":"
                                },
                                "decimalFormats-numberSystem-latn": {
                                    standard: "#,##0.###"
                                },
                                "scientificFormats-numberSystem-latn": {
                                    standard: "#E0"
                                },
                                "percentFormats-numberSystem-latn": {
                                    standard: "#,##0%"
                                },
                                "currencyFormats-numberSystem-latn": {
                                    currencySpacing: {
                                        beforeCurrency: {
                                            currencyMatch: "[:^S:]",
                                            surroundingMatch: "[:digit:]",
                                            insertBetween: "\xa0"
                                        },
                                        afterCurrency: {
                                            currencyMatch: "[:^S:]",
                                            surroundingMatch: "[:digit:]",
                                            insertBetween: "\xa0"
                                        }
                                    },
                                    standard: "\xa4#,##0.00",
                                    accounting: "\xa4#,##0.00;(\xa4#,##0.00)"
                                },
                                currencies: {
                                    ADP: {
                                        symbol: "ADP"
                                    },
                                    AED: {
                                        symbol: "AED"
                                    },
                                    AFA: {
                                        symbol: "AFA"
                                    },
                                    AFN: {
                                        symbol: "AFN"
                                    },
                                    ALK: {
                                        symbol: "ALK"
                                    },
                                    ALL: {
                                        symbol: "ALL"
                                    },
                                    AMD: {
                                        symbol: "AMD"
                                    },
                                    ANG: {
                                        symbol: "ANG"
                                    },
                                    AOA: {
                                        symbol: "AOA",
                                        "symbol-alt-narrow": "Kz"
                                    },
                                    AOK: {
                                        symbol: "AOK"
                                    },
                                    AON: {
                                        symbol: "AON"
                                    },
                                    AOR: {
                                        symbol: "AOR"
                                    },
                                    ARA: {
                                        symbol: "ARA"
                                    },
                                    ARL: {
                                        symbol: "ARL"
                                    },
                                    ARM: {
                                        symbol: "ARM"
                                    },
                                    ARP: {
                                        symbol: "ARP"
                                    },
                                    ARS: {
                                        symbol: "ARS",
                                        "symbol-alt-narrow": "$"
                                    },
                                    ATS: {
                                        symbol: "ATS"
                                    },
                                    AUD: {
                                        symbol: "A$",
                                        "symbol-alt-narrow": "$"
                                    },
                                    AWG: {
                                        symbol: "AWG"
                                    },
                                    AZM: {
                                        symbol: "AZM"
                                    },
                                    AZN: {
                                        symbol: "AZN"
                                    },
                                    BAD: {
                                        symbol: "BAD"
                                    },
                                    BAM: {
                                        symbol: "BAM",
                                        "symbol-alt-narrow": "KM"
                                    },
                                    BAN: {
                                        symbol: "BAN"
                                    },
                                    BBD: {
                                        symbol: "BBD",
                                        "symbol-alt-narrow": "$"
                                    },
                                    BDT: {
                                        symbol: "BDT",
                                        "symbol-alt-narrow": "\u09f3"
                                    },
                                    BEC: {
                                        symbol: "BEC"
                                    },
                                    BEF: {
                                        symbol: "BEF"
                                    },
                                    BEL: {
                                        symbol: "BEL"
                                    },
                                    BGL: {
                                        symbol: "BGL"
                                    },
                                    BGM: {
                                        symbol: "BGM"
                                    },
                                    BGN: {
                                        symbol: "BGN"
                                    },
                                    BGO: {
                                        symbol: "BGO"
                                    },
                                    BHD: {
                                        symbol: "BHD"
                                    },
                                    BIF: {
                                        symbol: "BIF"
                                    },
                                    BMD: {
                                        symbol: "BMD",
                                        "symbol-alt-narrow": "$"
                                    },
                                    BND: {
                                        symbol: "BND",
                                        "symbol-alt-narrow": "$"
                                    },
                                    BOB: {
                                        symbol: "BOB",
                                        "symbol-alt-narrow": "Bs"
                                    },
                                    BOL: {
                                        symbol: "BOL"
                                    },
                                    BOP: {
                                        symbol: "BOP"
                                    },
                                    BOV: {
                                        symbol: "BOV"
                                    },
                                    BRB: {
                                        symbol: "BRB"
                                    },
                                    BRC: {
                                        symbol: "BRC"
                                    },
                                    BRE: {
                                        symbol: "BRE"
                                    },
                                    BRL: {
                                        symbol: "R$",
                                        "symbol-alt-narrow": "R$"
                                    },
                                    BRN: {
                                        symbol: "BRN"
                                    },
                                    BRR: {
                                        symbol: "BRR"
                                    },
                                    BRZ: {
                                        symbol: "BRZ"
                                    },
                                    BSD: {
                                        symbol: "BSD",
                                        "symbol-alt-narrow": "$"
                                    },
                                    BTN: {
                                        symbol: "BTN"
                                    },
                                    BUK: {
                                        symbol: "BUK"
                                    },
                                    BWP: {
                                        symbol: "BWP",
                                        "symbol-alt-narrow": "P"
                                    },
                                    BYB: {
                                        symbol: "BYB"
                                    },
                                    BYN: {
                                        symbol: "BYN",
                                        "symbol-alt-narrow": "\u0440."
                                    },
                                    BYR: {
                                        symbol: "BYR"
                                    },
                                    BZD: {
                                        symbol: "BZD",
                                        "symbol-alt-narrow": "$"
                                    },
                                    CAD: {
                                        symbol: "CA$",
                                        "symbol-alt-narrow": "$"
                                    },
                                    CDF: {
                                        symbol: "CDF"
                                    },
                                    CHE: {
                                        symbol: "CHE"
                                    },
                                    CHF: {
                                        symbol: "CHF"
                                    },
                                    CHW: {
                                        symbol: "CHW"
                                    },
                                    CLE: {
                                        symbol: "CLE"
                                    },
                                    CLF: {
                                        symbol: "CLF"
                                    },
                                    CLP: {
                                        symbol: "CLP",
                                        "symbol-alt-narrow": "$"
                                    },
                                    CNH: {
                                        symbol: "CNH"
                                    },
                                    CNX: {
                                        symbol: "CNX"
                                    },
                                    CNY: {
                                        symbol: "CN\xa5",
                                        "symbol-alt-narrow": "\xa5"
                                    },
                                    COP: {
                                        symbol: "COP",
                                        "symbol-alt-narrow": "$"
                                    },
                                    COU: {
                                        symbol: "COU"
                                    },
                                    CRC: {
                                        symbol: "CRC",
                                        "symbol-alt-narrow": "\u20a1"
                                    },
                                    CSD: {
                                        symbol: "CSD"
                                    },
                                    CSK: {
                                        symbol: "CSK"
                                    },
                                    CUC: {
                                        symbol: "CUC",
                                        "symbol-alt-narrow": "$"
                                    },
                                    CUP: {
                                        symbol: "CUP",
                                        "symbol-alt-narrow": "$"
                                    },
                                    CVE: {
                                        symbol: "CVE"
                                    },
                                    CYP: {
                                        symbol: "CYP"
                                    },
                                    CZK: {
                                        symbol: "CZK",
                                        "symbol-alt-narrow": "K\u010d"
                                    },
                                    DDM: {
                                        symbol: "DDM"
                                    },
                                    DEM: {
                                        symbol: "DEM"
                                    },
                                    DJF: {
                                        symbol: "DJF"
                                    },
                                    DKK: {
                                        symbol: "DKK",
                                        "symbol-alt-narrow": "kr"
                                    },
                                    DOP: {
                                        symbol: "DOP",
                                        "symbol-alt-narrow": "$"
                                    },
                                    DZD: {
                                        symbol: "DZD"
                                    },
                                    ECS: {
                                        symbol: "ECS"
                                    },
                                    ECV: {
                                        symbol: "ECV"
                                    },
                                    EEK: {
                                        symbol: "EEK"
                                    },
                                    EGP: {
                                        symbol: "EGP",
                                        "symbol-alt-narrow": "E\xa3"
                                    },
                                    ERN: {
                                        symbol: "ERN"
                                    },
                                    ESA: {
                                        symbol: "ESA"
                                    },
                                    ESB: {
                                        symbol: "ESB"
                                    },
                                    ESP: {
                                        symbol: "ESP",
                                        "symbol-alt-narrow": "\u20a7"
                                    },
                                    ETB: {
                                        symbol: "ETB"
                                    },
                                    EUR: {
                                        symbol: "\u20ac",
                                        "symbol-alt-narrow": "\u20ac"
                                    },
                                    FIM: {
                                        symbol: "FIM"
                                    },
                                    FJD: {
                                        symbol: "FJD",
                                        "symbol-alt-narrow": "$"
                                    },
                                    FKP: {
                                        symbol: "FKP",
                                        "symbol-alt-narrow": "\xa3"
                                    },
                                    FRF: {
                                        symbol: "FRF"
                                    },
                                    GBP: {
                                        symbol: "\xa3",
                                        "symbol-alt-narrow": "\xa3"
                                    },
                                    GEK: {
                                        symbol: "GEK"
                                    },
                                    GEL: {
                                        symbol: "GEL",
                                        "symbol-alt-narrow": "\u20be"
                                    },
                                    GHC: {
                                        symbol: "GHC"
                                    },
                                    GHS: {
                                        symbol: "GHS"
                                    },
                                    GIP: {
                                        symbol: "GIP",
                                        "symbol-alt-narrow": "\xa3"
                                    },
                                    GMD: {
                                        symbol: "GMD"
                                    },
                                    GNF: {
                                        symbol: "GNF",
                                        "symbol-alt-narrow": "FG"
                                    },
                                    GNS: {
                                        symbol: "GNS"
                                    },
                                    GQE: {
                                        symbol: "GQE"
                                    },
                                    GRD: {
                                        symbol: "GRD"
                                    },
                                    GTQ: {
                                        symbol: "GTQ",
                                        "symbol-alt-narrow": "Q"
                                    },
                                    GWE: {
                                        symbol: "GWE"
                                    },
                                    GWP: {
                                        symbol: "GWP"
                                    },
                                    GYD: {
                                        symbol: "GYD",
                                        "symbol-alt-narrow": "$"
                                    },
                                    HKD: {
                                        symbol: "HK$",
                                        "symbol-alt-narrow": "$"
                                    },
                                    HNL: {
                                        symbol: "HNL",
                                        "symbol-alt-narrow": "L"
                                    },
                                    HRD: {
                                        symbol: "HRD"
                                    },
                                    HRK: {
                                        symbol: "HRK",
                                        "symbol-alt-narrow": "kn"
                                    },
                                    HTG: {
                                        symbol: "HTG"
                                    },
                                    HUF: {
                                        symbol: "HUF",
                                        "symbol-alt-narrow": "Ft"
                                    },
                                    IDR: {
                                        symbol: "IDR",
                                        "symbol-alt-narrow": "Rp"
                                    },
                                    IEP: {
                                        symbol: "IEP"
                                    },
                                    ILP: {
                                        symbol: "ILP"
                                    },
                                    ILR: {
                                        symbol: "ILR"
                                    },
                                    ILS: {
                                        symbol: "\u20aa",
                                        "symbol-alt-narrow": "\u20aa"
                                    },
                                    INR: {
                                        symbol: "\u20b9",
                                        "symbol-alt-narrow": "\u20b9"
                                    },
                                    IQD: {
                                        symbol: "IQD"
                                    },
                                    IRR: {
                                        symbol: "IRR"
                                    },
                                    ISJ: {
                                        symbol: "ISJ"
                                    },
                                    ISK: {
                                        symbol: "ISK",
                                        "symbol-alt-narrow": "kr"
                                    },
                                    ITL: {
                                        symbol: "ITL"
                                    },
                                    JMD: {
                                        symbol: "JMD",
                                        "symbol-alt-narrow": "$"
                                    },
                                    JOD: {
                                        symbol: "JOD"
                                    },
                                    JPY: {
                                        symbol: "\xa5",
                                        "symbol-alt-narrow": "\xa5"
                                    },
                                    KES: {
                                        symbol: "KES"
                                    },
                                    KGS: {
                                        symbol: "KGS"
                                    },
                                    KHR: {
                                        symbol: "KHR",
                                        "symbol-alt-narrow": "\u17db"
                                    },
                                    KMF: {
                                        symbol: "KMF",
                                        "symbol-alt-narrow": "CF"
                                    },
                                    KPW: {
                                        symbol: "KPW",
                                        "symbol-alt-narrow": "\u20a9"
                                    },
                                    KRH: {
                                        symbol: "KRH"
                                    },
                                    KRO: {
                                        symbol: "KRO"
                                    },
                                    KRW: {
                                        symbol: "\u20a9",
                                        "symbol-alt-narrow": "\u20a9"
                                    },
                                    KWD: {
                                        symbol: "KWD"
                                    },
                                    KYD: {
                                        symbol: "KYD",
                                        "symbol-alt-narrow": "$"
                                    },
                                    KZT: {
                                        symbol: "KZT",
                                        "symbol-alt-narrow": "\u20b8"
                                    },
                                    LAK: {
                                        symbol: "LAK",
                                        "symbol-alt-narrow": "\u20ad"
                                    },
                                    LBP: {
                                        symbol: "LBP",
                                        "symbol-alt-narrow": "L\xa3"
                                    },
                                    LKR: {
                                        symbol: "LKR",
                                        "symbol-alt-narrow": "Rs"
                                    },
                                    LRD: {
                                        symbol: "LRD",
                                        "symbol-alt-narrow": "$"
                                    },
                                    LSL: {
                                        symbol: "LSL"
                                    },
                                    LTL: {
                                        symbol: "LTL",
                                        "symbol-alt-narrow": "Lt"
                                    },
                                    LTT: {
                                        symbol: "LTT"
                                    },
                                    LUC: {
                                        symbol: "LUC"
                                    },
                                    LUF: {
                                        symbol: "LUF"
                                    },
                                    LUL: {
                                        symbol: "LUL"
                                    },
                                    LVL: {
                                        symbol: "LVL",
                                        "symbol-alt-narrow": "Ls"
                                    },
                                    LVR: {
                                        symbol: "LVR"
                                    },
                                    LYD: {
                                        symbol: "LYD"
                                    },
                                    MAD: {
                                        symbol: "MAD"
                                    },
                                    MAF: {
                                        symbol: "MAF"
                                    },
                                    MCF: {
                                        symbol: "MCF"
                                    },
                                    MDC: {
                                        symbol: "MDC"
                                    },
                                    MDL: {
                                        symbol: "MDL"
                                    },
                                    MGA: {
                                        symbol: "MGA",
                                        "symbol-alt-narrow": "Ar"
                                    },
                                    MGF: {
                                        symbol: "MGF"
                                    },
                                    MKD: {
                                        symbol: "MKD"
                                    },
                                    MKN: {
                                        symbol: "MKN"
                                    },
                                    MLF: {
                                        symbol: "MLF"
                                    },
                                    MMK: {
                                        symbol: "MMK",
                                        "symbol-alt-narrow": "K"
                                    },
                                    MNT: {
                                        symbol: "MNT",
                                        "symbol-alt-narrow": "\u20ae"
                                    },
                                    MOP: {
                                        symbol: "MOP"
                                    },
                                    MRO: {
                                        symbol: "MRO"
                                    },
                                    MRU: {
                                        symbol: "MRU"
                                    },
                                    MTL: {
                                        symbol: "MTL"
                                    },
                                    MTP: {
                                        symbol: "MTP"
                                    },
                                    MUR: {
                                        symbol: "MUR",
                                        "symbol-alt-narrow": "Rs"
                                    },
                                    MVP: {
                                        symbol: "MVP"
                                    },
                                    MVR: {
                                        symbol: "MVR"
                                    },
                                    MWK: {
                                        symbol: "MWK"
                                    },
                                    MXN: {
                                        symbol: "MX$",
                                        "symbol-alt-narrow": "$"
                                    },
                                    MXP: {
                                        symbol: "MXP"
                                    },
                                    MXV: {
                                        symbol: "MXV"
                                    },
                                    MYR: {
                                        symbol: "MYR",
                                        "symbol-alt-narrow": "RM"
                                    },
                                    MZE: {
                                        symbol: "MZE"
                                    },
                                    MZM: {
                                        symbol: "MZM"
                                    },
                                    MZN: {
                                        symbol: "MZN"
                                    },
                                    NAD: {
                                        symbol: "NAD",
                                        "symbol-alt-narrow": "$"
                                    },
                                    NGN: {
                                        symbol: "NGN",
                                        "symbol-alt-narrow": "\u20a6"
                                    },
                                    NIC: {
                                        symbol: "NIC"
                                    },
                                    NIO: {
                                        symbol: "NIO",
                                        "symbol-alt-narrow": "C$"
                                    },
                                    NLG: {
                                        symbol: "NLG"
                                    },
                                    NOK: {
                                        symbol: "NOK",
                                        "symbol-alt-narrow": "kr"
                                    },
                                    NPR: {
                                        symbol: "NPR",
                                        "symbol-alt-narrow": "Rs"
                                    },
                                    NZD: {
                                        symbol: "NZ$",
                                        "symbol-alt-narrow": "$"
                                    },
                                    OMR: {
                                        symbol: "OMR"
                                    },
                                    PAB: {
                                        symbol: "PAB"
                                    },
                                    PEI: {
                                        symbol: "PEI"
                                    },
                                    PEN: {
                                        symbol: "PEN"
                                    },
                                    PES: {
                                        symbol: "PES"
                                    },
                                    PGK: {
                                        symbol: "PGK"
                                    },
                                    PHP: {
                                        symbol: "PHP",
                                        "symbol-alt-narrow": "\u20b1"
                                    },
                                    PKR: {
                                        symbol: "PKR",
                                        "symbol-alt-narrow": "Rs"
                                    },
                                    PLN: {
                                        symbol: "PLN",
                                        "symbol-alt-narrow": "z\u0142"
                                    },
                                    PLZ: {
                                        symbol: "PLZ"
                                    },
                                    PTE: {
                                        symbol: "PTE"
                                    },
                                    PYG: {
                                        symbol: "PYG",
                                        "symbol-alt-narrow": "\u20b2"
                                    },
                                    QAR: {
                                        symbol: "QAR"
                                    },
                                    RHD: {
                                        symbol: "RHD"
                                    },
                                    ROL: {
                                        symbol: "ROL"
                                    },
                                    RON: {
                                        symbol: "RON",
                                        "symbol-alt-narrow": "lei"
                                    },
                                    RSD: {
                                        symbol: "RSD"
                                    },
                                    RUB: {
                                        symbol: "RUB",
                                        "symbol-alt-narrow": "\u20bd"
                                    },
                                    RUR: {
                                        symbol: "RUR",
                                        "symbol-alt-narrow": "\u0440."
                                    },
                                    RWF: {
                                        symbol: "RWF",
                                        "symbol-alt-narrow": "RF"
                                    },
                                    SAR: {
                                        symbol: "SAR"
                                    },
                                    SBD: {
                                        symbol: "SBD",
                                        "symbol-alt-narrow": "$"
                                    },
                                    SCR: {
                                        symbol: "SCR"
                                    },
                                    SDD: {
                                        symbol: "SDD"
                                    },
                                    SDG: {
                                        symbol: "SDG"
                                    },
                                    SDP: {
                                        symbol: "SDP"
                                    },
                                    SEK: {
                                        symbol: "SEK",
                                        "symbol-alt-narrow": "kr"
                                    },
                                    SGD: {
                                        symbol: "SGD",
                                        "symbol-alt-narrow": "$"
                                    },
                                    SHP: {
                                        symbol: "SHP",
                                        "symbol-alt-narrow": "\xa3"
                                    },
                                    SIT: {
                                        symbol: "SIT"
                                    },
                                    SKK: {
                                        symbol: "SKK"
                                    },
                                    SLL: {
                                        symbol: "SLL"
                                    },
                                    SOS: {
                                        symbol: "SOS"
                                    },
                                    SRD: {
                                        symbol: "SRD",
                                        "symbol-alt-narrow": "$"
                                    },
                                    SRG: {
                                        symbol: "SRG"
                                    },
                                    SSP: {
                                        symbol: "SSP",
                                        "symbol-alt-narrow": "\xa3"
                                    },
                                    STD: {
                                        symbol: "STD"
                                    },
                                    STN: {
                                        symbol: "STN",
                                        "symbol-alt-narrow": "Db"
                                    },
                                    SUR: {
                                        symbol: "SUR"
                                    },
                                    SVC: {
                                        symbol: "SVC"
                                    },
                                    SYP: {
                                        symbol: "SYP",
                                        "symbol-alt-narrow": "\xa3"
                                    },
                                    SZL: {
                                        symbol: "SZL"
                                    },
                                    THB: {
                                        symbol: "THB",
                                        "symbol-alt-narrow": "\u0e3f"
                                    },
                                    TJR: {
                                        symbol: "TJR"
                                    },
                                    TJS: {
                                        symbol: "TJS"
                                    },
                                    TMM: {
                                        symbol: "TMM"
                                    },
                                    TMT: {
                                        symbol: "TMT"
                                    },
                                    TND: {
                                        symbol: "TND"
                                    },
                                    TOP: {
                                        symbol: "TOP",
                                        "symbol-alt-narrow": "T$"
                                    },
                                    TPE: {
                                        symbol: "TPE"
                                    },
                                    TRL: {
                                        symbol: "TRL"
                                    },
                                    TRY: {
                                        symbol: "TRY",
                                        "symbol-alt-narrow": "\u20ba"
                                    },
                                    TTD: {
                                        symbol: "TTD",
                                        "symbol-alt-narrow": "$"
                                    },
                                    TWD: {
                                        symbol: "NT$",
                                        "symbol-alt-narrow": "$"
                                    },
                                    TZS: {
                                        symbol: "TZS"
                                    },
                                    UAH: {
                                        symbol: "UAH",
                                        "symbol-alt-narrow": "\u20b4"
                                    },
                                    UAK: {
                                        symbol: "UAK"
                                    },
                                    UGS: {
                                        symbol: "UGS"
                                    },
                                    UGX: {
                                        symbol: "UGX"
                                    },
                                    USD: {
                                        symbol: "$",
                                        "symbol-alt-narrow": "$"
                                    },
                                    USN: {
                                        symbol: "USN"
                                    },
                                    USS: {
                                        symbol: "USS"
                                    },
                                    UYI: {
                                        symbol: "UYI"
                                    },
                                    UYP: {
                                        symbol: "UYP"
                                    },
                                    UYU: {
                                        symbol: "UYU",
                                        "symbol-alt-narrow": "$"
                                    },
                                    UYW: {
                                        symbol: "UYW"
                                    },
                                    UZS: {
                                        symbol: "UZS"
                                    },
                                    VEB: {
                                        symbol: "VEB"
                                    },
                                    VEF: {
                                        symbol: "VEF",
                                        "symbol-alt-narrow": "Bs"
                                    },
                                    VES: {
                                        symbol: "VES"
                                    },
                                    VND: {
                                        symbol: "\u20ab",
                                        "symbol-alt-narrow": "\u20ab"
                                    },
                                    VNN: {
                                        symbol: "VNN"
                                    },
                                    VUV: {
                                        symbol: "VUV"
                                    },
                                    WST: {
                                        symbol: "WST"
                                    },
                                    XAF: {
                                        symbol: "FCFA"
                                    },
                                    XAG: {
                                        symbol: "XAG"
                                    },
                                    XAU: {
                                        symbol: "XAU"
                                    },
                                    XBA: {
                                        symbol: "XBA"
                                    },
                                    XBB: {
                                        symbol: "XBB"
                                    },
                                    XBC: {
                                        symbol: "XBC"
                                    },
                                    XBD: {
                                        symbol: "XBD"
                                    },
                                    XCD: {
                                        symbol: "EC$",
                                        "symbol-alt-narrow": "$"
                                    },
                                    XDR: {
                                        symbol: "XDR"
                                    },
                                    XEU: {
                                        symbol: "XEU"
                                    },
                                    XFO: {
                                        symbol: "XFO"
                                    },
                                    XFU: {
                                        symbol: "XFU"
                                    },
                                    XOF: {
                                        symbol: "CFA"
                                    },
                                    XPD: {
                                        symbol: "XPD"
                                    },
                                    XPF: {
                                        symbol: "CFPF"
                                    },
                                    XPT: {
                                        symbol: "XPT"
                                    },
                                    XRE: {
                                        symbol: "XRE"
                                    },
                                    XSU: {
                                        symbol: "XSU"
                                    },
                                    XTS: {
                                        symbol: "XTS"
                                    },
                                    XUA: {
                                        symbol: "XUA"
                                    },
                                    XXX: {
                                        symbol: "\xa4"
                                    },
                                    YDD: {
                                        symbol: "YDD"
                                    },
                                    YER: {
                                        symbol: "YER"
                                    },
                                    YUD: {
                                        symbol: "YUD"
                                    },
                                    YUM: {
                                        symbol: "YUM"
                                    },
                                    YUN: {
                                        symbol: "YUN"
                                    },
                                    YUR: {
                                        symbol: "YUR"
                                    },
                                    ZAL: {
                                        symbol: "ZAL"
                                    },
                                    ZAR: {
                                        symbol: "ZAR",
                                        "symbol-alt-narrow": "R"
                                    },
                                    ZMK: {
                                        symbol: "ZMK"
                                    },
                                    ZMW: {
                                        symbol: "ZMW",
                                        "symbol-alt-narrow": "ZK"
                                    },
                                    ZRN: {
                                        symbol: "ZRN"
                                    },
                                    ZRZ: {
                                        symbol: "ZRZ"
                                    },
                                    ZWD: {
                                        symbol: "ZWD"
                                    },
                                    ZWL: {
                                        symbol: "ZWL"
                                    },
                                    ZWR: {
                                        symbol: "ZWR"
                                    }
                                }
                            }
                        }
                    }
                }
            },
        29908:
            /*!**********************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/core/localization/cldr-data/first_day_of_week_data.js ***!
              \**********************************************************************************************************/
            function(module, exports) {
                exports.default = void 0;
                // !!! AUTO-GENERATED FILE, DO NOT EDIT
                exports.default = {
                    "af-NA": 1,
                    agq: 1,
                    ak: 1,
                    ar: 6,
                    "ar-EH": 1,
                    "ar-ER": 1,
                    "ar-KM": 1,
                    "ar-LB": 1,
                    "ar-MA": 1,
                    "ar-MR": 1,
                    "ar-PS": 1,
                    "ar-SO": 1,
                    "ar-SS": 1,
                    "ar-TD": 1,
                    "ar-TN": 1,
                    asa: 1,
                    ast: 1,
                    az: 1,
                    "az-Cyrl": 1,
                    bas: 1,
                    be: 1,
                    bem: 1,
                    bez: 1,
                    bg: 1,
                    bm: 1,
                    br: 1,
                    bs: 1,
                    "bs-Cyrl": 1,
                    ca: 1,
                    ce: 1,
                    cgg: 1,
                    ckb: 6,
                    cs: 1,
                    cy: 1,
                    da: 1,
                    de: 1,
                    dje: 1,
                    dsb: 1,
                    dua: 1,
                    dyo: 1,
                    ee: 1,
                    el: 1,
                    "en-001": 1,
                    "en-AE": 6,
                    "en-BI": 1,
                    "en-MP": 1,
                    "en-MV": 5,
                    "en-SD": 6,
                    eo: 1,
                    es: 1,
                    et: 1,
                    eu: 1,
                    ewo: 1,
                    fa: 6,
                    ff: 1,
                    "ff-Adlm": 1,
                    fi: 1,
                    fo: 1,
                    fr: 1,
                    "fr-DJ": 6,
                    "fr-DZ": 6,
                    "fr-SY": 6,
                    fur: 1,
                    fy: 1,
                    ga: 1,
                    gd: 1,
                    gl: 1,
                    gsw: 1,
                    gv: 1,
                    ha: 1,
                    hr: 1,
                    hsb: 1,
                    hu: 1,
                    hy: 1,
                    ia: 1,
                    ig: 1,
                    is: 1,
                    it: 1,
                    jgo: 1,
                    jmc: 1,
                    ka: 1,
                    kab: 6,
                    kde: 1,
                    kea: 1,
                    khq: 1,
                    kk: 1,
                    kkj: 1,
                    kl: 1,
                    "ko-KP": 1,
                    ksb: 1,
                    ksf: 1,
                    ksh: 1,
                    ku: 1,
                    kw: 1,
                    ky: 1,
                    lag: 1,
                    lb: 1,
                    lg: 1,
                    ln: 1,
                    lrc: 6,
                    lt: 1,
                    lu: 1,
                    lv: 1,
                    "mas-TZ": 1,
                    mfe: 1,
                    mg: 1,
                    mgo: 1,
                    mi: 1,
                    mk: 1,
                    mn: 1,
                    ms: 1,
                    mua: 1,
                    mzn: 6,
                    naq: 1,
                    nds: 1,
                    nl: 1,
                    nmg: 1,
                    nnh: 1,
                    no: 1,
                    nus: 1,
                    nyn: 1,
                    os: 1,
                    pcm: 1,
                    pl: 1,
                    ps: 6,
                    "pt-AO": 1,
                    "pt-CH": 1,
                    "pt-CV": 1,
                    "pt-GQ": 1,
                    "pt-GW": 1,
                    "pt-LU": 1,
                    "pt-ST": 1,
                    "pt-TL": 1,
                    "qu-BO": 1,
                    "qu-EC": 1,
                    rm: 1,
                    rn: 1,
                    ro: 1,
                    rof: 1,
                    ru: 1,
                    rw: 1,
                    rwk: 1,
                    sah: 1,
                    sbp: 1,
                    sc: 1,
                    se: 1,
                    ses: 1,
                    sg: 1,
                    shi: 1,
                    "shi-Latn": 1,
                    si: 1,
                    sk: 1,
                    sl: 1,
                    smn: 1,
                    so: 1,
                    "so-DJ": 6,
                    sq: 1,
                    sr: 1,
                    "sr-Latn": 1,
                    sv: 1,
                    sw: 1,
                    "ta-LK": 1,
                    "ta-MY": 1,
                    teo: 1,
                    tg: 1,
                    "ti-ER": 1,
                    tk: 1,
                    to: 1,
                    tr: 1,
                    tt: 1,
                    twq: 1,
                    tzm: 1,
                    uk: 1,
                    uz: 1,
                    "uz-Arab": 6,
                    "uz-Cyrl": 1,
                    vai: 1,
                    "vai-Latn": 1,
                    vi: 1,
                    vun: 1,
                    wae: 1,
                    wo: 1,
                    xog: 1,
                    yav: 1,
                    yi: 1,
                    yo: 1,
                    zgh: 1
                };
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        85703:
            /*!**************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/core/localization/cldr-data/parent_locales.js ***!
              \**************************************************************************************************/
            function(module, exports) {
                exports.default = void 0;
                // !!! AUTO-GENERATED FILE, DO NOT EDIT
                exports.default = {
                    "en-150": "en-001",
                    "en-AG": "en-001",
                    "en-AI": "en-001",
                    "en-AU": "en-001",
                    "en-BB": "en-001",
                    "en-BM": "en-001",
                    "en-BS": "en-001",
                    "en-BW": "en-001",
                    "en-BZ": "en-001",
                    "en-CC": "en-001",
                    "en-CK": "en-001",
                    "en-CM": "en-001",
                    "en-CX": "en-001",
                    "en-CY": "en-001",
                    "en-DG": "en-001",
                    "en-DM": "en-001",
                    "en-ER": "en-001",
                    "en-FJ": "en-001",
                    "en-FK": "en-001",
                    "en-FM": "en-001",
                    "en-GB": "en-001",
                    "en-GD": "en-001",
                    "en-GG": "en-001",
                    "en-GH": "en-001",
                    "en-GI": "en-001",
                    "en-GM": "en-001",
                    "en-GY": "en-001",
                    "en-HK": "en-001",
                    "en-IE": "en-001",
                    "en-IL": "en-001",
                    "en-IM": "en-001",
                    "en-IN": "en-001",
                    "en-IO": "en-001",
                    "en-JE": "en-001",
                    "en-JM": "en-001",
                    "en-KE": "en-001",
                    "en-KI": "en-001",
                    "en-KN": "en-001",
                    "en-KY": "en-001",
                    "en-LC": "en-001",
                    "en-LR": "en-001",
                    "en-LS": "en-001",
                    "en-MG": "en-001",
                    "en-MO": "en-001",
                    "en-MS": "en-001",
                    "en-MT": "en-001",
                    "en-MU": "en-001",
                    "en-MV": "en-001",
                    "en-MW": "en-001",
                    "en-MY": "en-001",
                    "en-NA": "en-001",
                    "en-NF": "en-001",
                    "en-NG": "en-001",
                    "en-NR": "en-001",
                    "en-NU": "en-001",
                    "en-NZ": "en-001",
                    "en-PG": "en-001",
                    "en-PK": "en-001",
                    "en-PN": "en-001",
                    "en-PW": "en-001",
                    "en-RW": "en-001",
                    "en-SB": "en-001",
                    "en-SC": "en-001",
                    "en-SD": "en-001",
                    "en-SG": "en-001",
                    "en-SH": "en-001",
                    "en-SL": "en-001",
                    "en-SS": "en-001",
                    "en-SX": "en-001",
                    "en-SZ": "en-001",
                    "en-TC": "en-001",
                    "en-TK": "en-001",
                    "en-TO": "en-001",
                    "en-TT": "en-001",
                    "en-TV": "en-001",
                    "en-TZ": "en-001",
                    "en-UG": "en-001",
                    "en-VC": "en-001",
                    "en-VG": "en-001",
                    "en-VU": "en-001",
                    "en-WS": "en-001",
                    "en-ZA": "en-001",
                    "en-ZM": "en-001",
                    "en-ZW": "en-001",
                    "en-AT": "en-150",
                    "en-BE": "en-150",
                    "en-CH": "en-150",
                    "en-DE": "en-150",
                    "en-DK": "en-150",
                    "en-FI": "en-150",
                    "en-NL": "en-150",
                    "en-SE": "en-150",
                    "en-SI": "en-150",
                    "hi-Latn": "en-IN",
                    "es-AR": "es-419",
                    "es-BO": "es-419",
                    "es-BR": "es-419",
                    "es-BZ": "es-419",
                    "es-CL": "es-419",
                    "es-CO": "es-419",
                    "es-CR": "es-419",
                    "es-CU": "es-419",
                    "es-DO": "es-419",
                    "es-EC": "es-419",
                    "es-GT": "es-419",
                    "es-HN": "es-419",
                    "es-MX": "es-419",
                    "es-NI": "es-419",
                    "es-PA": "es-419",
                    "es-PE": "es-419",
                    "es-PR": "es-419",
                    "es-PY": "es-419",
                    "es-SV": "es-419",
                    "es-US": "es-419",
                    "es-UY": "es-419",
                    "es-VE": "es-419",
                    nb: "no",
                    nn: "no",
                    "pt-AO": "pt-PT",
                    "pt-CH": "pt-PT",
                    "pt-CV": "pt-PT",
                    "pt-FR": "pt-PT",
                    "pt-GQ": "pt-PT",
                    "pt-GW": "pt-PT",
                    "pt-LU": "pt-PT",
                    "pt-MO": "pt-PT",
                    "pt-MZ": "pt-PT",
                    "pt-ST": "pt-PT",
                    "pt-TL": "pt-PT",
                    "az-Arab": "und",
                    "az-Cyrl": "und",
                    "bal-Latn": "und",
                    "blt-Latn": "und",
                    "bm-Nkoo": "und",
                    "bs-Cyrl": "und",
                    "byn-Latn": "und",
                    "cu-Glag": "und",
                    "dje-Arab": "und",
                    "dyo-Arab": "und",
                    "en-Dsrt": "und",
                    "en-Shaw": "und",
                    "ff-Adlm": "und",
                    "ff-Arab": "und",
                    "ha-Arab": "und",
                    "iu-Latn": "und",
                    "kk-Arab": "und",
                    "ks-Deva": "und",
                    "ku-Arab": "und",
                    "ky-Arab": "und",
                    "ky-Latn": "und",
                    "ml-Arab": "und",
                    "mn-Mong": "und",
                    "mni-Mtei": "und",
                    "ms-Arab": "und",
                    "pa-Arab": "und",
                    "sat-Deva": "und",
                    "sd-Deva": "und",
                    "sd-Khoj": "und",
                    "sd-Sind": "und",
                    "shi-Latn": "und",
                    "so-Arab": "und",
                    "sr-Latn": "und",
                    "sw-Arab": "und",
                    "tg-Arab": "und",
                    "ug-Cyrl": "und",
                    "uz-Arab": "und",
                    "uz-Cyrl": "und",
                    "vai-Latn": "und",
                    "wo-Arab": "und",
                    "yo-Arab": "und",
                    "yue-Hans": "und",
                    "zh-Hant": "und",
                    "zh-Hant-MO": "zh-Hant-HK"
                };
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        99645:
            /*!************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/core/localization/cldr-data/supplemental.js ***!
              \************************************************************************************************/
            function(__unused_webpack_module, exports) {
                exports.supplementalCldr = void 0;
                // !!! AUTO-GENERATED FILE, DO NOT EDIT
                exports.supplementalCldr = {
                    supplemental: {
                        version: {
                            _unicodeVersion: "12.1.0",
                            _cldrVersion: "36"
                        },
                        likelySubtags: {
                            aa: "aa-Latn-ET",
                            aai: "aai-Latn-ZZ",
                            aak: "aak-Latn-ZZ",
                            aau: "aau-Latn-ZZ",
                            ab: "ab-Cyrl-GE",
                            abi: "abi-Latn-ZZ",
                            abq: "abq-Cyrl-ZZ",
                            abr: "abr-Latn-GH",
                            abt: "abt-Latn-ZZ",
                            aby: "aby-Latn-ZZ",
                            acd: "acd-Latn-ZZ",
                            ace: "ace-Latn-ID",
                            ach: "ach-Latn-UG",
                            ada: "ada-Latn-GH",
                            ade: "ade-Latn-ZZ",
                            adj: "adj-Latn-ZZ",
                            adp: "adp-Tibt-BT",
                            ady: "ady-Cyrl-RU",
                            adz: "adz-Latn-ZZ",
                            ae: "ae-Avst-IR",
                            aeb: "aeb-Arab-TN",
                            aey: "aey-Latn-ZZ",
                            af: "af-Latn-ZA",
                            agc: "agc-Latn-ZZ",
                            agd: "agd-Latn-ZZ",
                            agg: "agg-Latn-ZZ",
                            agm: "agm-Latn-ZZ",
                            ago: "ago-Latn-ZZ",
                            agq: "agq-Latn-CM",
                            aha: "aha-Latn-ZZ",
                            ahl: "ahl-Latn-ZZ",
                            aho: "aho-Ahom-IN",
                            ajg: "ajg-Latn-ZZ",
                            ak: "ak-Latn-GH",
                            akk: "akk-Xsux-IQ",
                            ala: "ala-Latn-ZZ",
                            ali: "ali-Latn-ZZ",
                            aln: "aln-Latn-XK",
                            alt: "alt-Cyrl-RU",
                            am: "am-Ethi-ET",
                            amm: "amm-Latn-ZZ",
                            amn: "amn-Latn-ZZ",
                            amo: "amo-Latn-NG",
                            amp: "amp-Latn-ZZ",
                            an: "an-Latn-ES",
                            anc: "anc-Latn-ZZ",
                            ank: "ank-Latn-ZZ",
                            ann: "ann-Latn-ZZ",
                            any: "any-Latn-ZZ",
                            aoj: "aoj-Latn-ZZ",
                            aom: "aom-Latn-ZZ",
                            aoz: "aoz-Latn-ID",
                            apc: "apc-Arab-ZZ",
                            apd: "apd-Arab-TG",
                            ape: "ape-Latn-ZZ",
                            apr: "apr-Latn-ZZ",
                            aps: "aps-Latn-ZZ",
                            apz: "apz-Latn-ZZ",
                            ar: "ar-Arab-EG",
                            arc: "arc-Armi-IR",
                            "arc-Nbat": "arc-Nbat-JO",
                            "arc-Palm": "arc-Palm-SY",
                            arh: "arh-Latn-ZZ",
                            arn: "arn-Latn-CL",
                            aro: "aro-Latn-BO",
                            arq: "arq-Arab-DZ",
                            ars: "ars-Arab-SA",
                            ary: "ary-Arab-MA",
                            arz: "arz-Arab-EG",
                            as: "as-Beng-IN",
                            asa: "asa-Latn-TZ",
                            ase: "ase-Sgnw-US",
                            asg: "asg-Latn-ZZ",
                            aso: "aso-Latn-ZZ",
                            ast: "ast-Latn-ES",
                            ata: "ata-Latn-ZZ",
                            atg: "atg-Latn-ZZ",
                            atj: "atj-Latn-CA",
                            auy: "auy-Latn-ZZ",
                            av: "av-Cyrl-RU",
                            avl: "avl-Arab-ZZ",
                            avn: "avn-Latn-ZZ",
                            avt: "avt-Latn-ZZ",
                            avu: "avu-Latn-ZZ",
                            awa: "awa-Deva-IN",
                            awb: "awb-Latn-ZZ",
                            awo: "awo-Latn-ZZ",
                            awx: "awx-Latn-ZZ",
                            ay: "ay-Latn-BO",
                            ayb: "ayb-Latn-ZZ",
                            az: "az-Latn-AZ",
                            "az-Arab": "az-Arab-IR",
                            "az-IQ": "az-Arab-IQ",
                            "az-IR": "az-Arab-IR",
                            "az-RU": "az-Cyrl-RU",
                            ba: "ba-Cyrl-RU",
                            bal: "bal-Arab-PK",
                            ban: "ban-Latn-ID",
                            bap: "bap-Deva-NP",
                            bar: "bar-Latn-AT",
                            bas: "bas-Latn-CM",
                            bav: "bav-Latn-ZZ",
                            bax: "bax-Bamu-CM",
                            bba: "bba-Latn-ZZ",
                            bbb: "bbb-Latn-ZZ",
                            bbc: "bbc-Latn-ID",
                            bbd: "bbd-Latn-ZZ",
                            bbj: "bbj-Latn-CM",
                            bbp: "bbp-Latn-ZZ",
                            bbr: "bbr-Latn-ZZ",
                            bcf: "bcf-Latn-ZZ",
                            bch: "bch-Latn-ZZ",
                            bci: "bci-Latn-CI",
                            bcm: "bcm-Latn-ZZ",
                            bcn: "bcn-Latn-ZZ",
                            bco: "bco-Latn-ZZ",
                            bcq: "bcq-Ethi-ZZ",
                            bcu: "bcu-Latn-ZZ",
                            bdd: "bdd-Latn-ZZ",
                            be: "be-Cyrl-BY",
                            bef: "bef-Latn-ZZ",
                            beh: "beh-Latn-ZZ",
                            bej: "bej-Arab-SD",
                            bem: "bem-Latn-ZM",
                            bet: "bet-Latn-ZZ",
                            bew: "bew-Latn-ID",
                            bex: "bex-Latn-ZZ",
                            bez: "bez-Latn-TZ",
                            bfd: "bfd-Latn-CM",
                            bfq: "bfq-Taml-IN",
                            bft: "bft-Arab-PK",
                            bfy: "bfy-Deva-IN",
                            bg: "bg-Cyrl-BG",
                            bgc: "bgc-Deva-IN",
                            bgn: "bgn-Arab-PK",
                            bgx: "bgx-Grek-TR",
                            bhb: "bhb-Deva-IN",
                            bhg: "bhg-Latn-ZZ",
                            bhi: "bhi-Deva-IN",
                            bhl: "bhl-Latn-ZZ",
                            bho: "bho-Deva-IN",
                            bhy: "bhy-Latn-ZZ",
                            bi: "bi-Latn-VU",
                            bib: "bib-Latn-ZZ",
                            big: "big-Latn-ZZ",
                            bik: "bik-Latn-PH",
                            bim: "bim-Latn-ZZ",
                            bin: "bin-Latn-NG",
                            bio: "bio-Latn-ZZ",
                            biq: "biq-Latn-ZZ",
                            bjh: "bjh-Latn-ZZ",
                            bji: "bji-Ethi-ZZ",
                            bjj: "bjj-Deva-IN",
                            bjn: "bjn-Latn-ID",
                            bjo: "bjo-Latn-ZZ",
                            bjr: "bjr-Latn-ZZ",
                            bjt: "bjt-Latn-SN",
                            bjz: "bjz-Latn-ZZ",
                            bkc: "bkc-Latn-ZZ",
                            bkm: "bkm-Latn-CM",
                            bkq: "bkq-Latn-ZZ",
                            bku: "bku-Latn-PH",
                            bkv: "bkv-Latn-ZZ",
                            blt: "blt-Tavt-VN",
                            bm: "bm-Latn-ML",
                            bmh: "bmh-Latn-ZZ",
                            bmk: "bmk-Latn-ZZ",
                            bmq: "bmq-Latn-ML",
                            bmu: "bmu-Latn-ZZ",
                            bn: "bn-Beng-BD",
                            bng: "bng-Latn-ZZ",
                            bnm: "bnm-Latn-ZZ",
                            bnp: "bnp-Latn-ZZ",
                            bo: "bo-Tibt-CN",
                            boj: "boj-Latn-ZZ",
                            bom: "bom-Latn-ZZ",
                            bon: "bon-Latn-ZZ",
                            bpy: "bpy-Beng-IN",
                            bqc: "bqc-Latn-ZZ",
                            bqi: "bqi-Arab-IR",
                            bqp: "bqp-Latn-ZZ",
                            bqv: "bqv-Latn-CI",
                            br: "br-Latn-FR",
                            bra: "bra-Deva-IN",
                            brh: "brh-Arab-PK",
                            brx: "brx-Deva-IN",
                            brz: "brz-Latn-ZZ",
                            bs: "bs-Latn-BA",
                            bsj: "bsj-Latn-ZZ",
                            bsq: "bsq-Bass-LR",
                            bss: "bss-Latn-CM",
                            bst: "bst-Ethi-ZZ",
                            bto: "bto-Latn-PH",
                            btt: "btt-Latn-ZZ",
                            btv: "btv-Deva-PK",
                            bua: "bua-Cyrl-RU",
                            buc: "buc-Latn-YT",
                            bud: "bud-Latn-ZZ",
                            bug: "bug-Latn-ID",
                            buk: "buk-Latn-ZZ",
                            bum: "bum-Latn-CM",
                            buo: "buo-Latn-ZZ",
                            bus: "bus-Latn-ZZ",
                            buu: "buu-Latn-ZZ",
                            bvb: "bvb-Latn-GQ",
                            bwd: "bwd-Latn-ZZ",
                            bwr: "bwr-Latn-ZZ",
                            bxh: "bxh-Latn-ZZ",
                            bye: "bye-Latn-ZZ",
                            byn: "byn-Ethi-ER",
                            byr: "byr-Latn-ZZ",
                            bys: "bys-Latn-ZZ",
                            byv: "byv-Latn-CM",
                            byx: "byx-Latn-ZZ",
                            bza: "bza-Latn-ZZ",
                            bze: "bze-Latn-ML",
                            bzf: "bzf-Latn-ZZ",
                            bzh: "bzh-Latn-ZZ",
                            bzw: "bzw-Latn-ZZ",
                            ca: "ca-Latn-ES",
                            can: "can-Latn-ZZ",
                            cbj: "cbj-Latn-ZZ",
                            cch: "cch-Latn-NG",
                            ccp: "ccp-Cakm-BD",
                            ce: "ce-Cyrl-RU",
                            ceb: "ceb-Latn-PH",
                            cfa: "cfa-Latn-ZZ",
                            cgg: "cgg-Latn-UG",
                            ch: "ch-Latn-GU",
                            chk: "chk-Latn-FM",
                            chm: "chm-Cyrl-RU",
                            cho: "cho-Latn-US",
                            chp: "chp-Latn-CA",
                            chr: "chr-Cher-US",
                            cic: "cic-Latn-US",
                            cja: "cja-Arab-KH",
                            cjm: "cjm-Cham-VN",
                            cjv: "cjv-Latn-ZZ",
                            ckb: "ckb-Arab-IQ",
                            ckl: "ckl-Latn-ZZ",
                            cko: "cko-Latn-ZZ",
                            cky: "cky-Latn-ZZ",
                            cla: "cla-Latn-ZZ",
                            cme: "cme-Latn-ZZ",
                            cmg: "cmg-Soyo-MN",
                            co: "co-Latn-FR",
                            cop: "cop-Copt-EG",
                            cps: "cps-Latn-PH",
                            cr: "cr-Cans-CA",
                            crh: "crh-Cyrl-UA",
                            crj: "crj-Cans-CA",
                            crk: "crk-Cans-CA",
                            crl: "crl-Cans-CA",
                            crm: "crm-Cans-CA",
                            crs: "crs-Latn-SC",
                            cs: "cs-Latn-CZ",
                            csb: "csb-Latn-PL",
                            csw: "csw-Cans-CA",
                            ctd: "ctd-Pauc-MM",
                            cu: "cu-Cyrl-RU",
                            "cu-Glag": "cu-Glag-BG",
                            cv: "cv-Cyrl-RU",
                            cy: "cy-Latn-GB",
                            da: "da-Latn-DK",
                            dad: "dad-Latn-ZZ",
                            daf: "daf-Latn-ZZ",
                            dag: "dag-Latn-ZZ",
                            dah: "dah-Latn-ZZ",
                            dak: "dak-Latn-US",
                            dar: "dar-Cyrl-RU",
                            dav: "dav-Latn-KE",
                            dbd: "dbd-Latn-ZZ",
                            dbq: "dbq-Latn-ZZ",
                            dcc: "dcc-Arab-IN",
                            ddn: "ddn-Latn-ZZ",
                            de: "de-Latn-DE",
                            ded: "ded-Latn-ZZ",
                            den: "den-Latn-CA",
                            dga: "dga-Latn-ZZ",
                            dgh: "dgh-Latn-ZZ",
                            dgi: "dgi-Latn-ZZ",
                            dgl: "dgl-Arab-ZZ",
                            dgr: "dgr-Latn-CA",
                            dgz: "dgz-Latn-ZZ",
                            dia: "dia-Latn-ZZ",
                            dje: "dje-Latn-NE",
                            dnj: "dnj-Latn-CI",
                            dob: "dob-Latn-ZZ",
                            doi: "doi-Arab-IN",
                            dop: "dop-Latn-ZZ",
                            dow: "dow-Latn-ZZ",
                            drh: "drh-Mong-CN",
                            dri: "dri-Latn-ZZ",
                            drs: "drs-Ethi-ZZ",
                            dsb: "dsb-Latn-DE",
                            dtm: "dtm-Latn-ML",
                            dtp: "dtp-Latn-MY",
                            dts: "dts-Latn-ZZ",
                            dty: "dty-Deva-NP",
                            dua: "dua-Latn-CM",
                            duc: "duc-Latn-ZZ",
                            dud: "dud-Latn-ZZ",
                            dug: "dug-Latn-ZZ",
                            dv: "dv-Thaa-MV",
                            dva: "dva-Latn-ZZ",
                            dww: "dww-Latn-ZZ",
                            dyo: "dyo-Latn-SN",
                            dyu: "dyu-Latn-BF",
                            dz: "dz-Tibt-BT",
                            dzg: "dzg-Latn-ZZ",
                            ebu: "ebu-Latn-KE",
                            ee: "ee-Latn-GH",
                            efi: "efi-Latn-NG",
                            egl: "egl-Latn-IT",
                            egy: "egy-Egyp-EG",
                            eka: "eka-Latn-ZZ",
                            eky: "eky-Kali-MM",
                            el: "el-Grek-GR",
                            ema: "ema-Latn-ZZ",
                            emi: "emi-Latn-ZZ",
                            en: "en-Latn-US",
                            "en-Shaw": "en-Shaw-GB",
                            enn: "enn-Latn-ZZ",
                            enq: "enq-Latn-ZZ",
                            eo: "eo-Latn-001",
                            eri: "eri-Latn-ZZ",
                            es: "es-Latn-ES",
                            esg: "esg-Gonm-IN",
                            esu: "esu-Latn-US",
                            et: "et-Latn-EE",
                            etr: "etr-Latn-ZZ",
                            ett: "ett-Ital-IT",
                            etu: "etu-Latn-ZZ",
                            etx: "etx-Latn-ZZ",
                            eu: "eu-Latn-ES",
                            ewo: "ewo-Latn-CM",
                            ext: "ext-Latn-ES",
                            fa: "fa-Arab-IR",
                            faa: "faa-Latn-ZZ",
                            fab: "fab-Latn-ZZ",
                            fag: "fag-Latn-ZZ",
                            fai: "fai-Latn-ZZ",
                            fan: "fan-Latn-GQ",
                            ff: "ff-Latn-SN",
                            "ff-Adlm": "ff-Adlm-GN",
                            ffi: "ffi-Latn-ZZ",
                            ffm: "ffm-Latn-ML",
                            fi: "fi-Latn-FI",
                            fia: "fia-Arab-SD",
                            fil: "fil-Latn-PH",
                            fit: "fit-Latn-SE",
                            fj: "fj-Latn-FJ",
                            flr: "flr-Latn-ZZ",
                            fmp: "fmp-Latn-ZZ",
                            fo: "fo-Latn-FO",
                            fod: "fod-Latn-ZZ",
                            fon: "fon-Latn-BJ",
                            for: "for-Latn-ZZ",
                            fpe: "fpe-Latn-ZZ",
                            fqs: "fqs-Latn-ZZ",
                            fr: "fr-Latn-FR",
                            frc: "frc-Latn-US",
                            frp: "frp-Latn-FR",
                            frr: "frr-Latn-DE",
                            frs: "frs-Latn-DE",
                            fub: "fub-Arab-CM",
                            fud: "fud-Latn-WF",
                            fue: "fue-Latn-ZZ",
                            fuf: "fuf-Latn-GN",
                            fuh: "fuh-Latn-ZZ",
                            fuq: "fuq-Latn-NE",
                            fur: "fur-Latn-IT",
                            fuv: "fuv-Latn-NG",
                            fuy: "fuy-Latn-ZZ",
                            fvr: "fvr-Latn-SD",
                            fy: "fy-Latn-NL",
                            ga: "ga-Latn-IE",
                            gaa: "gaa-Latn-GH",
                            gaf: "gaf-Latn-ZZ",
                            gag: "gag-Latn-MD",
                            gah: "gah-Latn-ZZ",
                            gaj: "gaj-Latn-ZZ",
                            gam: "gam-Latn-ZZ",
                            gan: "gan-Hans-CN",
                            gaw: "gaw-Latn-ZZ",
                            gay: "gay-Latn-ID",
                            gba: "gba-Latn-ZZ",
                            gbf: "gbf-Latn-ZZ",
                            gbm: "gbm-Deva-IN",
                            gby: "gby-Latn-ZZ",
                            gbz: "gbz-Arab-IR",
                            gcr: "gcr-Latn-GF",
                            gd: "gd-Latn-GB",
                            gde: "gde-Latn-ZZ",
                            gdn: "gdn-Latn-ZZ",
                            gdr: "gdr-Latn-ZZ",
                            geb: "geb-Latn-ZZ",
                            gej: "gej-Latn-ZZ",
                            gel: "gel-Latn-ZZ",
                            gez: "gez-Ethi-ET",
                            gfk: "gfk-Latn-ZZ",
                            ggn: "ggn-Deva-NP",
                            ghs: "ghs-Latn-ZZ",
                            gil: "gil-Latn-KI",
                            gim: "gim-Latn-ZZ",
                            gjk: "gjk-Arab-PK",
                            gjn: "gjn-Latn-ZZ",
                            gju: "gju-Arab-PK",
                            gkn: "gkn-Latn-ZZ",
                            gkp: "gkp-Latn-ZZ",
                            gl: "gl-Latn-ES",
                            glk: "glk-Arab-IR",
                            gmm: "gmm-Latn-ZZ",
                            gmv: "gmv-Ethi-ZZ",
                            gn: "gn-Latn-PY",
                            gnd: "gnd-Latn-ZZ",
                            gng: "gng-Latn-ZZ",
                            god: "god-Latn-ZZ",
                            gof: "gof-Ethi-ZZ",
                            goi: "goi-Latn-ZZ",
                            gom: "gom-Deva-IN",
                            gon: "gon-Telu-IN",
                            gor: "gor-Latn-ID",
                            gos: "gos-Latn-NL",
                            got: "got-Goth-UA",
                            grb: "grb-Latn-ZZ",
                            grc: "grc-Cprt-CY",
                            "grc-Linb": "grc-Linb-GR",
                            grt: "grt-Beng-IN",
                            grw: "grw-Latn-ZZ",
                            gsw: "gsw-Latn-CH",
                            gu: "gu-Gujr-IN",
                            gub: "gub-Latn-BR",
                            guc: "guc-Latn-CO",
                            gud: "gud-Latn-ZZ",
                            gur: "gur-Latn-GH",
                            guw: "guw-Latn-ZZ",
                            gux: "gux-Latn-ZZ",
                            guz: "guz-Latn-KE",
                            gv: "gv-Latn-IM",
                            gvf: "gvf-Latn-ZZ",
                            gvr: "gvr-Deva-NP",
                            gvs: "gvs-Latn-ZZ",
                            gwc: "gwc-Arab-ZZ",
                            gwi: "gwi-Latn-CA",
                            gwt: "gwt-Arab-ZZ",
                            gyi: "gyi-Latn-ZZ",
                            ha: "ha-Latn-NG",
                            "ha-CM": "ha-Arab-CM",
                            "ha-SD": "ha-Arab-SD",
                            hag: "hag-Latn-ZZ",
                            hak: "hak-Hans-CN",
                            ham: "ham-Latn-ZZ",
                            haw: "haw-Latn-US",
                            haz: "haz-Arab-AF",
                            hbb: "hbb-Latn-ZZ",
                            hdy: "hdy-Ethi-ZZ",
                            he: "he-Hebr-IL",
                            hhy: "hhy-Latn-ZZ",
                            hi: "hi-Deva-IN",
                            hia: "hia-Latn-ZZ",
                            hif: "hif-Latn-FJ",
                            hig: "hig-Latn-ZZ",
                            hih: "hih-Latn-ZZ",
                            hil: "hil-Latn-PH",
                            hla: "hla-Latn-ZZ",
                            hlu: "hlu-Hluw-TR",
                            hmd: "hmd-Plrd-CN",
                            hmt: "hmt-Latn-ZZ",
                            hnd: "hnd-Arab-PK",
                            hne: "hne-Deva-IN",
                            hnj: "hnj-Hmng-LA",
                            hnn: "hnn-Latn-PH",
                            hno: "hno-Arab-PK",
                            ho: "ho-Latn-PG",
                            hoc: "hoc-Deva-IN",
                            hoj: "hoj-Deva-IN",
                            hot: "hot-Latn-ZZ",
                            hr: "hr-Latn-HR",
                            hsb: "hsb-Latn-DE",
                            hsn: "hsn-Hans-CN",
                            ht: "ht-Latn-HT",
                            hu: "hu-Latn-HU",
                            hui: "hui-Latn-ZZ",
                            hy: "hy-Armn-AM",
                            hz: "hz-Latn-NA",
                            ia: "ia-Latn-001",
                            ian: "ian-Latn-ZZ",
                            iar: "iar-Latn-ZZ",
                            iba: "iba-Latn-MY",
                            ibb: "ibb-Latn-NG",
                            iby: "iby-Latn-ZZ",
                            ica: "ica-Latn-ZZ",
                            ich: "ich-Latn-ZZ",
                            id: "id-Latn-ID",
                            idd: "idd-Latn-ZZ",
                            idi: "idi-Latn-ZZ",
                            idu: "idu-Latn-ZZ",
                            ife: "ife-Latn-TG",
                            ig: "ig-Latn-NG",
                            igb: "igb-Latn-ZZ",
                            ige: "ige-Latn-ZZ",
                            ii: "ii-Yiii-CN",
                            ijj: "ijj-Latn-ZZ",
                            ik: "ik-Latn-US",
                            ikk: "ikk-Latn-ZZ",
                            ikt: "ikt-Latn-CA",
                            ikw: "ikw-Latn-ZZ",
                            ikx: "ikx-Latn-ZZ",
                            ilo: "ilo-Latn-PH",
                            imo: "imo-Latn-ZZ",
                            in: "in-Latn-ID",
                            inh: "inh-Cyrl-RU",
                            io: "io-Latn-001",
                            iou: "iou-Latn-ZZ",
                            iri: "iri-Latn-ZZ",
                            is: "is-Latn-IS",
                            it: "it-Latn-IT",
                            iu: "iu-Cans-CA",
                            iw: "iw-Hebr-IL",
                            iwm: "iwm-Latn-ZZ",
                            iws: "iws-Latn-ZZ",
                            izh: "izh-Latn-RU",
                            izi: "izi-Latn-ZZ",
                            ja: "ja-Jpan-JP",
                            jab: "jab-Latn-ZZ",
                            jam: "jam-Latn-JM",
                            jbo: "jbo-Latn-001",
                            jbu: "jbu-Latn-ZZ",
                            jen: "jen-Latn-ZZ",
                            jgk: "jgk-Latn-ZZ",
                            jgo: "jgo-Latn-CM",
                            ji: "ji-Hebr-UA",
                            jib: "jib-Latn-ZZ",
                            jmc: "jmc-Latn-TZ",
                            jml: "jml-Deva-NP",
                            jra: "jra-Latn-ZZ",
                            jut: "jut-Latn-DK",
                            jv: "jv-Latn-ID",
                            jw: "jw-Latn-ID",
                            ka: "ka-Geor-GE",
                            kaa: "kaa-Cyrl-UZ",
                            kab: "kab-Latn-DZ",
                            kac: "kac-Latn-MM",
                            kad: "kad-Latn-ZZ",
                            kai: "kai-Latn-ZZ",
                            kaj: "kaj-Latn-NG",
                            kam: "kam-Latn-KE",
                            kao: "kao-Latn-ML",
                            kbd: "kbd-Cyrl-RU",
                            kbm: "kbm-Latn-ZZ",
                            kbp: "kbp-Latn-ZZ",
                            kbq: "kbq-Latn-ZZ",
                            kbx: "kbx-Latn-ZZ",
                            kby: "kby-Arab-NE",
                            kcg: "kcg-Latn-NG",
                            kck: "kck-Latn-ZW",
                            kcl: "kcl-Latn-ZZ",
                            kct: "kct-Latn-ZZ",
                            kde: "kde-Latn-TZ",
                            kdh: "kdh-Arab-TG",
                            kdl: "kdl-Latn-ZZ",
                            kdt: "kdt-Thai-TH",
                            kea: "kea-Latn-CV",
                            ken: "ken-Latn-CM",
                            kez: "kez-Latn-ZZ",
                            kfo: "kfo-Latn-CI",
                            kfr: "kfr-Deva-IN",
                            kfy: "kfy-Deva-IN",
                            kg: "kg-Latn-CD",
                            kge: "kge-Latn-ID",
                            kgf: "kgf-Latn-ZZ",
                            kgp: "kgp-Latn-BR",
                            kha: "kha-Latn-IN",
                            khb: "khb-Talu-CN",
                            khn: "khn-Deva-IN",
                            khq: "khq-Latn-ML",
                            khs: "khs-Latn-ZZ",
                            kht: "kht-Mymr-IN",
                            khw: "khw-Arab-PK",
                            khz: "khz-Latn-ZZ",
                            ki: "ki-Latn-KE",
                            kij: "kij-Latn-ZZ",
                            kiu: "kiu-Latn-TR",
                            kiw: "kiw-Latn-ZZ",
                            kj: "kj-Latn-NA",
                            kjd: "kjd-Latn-ZZ",
                            kjg: "kjg-Laoo-LA",
                            kjs: "kjs-Latn-ZZ",
                            kjy: "kjy-Latn-ZZ",
                            kk: "kk-Cyrl-KZ",
                            "kk-AF": "kk-Arab-AF",
                            "kk-Arab": "kk-Arab-CN",
                            "kk-CN": "kk-Arab-CN",
                            "kk-IR": "kk-Arab-IR",
                            "kk-MN": "kk-Arab-MN",
                            kkc: "kkc-Latn-ZZ",
                            kkj: "kkj-Latn-CM",
                            kl: "kl-Latn-GL",
                            kln: "kln-Latn-KE",
                            klq: "klq-Latn-ZZ",
                            klt: "klt-Latn-ZZ",
                            klx: "klx-Latn-ZZ",
                            km: "km-Khmr-KH",
                            kmb: "kmb-Latn-AO",
                            kmh: "kmh-Latn-ZZ",
                            kmo: "kmo-Latn-ZZ",
                            kms: "kms-Latn-ZZ",
                            kmu: "kmu-Latn-ZZ",
                            kmw: "kmw-Latn-ZZ",
                            kn: "kn-Knda-IN",
                            knf: "knf-Latn-GW",
                            knp: "knp-Latn-ZZ",
                            ko: "ko-Kore-KR",
                            koi: "koi-Cyrl-RU",
                            kok: "kok-Deva-IN",
                            kol: "kol-Latn-ZZ",
                            kos: "kos-Latn-FM",
                            koz: "koz-Latn-ZZ",
                            kpe: "kpe-Latn-LR",
                            kpf: "kpf-Latn-ZZ",
                            kpo: "kpo-Latn-ZZ",
                            kpr: "kpr-Latn-ZZ",
                            kpx: "kpx-Latn-ZZ",
                            kqb: "kqb-Latn-ZZ",
                            kqf: "kqf-Latn-ZZ",
                            kqs: "kqs-Latn-ZZ",
                            kqy: "kqy-Ethi-ZZ",
                            kr: "kr-Latn-ZZ",
                            krc: "krc-Cyrl-RU",
                            kri: "kri-Latn-SL",
                            krj: "krj-Latn-PH",
                            krl: "krl-Latn-RU",
                            krs: "krs-Latn-ZZ",
                            kru: "kru-Deva-IN",
                            ks: "ks-Arab-IN",
                            ksb: "ksb-Latn-TZ",
                            ksd: "ksd-Latn-ZZ",
                            ksf: "ksf-Latn-CM",
                            ksh: "ksh-Latn-DE",
                            ksj: "ksj-Latn-ZZ",
                            ksr: "ksr-Latn-ZZ",
                            ktb: "ktb-Ethi-ZZ",
                            ktm: "ktm-Latn-ZZ",
                            kto: "kto-Latn-ZZ",
                            ktr: "ktr-Latn-MY",
                            ku: "ku-Latn-TR",
                            "ku-Arab": "ku-Arab-IQ",
                            "ku-LB": "ku-Arab-LB",
                            kub: "kub-Latn-ZZ",
                            kud: "kud-Latn-ZZ",
                            kue: "kue-Latn-ZZ",
                            kuj: "kuj-Latn-ZZ",
                            kum: "kum-Cyrl-RU",
                            kun: "kun-Latn-ZZ",
                            kup: "kup-Latn-ZZ",
                            kus: "kus-Latn-ZZ",
                            kv: "kv-Cyrl-RU",
                            kvg: "kvg-Latn-ZZ",
                            kvr: "kvr-Latn-ID",
                            kvx: "kvx-Arab-PK",
                            kw: "kw-Latn-GB",
                            kwj: "kwj-Latn-ZZ",
                            kwo: "kwo-Latn-ZZ",
                            kwq: "kwq-Latn-ZZ",
                            kxa: "kxa-Latn-ZZ",
                            kxc: "kxc-Ethi-ZZ",
                            kxe: "kxe-Latn-ZZ",
                            kxm: "kxm-Thai-TH",
                            kxp: "kxp-Arab-PK",
                            kxw: "kxw-Latn-ZZ",
                            kxz: "kxz-Latn-ZZ",
                            ky: "ky-Cyrl-KG",
                            "ky-Arab": "ky-Arab-CN",
                            "ky-CN": "ky-Arab-CN",
                            "ky-Latn": "ky-Latn-TR",
                            "ky-TR": "ky-Latn-TR",
                            kye: "kye-Latn-ZZ",
                            kyx: "kyx-Latn-ZZ",
                            kzj: "kzj-Latn-MY",
                            kzr: "kzr-Latn-ZZ",
                            kzt: "kzt-Latn-MY",
                            la: "la-Latn-VA",
                            lab: "lab-Lina-GR",
                            lad: "lad-Hebr-IL",
                            lag: "lag-Latn-TZ",
                            lah: "lah-Arab-PK",
                            laj: "laj-Latn-UG",
                            las: "las-Latn-ZZ",
                            lb: "lb-Latn-LU",
                            lbe: "lbe-Cyrl-RU",
                            lbu: "lbu-Latn-ZZ",
                            lbw: "lbw-Latn-ID",
                            lcm: "lcm-Latn-ZZ",
                            lcp: "lcp-Thai-CN",
                            ldb: "ldb-Latn-ZZ",
                            led: "led-Latn-ZZ",
                            lee: "lee-Latn-ZZ",
                            lem: "lem-Latn-ZZ",
                            lep: "lep-Lepc-IN",
                            leq: "leq-Latn-ZZ",
                            leu: "leu-Latn-ZZ",
                            lez: "lez-Cyrl-RU",
                            lg: "lg-Latn-UG",
                            lgg: "lgg-Latn-ZZ",
                            li: "li-Latn-NL",
                            lia: "lia-Latn-ZZ",
                            lid: "lid-Latn-ZZ",
                            lif: "lif-Deva-NP",
                            "lif-Limb": "lif-Limb-IN",
                            lig: "lig-Latn-ZZ",
                            lih: "lih-Latn-ZZ",
                            lij: "lij-Latn-IT",
                            lis: "lis-Lisu-CN",
                            ljp: "ljp-Latn-ID",
                            lki: "lki-Arab-IR",
                            lkt: "lkt-Latn-US",
                            lle: "lle-Latn-ZZ",
                            lln: "lln-Latn-ZZ",
                            lmn: "lmn-Telu-IN",
                            lmo: "lmo-Latn-IT",
                            lmp: "lmp-Latn-ZZ",
                            ln: "ln-Latn-CD",
                            lns: "lns-Latn-ZZ",
                            lnu: "lnu-Latn-ZZ",
                            lo: "lo-Laoo-LA",
                            loj: "loj-Latn-ZZ",
                            lok: "lok-Latn-ZZ",
                            lol: "lol-Latn-CD",
                            lor: "lor-Latn-ZZ",
                            los: "los-Latn-ZZ",
                            loz: "loz-Latn-ZM",
                            lrc: "lrc-Arab-IR",
                            lt: "lt-Latn-LT",
                            ltg: "ltg-Latn-LV",
                            lu: "lu-Latn-CD",
                            lua: "lua-Latn-CD",
                            luo: "luo-Latn-KE",
                            luy: "luy-Latn-KE",
                            luz: "luz-Arab-IR",
                            lv: "lv-Latn-LV",
                            lwl: "lwl-Thai-TH",
                            lzh: "lzh-Hans-CN",
                            lzz: "lzz-Latn-TR",
                            mad: "mad-Latn-ID",
                            maf: "maf-Latn-CM",
                            mag: "mag-Deva-IN",
                            mai: "mai-Deva-IN",
                            mak: "mak-Latn-ID",
                            man: "man-Latn-GM",
                            "man-GN": "man-Nkoo-GN",
                            "man-Nkoo": "man-Nkoo-GN",
                            mas: "mas-Latn-KE",
                            maw: "maw-Latn-ZZ",
                            maz: "maz-Latn-MX",
                            mbh: "mbh-Latn-ZZ",
                            mbo: "mbo-Latn-ZZ",
                            mbq: "mbq-Latn-ZZ",
                            mbu: "mbu-Latn-ZZ",
                            mbw: "mbw-Latn-ZZ",
                            mci: "mci-Latn-ZZ",
                            mcp: "mcp-Latn-ZZ",
                            mcq: "mcq-Latn-ZZ",
                            mcr: "mcr-Latn-ZZ",
                            mcu: "mcu-Latn-ZZ",
                            mda: "mda-Latn-ZZ",
                            mde: "mde-Arab-ZZ",
                            mdf: "mdf-Cyrl-RU",
                            mdh: "mdh-Latn-PH",
                            mdj: "mdj-Latn-ZZ",
                            mdr: "mdr-Latn-ID",
                            mdx: "mdx-Ethi-ZZ",
                            med: "med-Latn-ZZ",
                            mee: "mee-Latn-ZZ",
                            mek: "mek-Latn-ZZ",
                            men: "men-Latn-SL",
                            mer: "mer-Latn-KE",
                            met: "met-Latn-ZZ",
                            meu: "meu-Latn-ZZ",
                            mfa: "mfa-Arab-TH",
                            mfe: "mfe-Latn-MU",
                            mfn: "mfn-Latn-ZZ",
                            mfo: "mfo-Latn-ZZ",
                            mfq: "mfq-Latn-ZZ",
                            mg: "mg-Latn-MG",
                            mgh: "mgh-Latn-MZ",
                            mgl: "mgl-Latn-ZZ",
                            mgo: "mgo-Latn-CM",
                            mgp: "mgp-Deva-NP",
                            mgy: "mgy-Latn-TZ",
                            mh: "mh-Latn-MH",
                            mhi: "mhi-Latn-ZZ",
                            mhl: "mhl-Latn-ZZ",
                            mi: "mi-Latn-NZ",
                            mif: "mif-Latn-ZZ",
                            min: "min-Latn-ID",
                            mis: "mis-Hatr-IQ",
                            "mis-Medf": "mis-Medf-NG",
                            miw: "miw-Latn-ZZ",
                            mk: "mk-Cyrl-MK",
                            mki: "mki-Arab-ZZ",
                            mkl: "mkl-Latn-ZZ",
                            mkp: "mkp-Latn-ZZ",
                            mkw: "mkw-Latn-ZZ",
                            ml: "ml-Mlym-IN",
                            mle: "mle-Latn-ZZ",
                            mlp: "mlp-Latn-ZZ",
                            mls: "mls-Latn-SD",
                            mmo: "mmo-Latn-ZZ",
                            mmu: "mmu-Latn-ZZ",
                            mmx: "mmx-Latn-ZZ",
                            mn: "mn-Cyrl-MN",
                            "mn-CN": "mn-Mong-CN",
                            "mn-Mong": "mn-Mong-CN",
                            mna: "mna-Latn-ZZ",
                            mnf: "mnf-Latn-ZZ",
                            mni: "mni-Beng-IN",
                            mnw: "mnw-Mymr-MM",
                            mo: "mo-Latn-RO",
                            moa: "moa-Latn-ZZ",
                            moe: "moe-Latn-CA",
                            moh: "moh-Latn-CA",
                            mos: "mos-Latn-BF",
                            mox: "mox-Latn-ZZ",
                            mpp: "mpp-Latn-ZZ",
                            mps: "mps-Latn-ZZ",
                            mpt: "mpt-Latn-ZZ",
                            mpx: "mpx-Latn-ZZ",
                            mql: "mql-Latn-ZZ",
                            mr: "mr-Deva-IN",
                            mrd: "mrd-Deva-NP",
                            mrj: "mrj-Cyrl-RU",
                            mro: "mro-Mroo-BD",
                            ms: "ms-Latn-MY",
                            "ms-CC": "ms-Arab-CC",
                            "ms-ID": "ms-Arab-ID",
                            mt: "mt-Latn-MT",
                            mtc: "mtc-Latn-ZZ",
                            mtf: "mtf-Latn-ZZ",
                            mti: "mti-Latn-ZZ",
                            mtr: "mtr-Deva-IN",
                            mua: "mua-Latn-CM",
                            mur: "mur-Latn-ZZ",
                            mus: "mus-Latn-US",
                            mva: "mva-Latn-ZZ",
                            mvn: "mvn-Latn-ZZ",
                            mvy: "mvy-Arab-PK",
                            mwk: "mwk-Latn-ML",
                            mwr: "mwr-Deva-IN",
                            mwv: "mwv-Latn-ID",
                            mww: "mww-Hmnp-US",
                            mxc: "mxc-Latn-ZW",
                            mxm: "mxm-Latn-ZZ",
                            my: "my-Mymr-MM",
                            myk: "myk-Latn-ZZ",
                            mym: "mym-Ethi-ZZ",
                            myv: "myv-Cyrl-RU",
                            myw: "myw-Latn-ZZ",
                            myx: "myx-Latn-UG",
                            myz: "myz-Mand-IR",
                            mzk: "mzk-Latn-ZZ",
                            mzm: "mzm-Latn-ZZ",
                            mzn: "mzn-Arab-IR",
                            mzp: "mzp-Latn-ZZ",
                            mzw: "mzw-Latn-ZZ",
                            mzz: "mzz-Latn-ZZ",
                            na: "na-Latn-NR",
                            nac: "nac-Latn-ZZ",
                            naf: "naf-Latn-ZZ",
                            nak: "nak-Latn-ZZ",
                            nan: "nan-Hans-CN",
                            nap: "nap-Latn-IT",
                            naq: "naq-Latn-NA",
                            nas: "nas-Latn-ZZ",
                            nb: "nb-Latn-NO",
                            nca: "nca-Latn-ZZ",
                            nce: "nce-Latn-ZZ",
                            ncf: "ncf-Latn-ZZ",
                            nch: "nch-Latn-MX",
                            nco: "nco-Latn-ZZ",
                            ncu: "ncu-Latn-ZZ",
                            nd: "nd-Latn-ZW",
                            ndc: "ndc-Latn-MZ",
                            nds: "nds-Latn-DE",
                            ne: "ne-Deva-NP",
                            neb: "neb-Latn-ZZ",
                            new: "new-Deva-NP",
                            nex: "nex-Latn-ZZ",
                            nfr: "nfr-Latn-ZZ",
                            ng: "ng-Latn-NA",
                            nga: "nga-Latn-ZZ",
                            ngb: "ngb-Latn-ZZ",
                            ngl: "ngl-Latn-MZ",
                            nhb: "nhb-Latn-ZZ",
                            nhe: "nhe-Latn-MX",
                            nhw: "nhw-Latn-MX",
                            nif: "nif-Latn-ZZ",
                            nii: "nii-Latn-ZZ",
                            nij: "nij-Latn-ID",
                            nin: "nin-Latn-ZZ",
                            niu: "niu-Latn-NU",
                            niy: "niy-Latn-ZZ",
                            niz: "niz-Latn-ZZ",
                            njo: "njo-Latn-IN",
                            nkg: "nkg-Latn-ZZ",
                            nko: "nko-Latn-ZZ",
                            nl: "nl-Latn-NL",
                            nmg: "nmg-Latn-CM",
                            nmz: "nmz-Latn-ZZ",
                            nn: "nn-Latn-NO",
                            nnf: "nnf-Latn-ZZ",
                            nnh: "nnh-Latn-CM",
                            nnk: "nnk-Latn-ZZ",
                            nnm: "nnm-Latn-ZZ",
                            nnp: "nnp-Wcho-IN",
                            no: "no-Latn-NO",
                            nod: "nod-Lana-TH",
                            noe: "noe-Deva-IN",
                            non: "non-Runr-SE",
                            nop: "nop-Latn-ZZ",
                            nou: "nou-Latn-ZZ",
                            nqo: "nqo-Nkoo-GN",
                            nr: "nr-Latn-ZA",
                            nrb: "nrb-Latn-ZZ",
                            nsk: "nsk-Cans-CA",
                            nsn: "nsn-Latn-ZZ",
                            nso: "nso-Latn-ZA",
                            nss: "nss-Latn-ZZ",
                            ntm: "ntm-Latn-ZZ",
                            ntr: "ntr-Latn-ZZ",
                            nui: "nui-Latn-ZZ",
                            nup: "nup-Latn-ZZ",
                            nus: "nus-Latn-SS",
                            nuv: "nuv-Latn-ZZ",
                            nux: "nux-Latn-ZZ",
                            nv: "nv-Latn-US",
                            nwb: "nwb-Latn-ZZ",
                            nxq: "nxq-Latn-CN",
                            nxr: "nxr-Latn-ZZ",
                            ny: "ny-Latn-MW",
                            nym: "nym-Latn-TZ",
                            nyn: "nyn-Latn-UG",
                            nzi: "nzi-Latn-GH",
                            oc: "oc-Latn-FR",
                            ogc: "ogc-Latn-ZZ",
                            okr: "okr-Latn-ZZ",
                            okv: "okv-Latn-ZZ",
                            om: "om-Latn-ET",
                            ong: "ong-Latn-ZZ",
                            onn: "onn-Latn-ZZ",
                            ons: "ons-Latn-ZZ",
                            opm: "opm-Latn-ZZ",
                            or: "or-Orya-IN",
                            oro: "oro-Latn-ZZ",
                            oru: "oru-Arab-ZZ",
                            os: "os-Cyrl-GE",
                            osa: "osa-Osge-US",
                            ota: "ota-Arab-ZZ",
                            otk: "otk-Orkh-MN",
                            ozm: "ozm-Latn-ZZ",
                            pa: "pa-Guru-IN",
                            "pa-Arab": "pa-Arab-PK",
                            "pa-PK": "pa-Arab-PK",
                            pag: "pag-Latn-PH",
                            pal: "pal-Phli-IR",
                            "pal-Phlp": "pal-Phlp-CN",
                            pam: "pam-Latn-PH",
                            pap: "pap-Latn-AW",
                            pau: "pau-Latn-PW",
                            pbi: "pbi-Latn-ZZ",
                            pcd: "pcd-Latn-FR",
                            pcm: "pcm-Latn-NG",
                            pdc: "pdc-Latn-US",
                            pdt: "pdt-Latn-CA",
                            ped: "ped-Latn-ZZ",
                            peo: "peo-Xpeo-IR",
                            pex: "pex-Latn-ZZ",
                            pfl: "pfl-Latn-DE",
                            phl: "phl-Arab-ZZ",
                            phn: "phn-Phnx-LB",
                            pil: "pil-Latn-ZZ",
                            pip: "pip-Latn-ZZ",
                            pka: "pka-Brah-IN",
                            pko: "pko-Latn-KE",
                            pl: "pl-Latn-PL",
                            pla: "pla-Latn-ZZ",
                            pms: "pms-Latn-IT",
                            png: "png-Latn-ZZ",
                            pnn: "pnn-Latn-ZZ",
                            pnt: "pnt-Grek-GR",
                            pon: "pon-Latn-FM",
                            ppa: "ppa-Deva-IN",
                            ppo: "ppo-Latn-ZZ",
                            pra: "pra-Khar-PK",
                            prd: "prd-Arab-IR",
                            prg: "prg-Latn-001",
                            ps: "ps-Arab-AF",
                            pss: "pss-Latn-ZZ",
                            pt: "pt-Latn-BR",
                            ptp: "ptp-Latn-ZZ",
                            puu: "puu-Latn-GA",
                            pwa: "pwa-Latn-ZZ",
                            qu: "qu-Latn-PE",
                            quc: "quc-Latn-GT",
                            qug: "qug-Latn-EC",
                            rai: "rai-Latn-ZZ",
                            raj: "raj-Deva-IN",
                            rao: "rao-Latn-ZZ",
                            rcf: "rcf-Latn-RE",
                            rej: "rej-Latn-ID",
                            rel: "rel-Latn-ZZ",
                            res: "res-Latn-ZZ",
                            rgn: "rgn-Latn-IT",
                            rhg: "rhg-Arab-MM",
                            ria: "ria-Latn-IN",
                            rif: "rif-Tfng-MA",
                            "rif-NL": "rif-Latn-NL",
                            rjs: "rjs-Deva-NP",
                            rkt: "rkt-Beng-BD",
                            rm: "rm-Latn-CH",
                            rmf: "rmf-Latn-FI",
                            rmo: "rmo-Latn-CH",
                            rmt: "rmt-Arab-IR",
                            rmu: "rmu-Latn-SE",
                            rn: "rn-Latn-BI",
                            rna: "rna-Latn-ZZ",
                            rng: "rng-Latn-MZ",
                            ro: "ro-Latn-RO",
                            rob: "rob-Latn-ID",
                            rof: "rof-Latn-TZ",
                            roo: "roo-Latn-ZZ",
                            rro: "rro-Latn-ZZ",
                            rtm: "rtm-Latn-FJ",
                            ru: "ru-Cyrl-RU",
                            rue: "rue-Cyrl-UA",
                            rug: "rug-Latn-SB",
                            rw: "rw-Latn-RW",
                            rwk: "rwk-Latn-TZ",
                            rwo: "rwo-Latn-ZZ",
                            ryu: "ryu-Kana-JP",
                            sa: "sa-Deva-IN",
                            saf: "saf-Latn-GH",
                            sah: "sah-Cyrl-RU",
                            saq: "saq-Latn-KE",
                            sas: "sas-Latn-ID",
                            sat: "sat-Latn-IN",
                            sav: "sav-Latn-SN",
                            saz: "saz-Saur-IN",
                            sba: "sba-Latn-ZZ",
                            sbe: "sbe-Latn-ZZ",
                            sbp: "sbp-Latn-TZ",
                            sc: "sc-Latn-IT",
                            sck: "sck-Deva-IN",
                            scl: "scl-Arab-ZZ",
                            scn: "scn-Latn-IT",
                            sco: "sco-Latn-GB",
                            scs: "scs-Latn-CA",
                            sd: "sd-Arab-PK",
                            "sd-Deva": "sd-Deva-IN",
                            "sd-Khoj": "sd-Khoj-IN",
                            "sd-Sind": "sd-Sind-IN",
                            sdc: "sdc-Latn-IT",
                            sdh: "sdh-Arab-IR",
                            se: "se-Latn-NO",
                            sef: "sef-Latn-CI",
                            seh: "seh-Latn-MZ",
                            sei: "sei-Latn-MX",
                            ses: "ses-Latn-ML",
                            sg: "sg-Latn-CF",
                            sga: "sga-Ogam-IE",
                            sgs: "sgs-Latn-LT",
                            sgw: "sgw-Ethi-ZZ",
                            sgz: "sgz-Latn-ZZ",
                            shi: "shi-Tfng-MA",
                            shk: "shk-Latn-ZZ",
                            shn: "shn-Mymr-MM",
                            shu: "shu-Arab-ZZ",
                            si: "si-Sinh-LK",
                            sid: "sid-Latn-ET",
                            sig: "sig-Latn-ZZ",
                            sil: "sil-Latn-ZZ",
                            sim: "sim-Latn-ZZ",
                            sjr: "sjr-Latn-ZZ",
                            sk: "sk-Latn-SK",
                            skc: "skc-Latn-ZZ",
                            skr: "skr-Arab-PK",
                            sks: "sks-Latn-ZZ",
                            sl: "sl-Latn-SI",
                            sld: "sld-Latn-ZZ",
                            sli: "sli-Latn-PL",
                            sll: "sll-Latn-ZZ",
                            sly: "sly-Latn-ID",
                            sm: "sm-Latn-WS",
                            sma: "sma-Latn-SE",
                            smj: "smj-Latn-SE",
                            smn: "smn-Latn-FI",
                            smp: "smp-Samr-IL",
                            smq: "smq-Latn-ZZ",
                            sms: "sms-Latn-FI",
                            sn: "sn-Latn-ZW",
                            snc: "snc-Latn-ZZ",
                            snk: "snk-Latn-ML",
                            snp: "snp-Latn-ZZ",
                            snx: "snx-Latn-ZZ",
                            sny: "sny-Latn-ZZ",
                            so: "so-Latn-SO",
                            sog: "sog-Sogd-UZ",
                            sok: "sok-Latn-ZZ",
                            soq: "soq-Latn-ZZ",
                            sou: "sou-Thai-TH",
                            soy: "soy-Latn-ZZ",
                            spd: "spd-Latn-ZZ",
                            spl: "spl-Latn-ZZ",
                            sps: "sps-Latn-ZZ",
                            sq: "sq-Latn-AL",
                            sr: "sr-Cyrl-RS",
                            "sr-ME": "sr-Latn-ME",
                            "sr-RO": "sr-Latn-RO",
                            "sr-RU": "sr-Latn-RU",
                            "sr-TR": "sr-Latn-TR",
                            srb: "srb-Sora-IN",
                            srn: "srn-Latn-SR",
                            srr: "srr-Latn-SN",
                            srx: "srx-Deva-IN",
                            ss: "ss-Latn-ZA",
                            ssd: "ssd-Latn-ZZ",
                            ssg: "ssg-Latn-ZZ",
                            ssy: "ssy-Latn-ER",
                            st: "st-Latn-ZA",
                            stk: "stk-Latn-ZZ",
                            stq: "stq-Latn-DE",
                            su: "su-Latn-ID",
                            sua: "sua-Latn-ZZ",
                            sue: "sue-Latn-ZZ",
                            suk: "suk-Latn-TZ",
                            sur: "sur-Latn-ZZ",
                            sus: "sus-Latn-GN",
                            sv: "sv-Latn-SE",
                            sw: "sw-Latn-TZ",
                            swb: "swb-Arab-YT",
                            swc: "swc-Latn-CD",
                            swg: "swg-Latn-DE",
                            swp: "swp-Latn-ZZ",
                            swv: "swv-Deva-IN",
                            sxn: "sxn-Latn-ID",
                            sxw: "sxw-Latn-ZZ",
                            syl: "syl-Beng-BD",
                            syr: "syr-Syrc-IQ",
                            szl: "szl-Latn-PL",
                            ta: "ta-Taml-IN",
                            taj: "taj-Deva-NP",
                            tal: "tal-Latn-ZZ",
                            tan: "tan-Latn-ZZ",
                            taq: "taq-Latn-ZZ",
                            tbc: "tbc-Latn-ZZ",
                            tbd: "tbd-Latn-ZZ",
                            tbf: "tbf-Latn-ZZ",
                            tbg: "tbg-Latn-ZZ",
                            tbo: "tbo-Latn-ZZ",
                            tbw: "tbw-Latn-PH",
                            tbz: "tbz-Latn-ZZ",
                            tci: "tci-Latn-ZZ",
                            tcy: "tcy-Knda-IN",
                            tdd: "tdd-Tale-CN",
                            tdg: "tdg-Deva-NP",
                            tdh: "tdh-Deva-NP",
                            tdu: "tdu-Latn-MY",
                            te: "te-Telu-IN",
                            ted: "ted-Latn-ZZ",
                            tem: "tem-Latn-SL",
                            teo: "teo-Latn-UG",
                            tet: "tet-Latn-TL",
                            tfi: "tfi-Latn-ZZ",
                            tg: "tg-Cyrl-TJ",
                            "tg-Arab": "tg-Arab-PK",
                            "tg-PK": "tg-Arab-PK",
                            tgc: "tgc-Latn-ZZ",
                            tgo: "tgo-Latn-ZZ",
                            tgu: "tgu-Latn-ZZ",
                            th: "th-Thai-TH",
                            thl: "thl-Deva-NP",
                            thq: "thq-Deva-NP",
                            thr: "thr-Deva-NP",
                            ti: "ti-Ethi-ET",
                            tif: "tif-Latn-ZZ",
                            tig: "tig-Ethi-ER",
                            tik: "tik-Latn-ZZ",
                            tim: "tim-Latn-ZZ",
                            tio: "tio-Latn-ZZ",
                            tiv: "tiv-Latn-NG",
                            tk: "tk-Latn-TM",
                            tkl: "tkl-Latn-TK",
                            tkr: "tkr-Latn-AZ",
                            tkt: "tkt-Deva-NP",
                            tl: "tl-Latn-PH",
                            tlf: "tlf-Latn-ZZ",
                            tlx: "tlx-Latn-ZZ",
                            tly: "tly-Latn-AZ",
                            tmh: "tmh-Latn-NE",
                            tmy: "tmy-Latn-ZZ",
                            tn: "tn-Latn-ZA",
                            tnh: "tnh-Latn-ZZ",
                            to: "to-Latn-TO",
                            tof: "tof-Latn-ZZ",
                            tog: "tog-Latn-MW",
                            toq: "toq-Latn-ZZ",
                            tpi: "tpi-Latn-PG",
                            tpm: "tpm-Latn-ZZ",
                            tpz: "tpz-Latn-ZZ",
                            tqo: "tqo-Latn-ZZ",
                            tr: "tr-Latn-TR",
                            tru: "tru-Latn-TR",
                            trv: "trv-Latn-TW",
                            trw: "trw-Arab-ZZ",
                            ts: "ts-Latn-ZA",
                            tsd: "tsd-Grek-GR",
                            tsf: "tsf-Deva-NP",
                            tsg: "tsg-Latn-PH",
                            tsj: "tsj-Tibt-BT",
                            tsw: "tsw-Latn-ZZ",
                            tt: "tt-Cyrl-RU",
                            ttd: "ttd-Latn-ZZ",
                            tte: "tte-Latn-ZZ",
                            ttj: "ttj-Latn-UG",
                            ttr: "ttr-Latn-ZZ",
                            tts: "tts-Thai-TH",
                            ttt: "ttt-Latn-AZ",
                            tuh: "tuh-Latn-ZZ",
                            tul: "tul-Latn-ZZ",
                            tum: "tum-Latn-MW",
                            tuq: "tuq-Latn-ZZ",
                            tvd: "tvd-Latn-ZZ",
                            tvl: "tvl-Latn-TV",
                            tvu: "tvu-Latn-ZZ",
                            twh: "twh-Latn-ZZ",
                            twq: "twq-Latn-NE",
                            txg: "txg-Tang-CN",
                            ty: "ty-Latn-PF",
                            tya: "tya-Latn-ZZ",
                            tyv: "tyv-Cyrl-RU",
                            tzm: "tzm-Latn-MA",
                            ubu: "ubu-Latn-ZZ",
                            udm: "udm-Cyrl-RU",
                            ug: "ug-Arab-CN",
                            "ug-Cyrl": "ug-Cyrl-KZ",
                            "ug-KZ": "ug-Cyrl-KZ",
                            "ug-MN": "ug-Cyrl-MN",
                            uga: "uga-Ugar-SY",
                            uk: "uk-Cyrl-UA",
                            uli: "uli-Latn-FM",
                            umb: "umb-Latn-AO",
                            und: "en-Latn-US",
                            "und-002": "en-Latn-NG",
                            "und-003": "en-Latn-US",
                            "und-005": "pt-Latn-BR",
                            "und-009": "en-Latn-AU",
                            "und-011": "en-Latn-NG",
                            "und-013": "es-Latn-MX",
                            "und-014": "sw-Latn-TZ",
                            "und-015": "ar-Arab-EG",
                            "und-017": "sw-Latn-CD",
                            "und-018": "en-Latn-ZA",
                            "und-019": "en-Latn-US",
                            "und-021": "en-Latn-US",
                            "und-029": "es-Latn-CU",
                            "und-030": "zh-Hans-CN",
                            "und-034": "hi-Deva-IN",
                            "und-035": "id-Latn-ID",
                            "und-039": "it-Latn-IT",
                            "und-053": "en-Latn-AU",
                            "und-054": "en-Latn-PG",
                            "und-057": "en-Latn-GU",
                            "und-061": "sm-Latn-WS",
                            "und-142": "zh-Hans-CN",
                            "und-143": "uz-Latn-UZ",
                            "und-145": "ar-Arab-SA",
                            "und-150": "ru-Cyrl-RU",
                            "und-151": "ru-Cyrl-RU",
                            "und-154": "en-Latn-GB",
                            "und-155": "de-Latn-DE",
                            "und-202": "en-Latn-NG",
                            "und-419": "es-Latn-419",
                            "und-AD": "ca-Latn-AD",
                            "und-Adlm": "ff-Adlm-GN",
                            "und-AE": "ar-Arab-AE",
                            "und-AF": "fa-Arab-AF",
                            "und-Aghb": "lez-Aghb-RU",
                            "und-Ahom": "aho-Ahom-IN",
                            "und-AL": "sq-Latn-AL",
                            "und-AM": "hy-Armn-AM",
                            "und-AO": "pt-Latn-AO",
                            "und-AQ": "und-Latn-AQ",
                            "und-AR": "es-Latn-AR",
                            "und-Arab": "ar-Arab-EG",
                            "und-Arab-CC": "ms-Arab-CC",
                            "und-Arab-CN": "ug-Arab-CN",
                            "und-Arab-GB": "ks-Arab-GB",
                            "und-Arab-ID": "ms-Arab-ID",
                            "und-Arab-IN": "ur-Arab-IN",
                            "und-Arab-KH": "cja-Arab-KH",
                            "und-Arab-MM": "rhg-Arab-MM",
                            "und-Arab-MN": "kk-Arab-MN",
                            "und-Arab-MU": "ur-Arab-MU",
                            "und-Arab-NG": "ha-Arab-NG",
                            "und-Arab-PK": "ur-Arab-PK",
                            "und-Arab-TG": "apd-Arab-TG",
                            "und-Arab-TH": "mfa-Arab-TH",
                            "und-Arab-TJ": "fa-Arab-TJ",
                            "und-Arab-TR": "az-Arab-TR",
                            "und-Arab-YT": "swb-Arab-YT",
                            "und-Armi": "arc-Armi-IR",
                            "und-Armn": "hy-Armn-AM",
                            "und-AS": "sm-Latn-AS",
                            "und-AT": "de-Latn-AT",
                            "und-Avst": "ae-Avst-IR",
                            "und-AW": "nl-Latn-AW",
                            "und-AX": "sv-Latn-AX",
                            "und-AZ": "az-Latn-AZ",
                            "und-BA": "bs-Latn-BA",
                            "und-Bali": "ban-Bali-ID",
                            "und-Bamu": "bax-Bamu-CM",
                            "und-Bass": "bsq-Bass-LR",
                            "und-Batk": "bbc-Batk-ID",
                            "und-BD": "bn-Beng-BD",
                            "und-BE": "nl-Latn-BE",
                            "und-Beng": "bn-Beng-BD",
                            "und-BF": "fr-Latn-BF",
                            "und-BG": "bg-Cyrl-BG",
                            "und-BH": "ar-Arab-BH",
                            "und-Bhks": "sa-Bhks-IN",
                            "und-BI": "rn-Latn-BI",
                            "und-BJ": "fr-Latn-BJ",
                            "und-BL": "fr-Latn-BL",
                            "und-BN": "ms-Latn-BN",
                            "und-BO": "es-Latn-BO",
                            "und-Bopo": "zh-Bopo-TW",
                            "und-BQ": "pap-Latn-BQ",
                            "und-BR": "pt-Latn-BR",
                            "und-Brah": "pka-Brah-IN",
                            "und-Brai": "fr-Brai-FR",
                            "und-BT": "dz-Tibt-BT",
                            "und-Bugi": "bug-Bugi-ID",
                            "und-Buhd": "bku-Buhd-PH",
                            "und-BV": "und-Latn-BV",
                            "und-BY": "be-Cyrl-BY",
                            "und-Cakm": "ccp-Cakm-BD",
                            "und-Cans": "cr-Cans-CA",
                            "und-Cari": "xcr-Cari-TR",
                            "und-CD": "sw-Latn-CD",
                            "und-CF": "fr-Latn-CF",
                            "und-CG": "fr-Latn-CG",
                            "und-CH": "de-Latn-CH",
                            "und-Cham": "cjm-Cham-VN",
                            "und-Cher": "chr-Cher-US",
                            "und-CI": "fr-Latn-CI",
                            "und-CL": "es-Latn-CL",
                            "und-CM": "fr-Latn-CM",
                            "und-CN": "zh-Hans-CN",
                            "und-CO": "es-Latn-CO",
                            "und-Copt": "cop-Copt-EG",
                            "und-CP": "und-Latn-CP",
                            "und-Cprt": "grc-Cprt-CY",
                            "und-CR": "es-Latn-CR",
                            "und-CU": "es-Latn-CU",
                            "und-CV": "pt-Latn-CV",
                            "und-CW": "pap-Latn-CW",
                            "und-CY": "el-Grek-CY",
                            "und-Cyrl": "ru-Cyrl-RU",
                            "und-Cyrl-AL": "mk-Cyrl-AL",
                            "und-Cyrl-BA": "sr-Cyrl-BA",
                            "und-Cyrl-GE": "ab-Cyrl-GE",
                            "und-Cyrl-GR": "mk-Cyrl-GR",
                            "und-Cyrl-MD": "uk-Cyrl-MD",
                            "und-Cyrl-RO": "bg-Cyrl-RO",
                            "und-Cyrl-SK": "uk-Cyrl-SK",
                            "und-Cyrl-TR": "kbd-Cyrl-TR",
                            "und-Cyrl-XK": "sr-Cyrl-XK",
                            "und-CZ": "cs-Latn-CZ",
                            "und-DE": "de-Latn-DE",
                            "und-Deva": "hi-Deva-IN",
                            "und-Deva-BT": "ne-Deva-BT",
                            "und-Deva-FJ": "hif-Deva-FJ",
                            "und-Deva-MU": "bho-Deva-MU",
                            "und-Deva-PK": "btv-Deva-PK",
                            "und-DJ": "aa-Latn-DJ",
                            "und-DK": "da-Latn-DK",
                            "und-DO": "es-Latn-DO",
                            "und-Dogr": "doi-Dogr-IN",
                            "und-Dupl": "fr-Dupl-FR",
                            "und-DZ": "ar-Arab-DZ",
                            "und-EA": "es-Latn-EA",
                            "und-EC": "es-Latn-EC",
                            "und-EE": "et-Latn-EE",
                            "und-EG": "ar-Arab-EG",
                            "und-Egyp": "egy-Egyp-EG",
                            "und-EH": "ar-Arab-EH",
                            "und-Elba": "sq-Elba-AL",
                            "und-Elym": "arc-Elym-IR",
                            "und-ER": "ti-Ethi-ER",
                            "und-ES": "es-Latn-ES",
                            "und-ET": "am-Ethi-ET",
                            "und-Ethi": "am-Ethi-ET",
                            "und-EU": "en-Latn-GB",
                            "und-EZ": "de-Latn-EZ",
                            "und-FI": "fi-Latn-FI",
                            "und-FO": "fo-Latn-FO",
                            "und-FR": "fr-Latn-FR",
                            "und-GA": "fr-Latn-GA",
                            "und-GE": "ka-Geor-GE",
                            "und-Geor": "ka-Geor-GE",
                            "und-GF": "fr-Latn-GF",
                            "und-GH": "ak-Latn-GH",
                            "und-GL": "kl-Latn-GL",
                            "und-Glag": "cu-Glag-BG",
                            "und-GN": "fr-Latn-GN",
                            "und-Gong": "wsg-Gong-IN",
                            "und-Gonm": "esg-Gonm-IN",
                            "und-Goth": "got-Goth-UA",
                            "und-GP": "fr-Latn-GP",
                            "und-GQ": "es-Latn-GQ",
                            "und-GR": "el-Grek-GR",
                            "und-Gran": "sa-Gran-IN",
                            "und-Grek": "el-Grek-GR",
                            "und-Grek-TR": "bgx-Grek-TR",
                            "und-GS": "und-Latn-GS",
                            "und-GT": "es-Latn-GT",
                            "und-Gujr": "gu-Gujr-IN",
                            "und-Guru": "pa-Guru-IN",
                            "und-GW": "pt-Latn-GW",
                            "und-Hanb": "zh-Hanb-TW",
                            "und-Hang": "ko-Hang-KR",
                            "und-Hani": "zh-Hani-CN",
                            "und-Hano": "hnn-Hano-PH",
                            "und-Hans": "zh-Hans-CN",
                            "und-Hant": "zh-Hant-TW",
                            "und-Hatr": "mis-Hatr-IQ",
                            "und-Hebr": "he-Hebr-IL",
                            "und-Hebr-CA": "yi-Hebr-CA",
                            "und-Hebr-GB": "yi-Hebr-GB",
                            "und-Hebr-SE": "yi-Hebr-SE",
                            "und-Hebr-UA": "yi-Hebr-UA",
                            "und-Hebr-US": "yi-Hebr-US",
                            "und-Hira": "ja-Hira-JP",
                            "und-HK": "zh-Hant-HK",
                            "und-Hluw": "hlu-Hluw-TR",
                            "und-HM": "und-Latn-HM",
                            "und-Hmng": "hnj-Hmng-LA",
                            "und-Hmnp": "mww-Hmnp-US",
                            "und-HN": "es-Latn-HN",
                            "und-HR": "hr-Latn-HR",
                            "und-HT": "ht-Latn-HT",
                            "und-HU": "hu-Latn-HU",
                            "und-Hung": "hu-Hung-HU",
                            "und-IC": "es-Latn-IC",
                            "und-ID": "id-Latn-ID",
                            "und-IL": "he-Hebr-IL",
                            "und-IN": "hi-Deva-IN",
                            "und-IQ": "ar-Arab-IQ",
                            "und-IR": "fa-Arab-IR",
                            "und-IS": "is-Latn-IS",
                            "und-IT": "it-Latn-IT",
                            "und-Ital": "ett-Ital-IT",
                            "und-Jamo": "ko-Jamo-KR",
                            "und-Java": "jv-Java-ID",
                            "und-JO": "ar-Arab-JO",
                            "und-JP": "ja-Jpan-JP",
                            "und-Jpan": "ja-Jpan-JP",
                            "und-Kali": "eky-Kali-MM",
                            "und-Kana": "ja-Kana-JP",
                            "und-KE": "sw-Latn-KE",
                            "und-KG": "ky-Cyrl-KG",
                            "und-KH": "km-Khmr-KH",
                            "und-Khar": "pra-Khar-PK",
                            "und-Khmr": "km-Khmr-KH",
                            "und-Khoj": "sd-Khoj-IN",
                            "und-KM": "ar-Arab-KM",
                            "und-Knda": "kn-Knda-IN",
                            "und-Kore": "ko-Kore-KR",
                            "und-KP": "ko-Kore-KP",
                            "und-KR": "ko-Kore-KR",
                            "und-Kthi": "bho-Kthi-IN",
                            "und-KW": "ar-Arab-KW",
                            "und-KZ": "ru-Cyrl-KZ",
                            "und-LA": "lo-Laoo-LA",
                            "und-Lana": "nod-Lana-TH",
                            "und-Laoo": "lo-Laoo-LA",
                            "und-Latn-AF": "tk-Latn-AF",
                            "und-Latn-AM": "ku-Latn-AM",
                            "und-Latn-CN": "za-Latn-CN",
                            "und-Latn-CY": "tr-Latn-CY",
                            "und-Latn-DZ": "fr-Latn-DZ",
                            "und-Latn-ET": "en-Latn-ET",
                            "und-Latn-GE": "ku-Latn-GE",
                            "und-Latn-IR": "tk-Latn-IR",
                            "und-Latn-KM": "fr-Latn-KM",
                            "und-Latn-MA": "fr-Latn-MA",
                            "und-Latn-MK": "sq-Latn-MK",
                            "und-Latn-MM": "kac-Latn-MM",
                            "und-Latn-MO": "pt-Latn-MO",
                            "und-Latn-MR": "fr-Latn-MR",
                            "und-Latn-RU": "krl-Latn-RU",
                            "und-Latn-SY": "fr-Latn-SY",
                            "und-Latn-TN": "fr-Latn-TN",
                            "und-Latn-TW": "trv-Latn-TW",
                            "und-Latn-UA": "pl-Latn-UA",
                            "und-LB": "ar-Arab-LB",
                            "und-Lepc": "lep-Lepc-IN",
                            "und-LI": "de-Latn-LI",
                            "und-Limb": "lif-Limb-IN",
                            "und-Lina": "lab-Lina-GR",
                            "und-Linb": "grc-Linb-GR",
                            "und-Lisu": "lis-Lisu-CN",
                            "und-LK": "si-Sinh-LK",
                            "und-LS": "st-Latn-LS",
                            "und-LT": "lt-Latn-LT",
                            "und-LU": "fr-Latn-LU",
                            "und-LV": "lv-Latn-LV",
                            "und-LY": "ar-Arab-LY",
                            "und-Lyci": "xlc-Lyci-TR",
                            "und-Lydi": "xld-Lydi-TR",
                            "und-MA": "ar-Arab-MA",
                            "und-Mahj": "hi-Mahj-IN",
                            "und-Maka": "mak-Maka-ID",
                            "und-Mand": "myz-Mand-IR",
                            "und-Mani": "xmn-Mani-CN",
                            "und-Marc": "bo-Marc-CN",
                            "und-MC": "fr-Latn-MC",
                            "und-MD": "ro-Latn-MD",
                            "und-ME": "sr-Latn-ME",
                            "und-Medf": "mis-Medf-NG",
                            "und-Mend": "men-Mend-SL",
                            "und-Merc": "xmr-Merc-SD",
                            "und-Mero": "xmr-Mero-SD",
                            "und-MF": "fr-Latn-MF",
                            "und-MG": "mg-Latn-MG",
                            "und-MK": "mk-Cyrl-MK",
                            "und-ML": "bm-Latn-ML",
                            "und-Mlym": "ml-Mlym-IN",
                            "und-MM": "my-Mymr-MM",
                            "und-MN": "mn-Cyrl-MN",
                            "und-MO": "zh-Hant-MO",
                            "und-Modi": "mr-Modi-IN",
                            "und-Mong": "mn-Mong-CN",
                            "und-MQ": "fr-Latn-MQ",
                            "und-MR": "ar-Arab-MR",
                            "und-Mroo": "mro-Mroo-BD",
                            "und-MT": "mt-Latn-MT",
                            "und-Mtei": "mni-Mtei-IN",
                            "und-MU": "mfe-Latn-MU",
                            "und-Mult": "skr-Mult-PK",
                            "und-MV": "dv-Thaa-MV",
                            "und-MX": "es-Latn-MX",
                            "und-MY": "ms-Latn-MY",
                            "und-Mymr": "my-Mymr-MM",
                            "und-Mymr-IN": "kht-Mymr-IN",
                            "und-Mymr-TH": "mnw-Mymr-TH",
                            "und-MZ": "pt-Latn-MZ",
                            "und-NA": "af-Latn-NA",
                            "und-Nand": "sa-Nand-IN",
                            "und-Narb": "xna-Narb-SA",
                            "und-Nbat": "arc-Nbat-JO",
                            "und-NC": "fr-Latn-NC",
                            "und-NE": "ha-Latn-NE",
                            "und-Newa": "new-Newa-NP",
                            "und-NI": "es-Latn-NI",
                            "und-Nkoo": "man-Nkoo-GN",
                            "und-NL": "nl-Latn-NL",
                            "und-NO": "nb-Latn-NO",
                            "und-NP": "ne-Deva-NP",
                            "und-Nshu": "zhx-Nshu-CN",
                            "und-Ogam": "sga-Ogam-IE",
                            "und-Olck": "sat-Olck-IN",
                            "und-OM": "ar-Arab-OM",
                            "und-Orkh": "otk-Orkh-MN",
                            "und-Orya": "or-Orya-IN",
                            "und-Osge": "osa-Osge-US",
                            "und-Osma": "so-Osma-SO",
                            "und-PA": "es-Latn-PA",
                            "und-Palm": "arc-Palm-SY",
                            "und-Pauc": "ctd-Pauc-MM",
                            "und-PE": "es-Latn-PE",
                            "und-Perm": "kv-Perm-RU",
                            "und-PF": "fr-Latn-PF",
                            "und-PG": "tpi-Latn-PG",
                            "und-PH": "fil-Latn-PH",
                            "und-Phag": "lzh-Phag-CN",
                            "und-Phli": "pal-Phli-IR",
                            "und-Phlp": "pal-Phlp-CN",
                            "und-Phnx": "phn-Phnx-LB",
                            "und-PK": "ur-Arab-PK",
                            "und-PL": "pl-Latn-PL",
                            "und-Plrd": "hmd-Plrd-CN",
                            "und-PM": "fr-Latn-PM",
                            "und-PR": "es-Latn-PR",
                            "und-Prti": "xpr-Prti-IR",
                            "und-PS": "ar-Arab-PS",
                            "und-PT": "pt-Latn-PT",
                            "und-PW": "pau-Latn-PW",
                            "und-PY": "gn-Latn-PY",
                            "und-QA": "ar-Arab-QA",
                            "und-QO": "en-Latn-DG",
                            "und-RE": "fr-Latn-RE",
                            "und-Rjng": "rej-Rjng-ID",
                            "und-RO": "ro-Latn-RO",
                            "und-Rohg": "rhg-Rohg-MM",
                            "und-RS": "sr-Cyrl-RS",
                            "und-RU": "ru-Cyrl-RU",
                            "und-Runr": "non-Runr-SE",
                            "und-RW": "rw-Latn-RW",
                            "und-SA": "ar-Arab-SA",
                            "und-Samr": "smp-Samr-IL",
                            "und-Sarb": "xsa-Sarb-YE",
                            "und-Saur": "saz-Saur-IN",
                            "und-SC": "fr-Latn-SC",
                            "und-SD": "ar-Arab-SD",
                            "und-SE": "sv-Latn-SE",
                            "und-Sgnw": "ase-Sgnw-US",
                            "und-Shaw": "en-Shaw-GB",
                            "und-Shrd": "sa-Shrd-IN",
                            "und-SI": "sl-Latn-SI",
                            "und-Sidd": "sa-Sidd-IN",
                            "und-Sind": "sd-Sind-IN",
                            "und-Sinh": "si-Sinh-LK",
                            "und-SJ": "nb-Latn-SJ",
                            "und-SK": "sk-Latn-SK",
                            "und-SM": "it-Latn-SM",
                            "und-SN": "fr-Latn-SN",
                            "und-SO": "so-Latn-SO",
                            "und-Sogd": "sog-Sogd-UZ",
                            "und-Sogo": "sog-Sogo-UZ",
                            "und-Sora": "srb-Sora-IN",
                            "und-Soyo": "cmg-Soyo-MN",
                            "und-SR": "nl-Latn-SR",
                            "und-ST": "pt-Latn-ST",
                            "und-Sund": "su-Sund-ID",
                            "und-SV": "es-Latn-SV",
                            "und-SY": "ar-Arab-SY",
                            "und-Sylo": "syl-Sylo-BD",
                            "und-Syrc": "syr-Syrc-IQ",
                            "und-Tagb": "tbw-Tagb-PH",
                            "und-Takr": "doi-Takr-IN",
                            "und-Tale": "tdd-Tale-CN",
                            "und-Talu": "khb-Talu-CN",
                            "und-Taml": "ta-Taml-IN",
                            "und-Tang": "txg-Tang-CN",
                            "und-Tavt": "blt-Tavt-VN",
                            "und-TD": "fr-Latn-TD",
                            "und-Telu": "te-Telu-IN",
                            "und-TF": "fr-Latn-TF",
                            "und-Tfng": "zgh-Tfng-MA",
                            "und-TG": "fr-Latn-TG",
                            "und-Tglg": "fil-Tglg-PH",
                            "und-TH": "th-Thai-TH",
                            "und-Thaa": "dv-Thaa-MV",
                            "und-Thai": "th-Thai-TH",
                            "und-Thai-CN": "lcp-Thai-CN",
                            "und-Thai-KH": "kdt-Thai-KH",
                            "und-Thai-LA": "kdt-Thai-LA",
                            "und-Tibt": "bo-Tibt-CN",
                            "und-Tirh": "mai-Tirh-IN",
                            "und-TJ": "tg-Cyrl-TJ",
                            "und-TK": "tkl-Latn-TK",
                            "und-TL": "pt-Latn-TL",
                            "und-TM": "tk-Latn-TM",
                            "und-TN": "ar-Arab-TN",
                            "und-TO": "to-Latn-TO",
                            "und-TR": "tr-Latn-TR",
                            "und-TV": "tvl-Latn-TV",
                            "und-TW": "zh-Hant-TW",
                            "und-TZ": "sw-Latn-TZ",
                            "und-UA": "uk-Cyrl-UA",
                            "und-UG": "sw-Latn-UG",
                            "und-Ugar": "uga-Ugar-SY",
                            "und-UY": "es-Latn-UY",
                            "und-UZ": "uz-Latn-UZ",
                            "und-VA": "it-Latn-VA",
                            "und-Vaii": "vai-Vaii-LR",
                            "und-VE": "es-Latn-VE",
                            "und-VN": "vi-Latn-VN",
                            "und-VU": "bi-Latn-VU",
                            "und-Wara": "hoc-Wara-IN",
                            "und-Wcho": "nnp-Wcho-IN",
                            "und-WF": "fr-Latn-WF",
                            "und-WS": "sm-Latn-WS",
                            "und-XK": "sq-Latn-XK",
                            "und-Xpeo": "peo-Xpeo-IR",
                            "und-Xsux": "akk-Xsux-IQ",
                            "und-YE": "ar-Arab-YE",
                            "und-Yiii": "ii-Yiii-CN",
                            "und-YT": "fr-Latn-YT",
                            "und-Zanb": "cmg-Zanb-MN",
                            "und-ZW": "sn-Latn-ZW",
                            unr: "unr-Beng-IN",
                            "unr-Deva": "unr-Deva-NP",
                            "unr-NP": "unr-Deva-NP",
                            unx: "unx-Beng-IN",
                            uok: "uok-Latn-ZZ",
                            ur: "ur-Arab-PK",
                            uri: "uri-Latn-ZZ",
                            urt: "urt-Latn-ZZ",
                            urw: "urw-Latn-ZZ",
                            usa: "usa-Latn-ZZ",
                            utr: "utr-Latn-ZZ",
                            uvh: "uvh-Latn-ZZ",
                            uvl: "uvl-Latn-ZZ",
                            uz: "uz-Latn-UZ",
                            "uz-AF": "uz-Arab-AF",
                            "uz-Arab": "uz-Arab-AF",
                            "uz-CN": "uz-Cyrl-CN",
                            vag: "vag-Latn-ZZ",
                            vai: "vai-Vaii-LR",
                            van: "van-Latn-ZZ",
                            ve: "ve-Latn-ZA",
                            vec: "vec-Latn-IT",
                            vep: "vep-Latn-RU",
                            vi: "vi-Latn-VN",
                            vic: "vic-Latn-SX",
                            viv: "viv-Latn-ZZ",
                            vls: "vls-Latn-BE",
                            vmf: "vmf-Latn-DE",
                            vmw: "vmw-Latn-MZ",
                            vo: "vo-Latn-001",
                            vot: "vot-Latn-RU",
                            vro: "vro-Latn-EE",
                            vun: "vun-Latn-TZ",
                            vut: "vut-Latn-ZZ",
                            wa: "wa-Latn-BE",
                            wae: "wae-Latn-CH",
                            waj: "waj-Latn-ZZ",
                            wal: "wal-Ethi-ET",
                            wan: "wan-Latn-ZZ",
                            war: "war-Latn-PH",
                            wbp: "wbp-Latn-AU",
                            wbq: "wbq-Telu-IN",
                            wbr: "wbr-Deva-IN",
                            wci: "wci-Latn-ZZ",
                            wer: "wer-Latn-ZZ",
                            wgi: "wgi-Latn-ZZ",
                            whg: "whg-Latn-ZZ",
                            wib: "wib-Latn-ZZ",
                            wiu: "wiu-Latn-ZZ",
                            wiv: "wiv-Latn-ZZ",
                            wja: "wja-Latn-ZZ",
                            wji: "wji-Latn-ZZ",
                            wls: "wls-Latn-WF",
                            wmo: "wmo-Latn-ZZ",
                            wnc: "wnc-Latn-ZZ",
                            wni: "wni-Arab-KM",
                            wnu: "wnu-Latn-ZZ",
                            wo: "wo-Latn-SN",
                            wob: "wob-Latn-ZZ",
                            wos: "wos-Latn-ZZ",
                            wrs: "wrs-Latn-ZZ",
                            wsg: "wsg-Gong-IN",
                            wsk: "wsk-Latn-ZZ",
                            wtm: "wtm-Deva-IN",
                            wuu: "wuu-Hans-CN",
                            wuv: "wuv-Latn-ZZ",
                            wwa: "wwa-Latn-ZZ",
                            xav: "xav-Latn-BR",
                            xbi: "xbi-Latn-ZZ",
                            xcr: "xcr-Cari-TR",
                            xes: "xes-Latn-ZZ",
                            xh: "xh-Latn-ZA",
                            xla: "xla-Latn-ZZ",
                            xlc: "xlc-Lyci-TR",
                            xld: "xld-Lydi-TR",
                            xmf: "xmf-Geor-GE",
                            xmn: "xmn-Mani-CN",
                            xmr: "xmr-Merc-SD",
                            xna: "xna-Narb-SA",
                            xnr: "xnr-Deva-IN",
                            xog: "xog-Latn-UG",
                            xon: "xon-Latn-ZZ",
                            xpr: "xpr-Prti-IR",
                            xrb: "xrb-Latn-ZZ",
                            xsa: "xsa-Sarb-YE",
                            xsi: "xsi-Latn-ZZ",
                            xsm: "xsm-Latn-ZZ",
                            xsr: "xsr-Deva-NP",
                            xwe: "xwe-Latn-ZZ",
                            yam: "yam-Latn-ZZ",
                            yao: "yao-Latn-MZ",
                            yap: "yap-Latn-FM",
                            yas: "yas-Latn-ZZ",
                            yat: "yat-Latn-ZZ",
                            yav: "yav-Latn-CM",
                            yay: "yay-Latn-ZZ",
                            yaz: "yaz-Latn-ZZ",
                            yba: "yba-Latn-ZZ",
                            ybb: "ybb-Latn-CM",
                            yby: "yby-Latn-ZZ",
                            yer: "yer-Latn-ZZ",
                            ygr: "ygr-Latn-ZZ",
                            ygw: "ygw-Latn-ZZ",
                            yi: "yi-Hebr-001",
                            yko: "yko-Latn-ZZ",
                            yle: "yle-Latn-ZZ",
                            ylg: "ylg-Latn-ZZ",
                            yll: "yll-Latn-ZZ",
                            yml: "yml-Latn-ZZ",
                            yo: "yo-Latn-NG",
                            yon: "yon-Latn-ZZ",
                            yrb: "yrb-Latn-ZZ",
                            yre: "yre-Latn-ZZ",
                            yrl: "yrl-Latn-BR",
                            yss: "yss-Latn-ZZ",
                            yua: "yua-Latn-MX",
                            yue: "yue-Hant-HK",
                            "yue-CN": "yue-Hans-CN",
                            "yue-Hans": "yue-Hans-CN",
                            yuj: "yuj-Latn-ZZ",
                            yut: "yut-Latn-ZZ",
                            yuw: "yuw-Latn-ZZ",
                            za: "za-Latn-CN",
                            zag: "zag-Latn-SD",
                            zdj: "zdj-Arab-KM",
                            zea: "zea-Latn-NL",
                            zgh: "zgh-Tfng-MA",
                            zh: "zh-Hans-CN",
                            "zh-AU": "zh-Hant-AU",
                            "zh-BN": "zh-Hant-BN",
                            "zh-Bopo": "zh-Bopo-TW",
                            "zh-GB": "zh-Hant-GB",
                            "zh-GF": "zh-Hant-GF",
                            "zh-Hanb": "zh-Hanb-TW",
                            "zh-Hant": "zh-Hant-TW",
                            "zh-HK": "zh-Hant-HK",
                            "zh-ID": "zh-Hant-ID",
                            "zh-MO": "zh-Hant-MO",
                            "zh-MY": "zh-Hant-MY",
                            "zh-PA": "zh-Hant-PA",
                            "zh-PF": "zh-Hant-PF",
                            "zh-PH": "zh-Hant-PH",
                            "zh-SR": "zh-Hant-SR",
                            "zh-TH": "zh-Hant-TH",
                            "zh-TW": "zh-Hant-TW",
                            "zh-US": "zh-Hant-US",
                            "zh-VN": "zh-Hant-VN",
                            zhx: "zhx-Nshu-CN",
                            zia: "zia-Latn-ZZ",
                            zlm: "zlm-Latn-TG",
                            zmi: "zmi-Latn-MY",
                            zne: "zne-Latn-ZZ",
                            zu: "zu-Latn-ZA",
                            zza: "zza-Latn-TR"
                        },
                        timeData: {
                            AX: {
                                _allowed: "H",
                                _preferred: "H"
                            },
                            BQ: {
                                _allowed: "H",
                                _preferred: "H"
                            },
                            CP: {
                                _allowed: "H",
                                _preferred: "H"
                            },
                            CZ: {
                                _allowed: "H",
                                _preferred: "H"
                            },
                            DK: {
                                _allowed: "H",
                                _preferred: "H"
                            },
                            FI: {
                                _allowed: "H",
                                _preferred: "H"
                            },
                            ID: {
                                _allowed: "H",
                                _preferred: "H"
                            },
                            IS: {
                                _allowed: "H",
                                _preferred: "H"
                            },
                            ML: {
                                _allowed: "H",
                                _preferred: "H"
                            },
                            NE: {
                                _allowed: "H",
                                _preferred: "H"
                            },
                            RU: {
                                _allowed: "H",
                                _preferred: "H"
                            },
                            SE: {
                                _allowed: "H",
                                _preferred: "H"
                            },
                            SJ: {
                                _allowed: "H",
                                _preferred: "H"
                            },
                            SK: {
                                _allowed: "H",
                                _preferred: "H"
                            },
                            AS: {
                                _allowed: "h H",
                                _preferred: "h"
                            },
                            BT: {
                                _allowed: "h H",
                                _preferred: "h"
                            },
                            DJ: {
                                _allowed: "h H",
                                _preferred: "h"
                            },
                            ER: {
                                _allowed: "h H",
                                _preferred: "h"
                            },
                            GH: {
                                _allowed: "h H",
                                _preferred: "h"
                            },
                            IN: {
                                _allowed: "h H",
                                _preferred: "h"
                            },
                            LS: {
                                _allowed: "h H",
                                _preferred: "h"
                            },
                            PG: {
                                _allowed: "h H",
                                _preferred: "h"
                            },
                            PW: {
                                _allowed: "h H",
                                _preferred: "h"
                            },
                            SO: {
                                _allowed: "h H",
                                _preferred: "h"
                            },
                            TO: {
                                _allowed: "h H",
                                _preferred: "h"
                            },
                            VU: {
                                _allowed: "h H",
                                _preferred: "h"
                            },
                            WS: {
                                _allowed: "h H",
                                _preferred: "h"
                            },
                            "001": {
                                _allowed: "H h",
                                _preferred: "H"
                            },
                            AL: {
                                _allowed: "h H hB",
                                _preferred: "h"
                            },
                            TD: {
                                _allowed: "h H hB",
                                _preferred: "h"
                            },
                            ca_ES: {
                                _allowed: "H h hB",
                                _preferred: "H"
                            },
                            CF: {
                                _allowed: "H h hB",
                                _preferred: "H"
                            },
                            CM: {
                                _allowed: "H h hB",
                                _preferred: "H"
                            },
                            fr_CA: {
                                _allowed: "H h hB",
                                _preferred: "H"
                            },
                            gl_ES: {
                                _allowed: "H h hB",
                                _preferred: "H"
                            },
                            it_CH: {
                                _allowed: "H h hB",
                                _preferred: "H"
                            },
                            it_IT: {
                                _allowed: "H h hB",
                                _preferred: "H"
                            },
                            LU: {
                                _allowed: "H h hB",
                                _preferred: "H"
                            },
                            NP: {
                                _allowed: "H h hB",
                                _preferred: "H"
                            },
                            PF: {
                                _allowed: "H h hB",
                                _preferred: "H"
                            },
                            SC: {
                                _allowed: "H h hB",
                                _preferred: "H"
                            },
                            SM: {
                                _allowed: "H h hB",
                                _preferred: "H"
                            },
                            SN: {
                                _allowed: "H h hB",
                                _preferred: "H"
                            },
                            TF: {
                                _allowed: "H h hB",
                                _preferred: "H"
                            },
                            VA: {
                                _allowed: "H h hB",
                                _preferred: "H"
                            },
                            CY: {
                                _allowed: "h H hb hB",
                                _preferred: "h"
                            },
                            GR: {
                                _allowed: "h H hb hB",
                                _preferred: "h"
                            },
                            CO: {
                                _allowed: "h H hB hb",
                                _preferred: "h"
                            },
                            DO: {
                                _allowed: "h H hB hb",
                                _preferred: "h"
                            },
                            KP: {
                                _allowed: "h H hB hb",
                                _preferred: "h"
                            },
                            KR: {
                                _allowed: "h H hB hb",
                                _preferred: "h"
                            },
                            NA: {
                                _allowed: "h H hB hb",
                                _preferred: "h"
                            },
                            PA: {
                                _allowed: "h H hB hb",
                                _preferred: "h"
                            },
                            PR: {
                                _allowed: "h H hB hb",
                                _preferred: "h"
                            },
                            VE: {
                                _allowed: "h H hB hb",
                                _preferred: "h"
                            },
                            AC: {
                                _allowed: "H h hb hB",
                                _preferred: "H"
                            },
                            AI: {
                                _allowed: "H h hb hB",
                                _preferred: "H"
                            },
                            BW: {
                                _allowed: "H h hb hB",
                                _preferred: "H"
                            },
                            BZ: {
                                _allowed: "H h hb hB",
                                _preferred: "H"
                            },
                            CC: {
                                _allowed: "H h hb hB",
                                _preferred: "H"
                            },
                            CK: {
                                _allowed: "H h hb hB",
                                _preferred: "H"
                            },
                            CX: {
                                _allowed: "H h hb hB",
                                _preferred: "H"
                            },
                            DG: {
                                _allowed: "H h hb hB",
                                _preferred: "H"
                            },
                            FK: {
                                _allowed: "H h hb hB",
                                _preferred: "H"
                            },
                            GB: {
                                _allowed: "H h hb hB",
                                _preferred: "H"
                            },
                            GG: {
                                _allowed: "H h hb hB",
                                _preferred: "H"
                            },
                            GI: {
                                _allowed: "H h hb hB",
                                _preferred: "H"
                            },
                            IE: {
                                _allowed: "H h hb hB",
                                _preferred: "H"
                            },
                            IM: {
                                _allowed: "H h hb hB",
                                _preferred: "H"
                            },
                            IO: {
                                _allowed: "H h hb hB",
                                _preferred: "H"
                            },
                            JE: {
                                _allowed: "H h hb hB",
                                _preferred: "H"
                            },
                            LT: {
                                _allowed: "H h hb hB",
                                _preferred: "H"
                            },
                            MK: {
                                _allowed: "H h hb hB",
                                _preferred: "H"
                            },
                            MN: {
                                _allowed: "H h hb hB",
                                _preferred: "H"
                            },
                            MS: {
                                _allowed: "H h hb hB",
                                _preferred: "H"
                            },
                            NF: {
                                _allowed: "H h hb hB",
                                _preferred: "H"
                            },
                            NG: {
                                _allowed: "H h hb hB",
                                _preferred: "H"
                            },
                            NR: {
                                _allowed: "H h hb hB",
                                _preferred: "H"
                            },
                            NU: {
                                _allowed: "H h hb hB",
                                _preferred: "H"
                            },
                            PN: {
                                _allowed: "H h hb hB",
                                _preferred: "H"
                            },
                            SH: {
                                _allowed: "H h hb hB",
                                _preferred: "H"
                            },
                            SX: {
                                _allowed: "H h hb hB",
                                _preferred: "H"
                            },
                            TA: {
                                _allowed: "H h hb hB",
                                _preferred: "H"
                            },
                            ZA: {
                                _allowed: "H h hb hB",
                                _preferred: "H"
                            },
                            af_ZA: {
                                _allowed: "H h hB hb",
                                _preferred: "H"
                            },
                            AR: {
                                _allowed: "H h hB hb",
                                _preferred: "H"
                            },
                            CL: {
                                _allowed: "H h hB hb",
                                _preferred: "H"
                            },
                            CR: {
                                _allowed: "H h hB hb",
                                _preferred: "H"
                            },
                            CU: {
                                _allowed: "H h hB hb",
                                _preferred: "H"
                            },
                            EA: {
                                _allowed: "H h hB hb",
                                _preferred: "H"
                            },
                            es_BO: {
                                _allowed: "H h hB hb",
                                _preferred: "H"
                            },
                            es_BR: {
                                _allowed: "H h hB hb",
                                _preferred: "H"
                            },
                            es_EC: {
                                _allowed: "H h hB hb",
                                _preferred: "H"
                            },
                            es_ES: {
                                _allowed: "H h hB hb",
                                _preferred: "H"
                            },
                            es_GQ: {
                                _allowed: "H h hB hb",
                                _preferred: "H"
                            },
                            es_PE: {
                                _allowed: "H h hB hb",
                                _preferred: "H"
                            },
                            GT: {
                                _allowed: "H h hB hb",
                                _preferred: "H"
                            },
                            HN: {
                                _allowed: "H h hB hb",
                                _preferred: "H"
                            },
                            IC: {
                                _allowed: "H h hB hb",
                                _preferred: "H"
                            },
                            KG: {
                                _allowed: "H h hB hb",
                                _preferred: "H"
                            },
                            KM: {
                                _allowed: "H h hB hb",
                                _preferred: "H"
                            },
                            LK: {
                                _allowed: "H h hB hb",
                                _preferred: "H"
                            },
                            MA: {
                                _allowed: "H h hB hb",
                                _preferred: "H"
                            },
                            MX: {
                                _allowed: "H h hB hb",
                                _preferred: "H"
                            },
                            NI: {
                                _allowed: "H h hB hb",
                                _preferred: "H"
                            },
                            PY: {
                                _allowed: "H h hB hb",
                                _preferred: "H"
                            },
                            SV: {
                                _allowed: "H h hB hb",
                                _preferred: "H"
                            },
                            UY: {
                                _allowed: "H h hB hb",
                                _preferred: "H"
                            },
                            JP: {
                                _allowed: "H h K",
                                _preferred: "H"
                            },
                            AD: {
                                _allowed: "H hB",
                                _preferred: "H"
                            },
                            AM: {
                                _allowed: "H hB",
                                _preferred: "H"
                            },
                            AO: {
                                _allowed: "H hB",
                                _preferred: "H"
                            },
                            AT: {
                                _allowed: "H hB",
                                _preferred: "H"
                            },
                            AW: {
                                _allowed: "H hB",
                                _preferred: "H"
                            },
                            BE: {
                                _allowed: "H hB",
                                _preferred: "H"
                            },
                            BF: {
                                _allowed: "H hB",
                                _preferred: "H"
                            },
                            BJ: {
                                _allowed: "H hB",
                                _preferred: "H"
                            },
                            BL: {
                                _allowed: "H hB",
                                _preferred: "H"
                            },
                            BR: {
                                _allowed: "H hB",
                                _preferred: "H"
                            },
                            CG: {
                                _allowed: "H hB",
                                _preferred: "H"
                            },
                            CI: {
                                _allowed: "H hB",
                                _preferred: "H"
                            },
                            CV: {
                                _allowed: "H hB",
                                _preferred: "H"
                            },
                            DE: {
                                _allowed: "H hB",
                                _preferred: "H"
                            },
                            EE: {
                                _allowed: "H hB",
                                _preferred: "H"
                            },
                            FR: {
                                _allowed: "H hB",
                                _preferred: "H"
                            },
                            GA: {
                                _allowed: "H hB",
                                _preferred: "H"
                            },
                            GF: {
                                _allowed: "H hB",
                                _preferred: "H"
                            },
                            GN: {
                                _allowed: "H hB",
                                _preferred: "H"
                            },
                            GP: {
                                _allowed: "H hB",
                                _preferred: "H"
                            },
                            GW: {
                                _allowed: "H hB",
                                _preferred: "H"
                            },
                            HR: {
                                _allowed: "H hB",
                                _preferred: "H"
                            },
                            IL: {
                                _allowed: "H hB",
                                _preferred: "H"
                            },
                            IT: {
                                _allowed: "H hB",
                                _preferred: "H"
                            },
                            KZ: {
                                _allowed: "H hB",
                                _preferred: "H"
                            },
                            MC: {
                                _allowed: "H hB",
                                _preferred: "H"
                            },
                            MD: {
                                _allowed: "H hB",
                                _preferred: "H"
                            },
                            MF: {
                                _allowed: "H hB",
                                _preferred: "H"
                            },
                            MQ: {
                                _allowed: "H hB",
                                _preferred: "H"
                            },
                            MZ: {
                                _allowed: "H hB",
                                _preferred: "H"
                            },
                            NC: {
                                _allowed: "H hB",
                                _preferred: "H"
                            },
                            NL: {
                                _allowed: "H hB",
                                _preferred: "H"
                            },
                            PM: {
                                _allowed: "H hB",
                                _preferred: "H"
                            },
                            PT: {
                                _allowed: "H hB",
                                _preferred: "H"
                            },
                            RE: {
                                _allowed: "H hB",
                                _preferred: "H"
                            },
                            RO: {
                                _allowed: "H hB",
                                _preferred: "H"
                            },
                            SI: {
                                _allowed: "H hB",
                                _preferred: "H"
                            },
                            SR: {
                                _allowed: "H hB",
                                _preferred: "H"
                            },
                            ST: {
                                _allowed: "H hB",
                                _preferred: "H"
                            },
                            TG: {
                                _allowed: "H hB",
                                _preferred: "H"
                            },
                            TR: {
                                _allowed: "H hB",
                                _preferred: "H"
                            },
                            WF: {
                                _allowed: "H hB",
                                _preferred: "H"
                            },
                            YT: {
                                _allowed: "H hB",
                                _preferred: "H"
                            },
                            BD: {
                                _allowed: "h hB H",
                                _preferred: "h"
                            },
                            PK: {
                                _allowed: "h hB H",
                                _preferred: "h"
                            },
                            AZ: {
                                _allowed: "H hB h",
                                _preferred: "H"
                            },
                            BA: {
                                _allowed: "H hB h",
                                _preferred: "H"
                            },
                            BG: {
                                _allowed: "H hB h",
                                _preferred: "H"
                            },
                            CH: {
                                _allowed: "H hB h",
                                _preferred: "H"
                            },
                            GE: {
                                _allowed: "H hB h",
                                _preferred: "H"
                            },
                            LI: {
                                _allowed: "H hB h",
                                _preferred: "H"
                            },
                            ME: {
                                _allowed: "H hB h",
                                _preferred: "H"
                            },
                            RS: {
                                _allowed: "H hB h",
                                _preferred: "H"
                            },
                            UA: {
                                _allowed: "H hB h",
                                _preferred: "H"
                            },
                            UZ: {
                                _allowed: "H hB h",
                                _preferred: "H"
                            },
                            XK: {
                                _allowed: "H hB h",
                                _preferred: "H"
                            },
                            AG: {
                                _allowed: "h hb H hB",
                                _preferred: "h"
                            },
                            AU: {
                                _allowed: "h hb H hB",
                                _preferred: "h"
                            },
                            BB: {
                                _allowed: "h hb H hB",
                                _preferred: "h"
                            },
                            BM: {
                                _allowed: "h hb H hB",
                                _preferred: "h"
                            },
                            BS: {
                                _allowed: "h hb H hB",
                                _preferred: "h"
                            },
                            CA: {
                                _allowed: "h hb H hB",
                                _preferred: "h"
                            },
                            DM: {
                                _allowed: "h hb H hB",
                                _preferred: "h"
                            },
                            en_001: {
                                _allowed: "h hb H hB",
                                _preferred: "h"
                            },
                            FJ: {
                                _allowed: "h hb H hB",
                                _preferred: "h"
                            },
                            FM: {
                                _allowed: "h hb H hB",
                                _preferred: "h"
                            },
                            GD: {
                                _allowed: "h hb H hB",
                                _preferred: "h"
                            },
                            GM: {
                                _allowed: "h hb H hB",
                                _preferred: "h"
                            },
                            GU: {
                                _allowed: "h hb H hB",
                                _preferred: "h"
                            },
                            GY: {
                                _allowed: "h hb H hB",
                                _preferred: "h"
                            },
                            JM: {
                                _allowed: "h hb H hB",
                                _preferred: "h"
                            },
                            KI: {
                                _allowed: "h hb H hB",
                                _preferred: "h"
                            },
                            KN: {
                                _allowed: "h hb H hB",
                                _preferred: "h"
                            },
                            KY: {
                                _allowed: "h hb H hB",
                                _preferred: "h"
                            },
                            LC: {
                                _allowed: "h hb H hB",
                                _preferred: "h"
                            },
                            LR: {
                                _allowed: "h hb H hB",
                                _preferred: "h"
                            },
                            MH: {
                                _allowed: "h hb H hB",
                                _preferred: "h"
                            },
                            MP: {
                                _allowed: "h hb H hB",
                                _preferred: "h"
                            },
                            MW: {
                                _allowed: "h hb H hB",
                                _preferred: "h"
                            },
                            NZ: {
                                _allowed: "h hb H hB",
                                _preferred: "h"
                            },
                            SB: {
                                _allowed: "h hb H hB",
                                _preferred: "h"
                            },
                            SG: {
                                _allowed: "h hb H hB",
                                _preferred: "h"
                            },
                            SL: {
                                _allowed: "h hb H hB",
                                _preferred: "h"
                            },
                            SS: {
                                _allowed: "h hb H hB",
                                _preferred: "h"
                            },
                            SZ: {
                                _allowed: "h hb H hB",
                                _preferred: "h"
                            },
                            TC: {
                                _allowed: "h hb H hB",
                                _preferred: "h"
                            },
                            TT: {
                                _allowed: "h hb H hB",
                                _preferred: "h"
                            },
                            UM: {
                                _allowed: "h hb H hB",
                                _preferred: "h"
                            },
                            US: {
                                _allowed: "h hb H hB",
                                _preferred: "h"
                            },
                            VC: {
                                _allowed: "h hb H hB",
                                _preferred: "h"
                            },
                            VG: {
                                _allowed: "h hb H hB",
                                _preferred: "h"
                            },
                            VI: {
                                _allowed: "h hb H hB",
                                _preferred: "h"
                            },
                            ZM: {
                                _allowed: "h hb H hB",
                                _preferred: "h"
                            },
                            BO: {
                                _allowed: "H hB h hb",
                                _preferred: "H"
                            },
                            EC: {
                                _allowed: "H hB h hb",
                                _preferred: "H"
                            },
                            ES: {
                                _allowed: "H hB h hb",
                                _preferred: "H"
                            },
                            GQ: {
                                _allowed: "H hB h hb",
                                _preferred: "H"
                            },
                            PE: {
                                _allowed: "H hB h hb",
                                _preferred: "H"
                            },
                            AE: {
                                _allowed: "h hB hb H",
                                _preferred: "h"
                            },
                            ar_001: {
                                _allowed: "h hB hb H",
                                _preferred: "h"
                            },
                            BH: {
                                _allowed: "h hB hb H",
                                _preferred: "h"
                            },
                            DZ: {
                                _allowed: "h hB hb H",
                                _preferred: "h"
                            },
                            EG: {
                                _allowed: "h hB hb H",
                                _preferred: "h"
                            },
                            EH: {
                                _allowed: "h hB hb H",
                                _preferred: "h"
                            },
                            IQ: {
                                _allowed: "h hB hb H",
                                _preferred: "h"
                            },
                            JO: {
                                _allowed: "h hB hb H",
                                _preferred: "h"
                            },
                            KW: {
                                _allowed: "h hB hb H",
                                _preferred: "h"
                            },
                            LB: {
                                _allowed: "h hB hb H",
                                _preferred: "h"
                            },
                            LY: {
                                _allowed: "h hB hb H",
                                _preferred: "h"
                            },
                            MR: {
                                _allowed: "h hB hb H",
                                _preferred: "h"
                            },
                            OM: {
                                _allowed: "h hB hb H",
                                _preferred: "h"
                            },
                            PH: {
                                _allowed: "h hB hb H",
                                _preferred: "h"
                            },
                            PS: {
                                _allowed: "h hB hb H",
                                _preferred: "h"
                            },
                            QA: {
                                _allowed: "h hB hb H",
                                _preferred: "h"
                            },
                            SA: {
                                _allowed: "h hB hb H",
                                _preferred: "h"
                            },
                            SD: {
                                _allowed: "h hB hb H",
                                _preferred: "h"
                            },
                            SY: {
                                _allowed: "h hB hb H",
                                _preferred: "h"
                            },
                            TN: {
                                _allowed: "h hB hb H",
                                _preferred: "h"
                            },
                            YE: {
                                _allowed: "h hB hb H",
                                _preferred: "h"
                            },
                            AF: {
                                _allowed: "H hb hB h",
                                _preferred: "H"
                            },
                            LA: {
                                _allowed: "H hb hB h",
                                _preferred: "H"
                            },
                            LV: {
                                _allowed: "H hB hb h",
                                _preferred: "H"
                            },
                            TL: {
                                _allowed: "H hB hb h",
                                _preferred: "H"
                            },
                            zu_ZA: {
                                _allowed: "H hB hb h",
                                _preferred: "H"
                            },
                            CD: {
                                _allowed: "hB H",
                                _preferred: "H"
                            },
                            IR: {
                                _allowed: "hB H",
                                _preferred: "H"
                            },
                            hi_IN: {
                                _allowed: "hB h H",
                                _preferred: "h"
                            },
                            kn_IN: {
                                _allowed: "hB h H",
                                _preferred: "h"
                            },
                            ml_IN: {
                                _allowed: "hB h H",
                                _preferred: "h"
                            },
                            te_IN: {
                                _allowed: "hB h H",
                                _preferred: "h"
                            },
                            KH: {
                                _allowed: "hB h H hb",
                                _preferred: "h"
                            },
                            ta_IN: {
                                _allowed: "hB h hb H",
                                _preferred: "h"
                            },
                            BN: {
                                _allowed: "hb hB h H",
                                _preferred: "h"
                            },
                            MY: {
                                _allowed: "hb hB h H",
                                _preferred: "h"
                            },
                            CN: {
                                _allowed: "hB hb h H",
                                _preferred: "h"
                            },
                            ET: {
                                _allowed: "hB hb h H",
                                _preferred: "h"
                            },
                            gu_IN: {
                                _allowed: "hB hb h H",
                                _preferred: "h"
                            },
                            HK: {
                                _allowed: "hB hb h H",
                                _preferred: "h"
                            },
                            MO: {
                                _allowed: "hB hb h H",
                                _preferred: "h"
                            },
                            mr_IN: {
                                _allowed: "hB hb h H",
                                _preferred: "h"
                            },
                            pa_IN: {
                                _allowed: "hB hb h H",
                                _preferred: "h"
                            },
                            TW: {
                                _allowed: "hB hb h H",
                                _preferred: "h"
                            },
                            KE: {
                                _allowed: "hB hb H h",
                                _preferred: "H"
                            },
                            MM: {
                                _allowed: "hB hb H h",
                                _preferred: "H"
                            },
                            TZ: {
                                _allowed: "hB hb H h",
                                _preferred: "H"
                            },
                            UG: {
                                _allowed: "hB hb H h",
                                _preferred: "H"
                            }
                        },
                        weekData: {
                            minDays: {
                                "001": "1",
                                AD: "4",
                                AN: "4",
                                AT: "4",
                                AX: "4",
                                BE: "4",
                                BG: "4",
                                CH: "4",
                                CZ: "4",
                                DE: "4",
                                DK: "4",
                                EE: "4",
                                ES: "4",
                                FI: "4",
                                FJ: "4",
                                FO: "4",
                                FR: "4",
                                GB: "4",
                                GF: "4",
                                GG: "4",
                                GI: "4",
                                GP: "4",
                                GR: "4",
                                GU: "1",
                                HU: "4",
                                IE: "4",
                                IM: "4",
                                IS: "4",
                                IT: "4",
                                JE: "4",
                                LI: "4",
                                LT: "4",
                                LU: "4",
                                MC: "4",
                                MQ: "4",
                                NL: "4",
                                NO: "4",
                                PL: "4",
                                PT: "4",
                                RE: "4",
                                RU: "4",
                                SE: "4",
                                SJ: "4",
                                SK: "4",
                                SM: "4",
                                UM: "1",
                                US: "1",
                                VA: "4",
                                VI: "1"
                            },
                            firstDay: {
                                "001": "mon",
                                AD: "mon",
                                AE: "sat",
                                AF: "sat",
                                AG: "sun",
                                AI: "mon",
                                AL: "mon",
                                AM: "mon",
                                AN: "mon",
                                AR: "mon",
                                AS: "sun",
                                AT: "mon",
                                AU: "sun",
                                AX: "mon",
                                AZ: "mon",
                                BA: "mon",
                                BD: "sun",
                                BE: "mon",
                                BG: "mon",
                                BH: "sat",
                                BM: "mon",
                                BN: "mon",
                                BR: "sun",
                                BS: "sun",
                                BT: "sun",
                                BW: "sun",
                                BY: "mon",
                                BZ: "sun",
                                CA: "sun",
                                CH: "mon",
                                CL: "mon",
                                CM: "mon",
                                CN: "sun",
                                CO: "sun",
                                CR: "mon",
                                CY: "mon",
                                CZ: "mon",
                                DE: "mon",
                                DJ: "sat",
                                DK: "mon",
                                DM: "sun",
                                DO: "sun",
                                DZ: "sat",
                                EC: "mon",
                                EE: "mon",
                                EG: "sat",
                                ES: "mon",
                                ET: "sun",
                                FI: "mon",
                                FJ: "mon",
                                FO: "mon",
                                FR: "mon",
                                GB: "mon",
                                "GB-alt-variant": "sun",
                                GE: "mon",
                                GF: "mon",
                                GP: "mon",
                                GR: "mon",
                                GT: "sun",
                                GU: "sun",
                                HK: "sun",
                                HN: "sun",
                                HR: "mon",
                                HU: "mon",
                                ID: "sun",
                                IE: "mon",
                                IL: "sun",
                                IN: "sun",
                                IQ: "sat",
                                IR: "sat",
                                IS: "mon",
                                IT: "mon",
                                JM: "sun",
                                JO: "sat",
                                JP: "sun",
                                KE: "sun",
                                KG: "mon",
                                KH: "sun",
                                KR: "sun",
                                KW: "sat",
                                KZ: "mon",
                                LA: "sun",
                                LB: "mon",
                                LI: "mon",
                                LK: "mon",
                                LT: "mon",
                                LU: "mon",
                                LV: "mon",
                                LY: "sat",
                                MC: "mon",
                                MD: "mon",
                                ME: "mon",
                                MH: "sun",
                                MK: "mon",
                                MM: "sun",
                                MN: "mon",
                                MO: "sun",
                                MQ: "mon",
                                MT: "sun",
                                MV: "fri",
                                MX: "sun",
                                MY: "mon",
                                MZ: "sun",
                                NI: "sun",
                                NL: "mon",
                                NO: "mon",
                                NP: "sun",
                                NZ: "mon",
                                OM: "sat",
                                PA: "sun",
                                PE: "sun",
                                PH: "sun",
                                PK: "sun",
                                PL: "mon",
                                PR: "sun",
                                PT: "sun",
                                PY: "sun",
                                QA: "sat",
                                RE: "mon",
                                RO: "mon",
                                RS: "mon",
                                RU: "mon",
                                SA: "sun",
                                SD: "sat",
                                SE: "mon",
                                SG: "sun",
                                SI: "mon",
                                SK: "mon",
                                SM: "mon",
                                SV: "sun",
                                SY: "sat",
                                TH: "sun",
                                TJ: "mon",
                                TM: "mon",
                                TR: "mon",
                                TT: "sun",
                                TW: "sun",
                                UA: "mon",
                                UM: "sun",
                                US: "sun",
                                UY: "mon",
                                UZ: "mon",
                                VA: "mon",
                                VE: "sun",
                                VI: "sun",
                                VN: "mon",
                                WS: "sun",
                                XK: "mon",
                                YE: "sun",
                                ZA: "sun",
                                ZW: "sun"
                            },
                            weekendStart: {
                                "001": "sat",
                                AE: "fri",
                                AF: "thu",
                                BH: "fri",
                                DZ: "fri",
                                EG: "fri",
                                IL: "fri",
                                IN: "sun",
                                IQ: "fri",
                                IR: "fri",
                                JO: "fri",
                                KW: "fri",
                                LY: "fri",
                                OM: "fri",
                                QA: "fri",
                                SA: "fri",
                                SD: "fri",
                                SY: "fri",
                                UG: "sun",
                                YE: "fri"
                            },
                            weekendEnd: {
                                "001": "sun",
                                AE: "sat",
                                AF: "fri",
                                BH: "sat",
                                DZ: "sat",
                                EG: "sat",
                                IL: "sat",
                                IQ: "sat",
                                IR: "fri",
                                JO: "sat",
                                KW: "sat",
                                LY: "sat",
                                OM: "sat",
                                QA: "sat",
                                SA: "sat",
                                SD: "sat",
                                SY: "sat",
                                YE: "sat"
                            },
                            af: {
                                _ordering: "weekOfDate weekOfInterval weekOfMonth"
                            },
                            "am az bs cs cy da el et hi ky lt mk sk ta th": {
                                _ordering: "weekOfYear weekOfMonth"
                            },
                            "ar fil gu hu hy id kk ko": {
                                _ordering: "weekOfMonth"
                            },
                            "be ro ru": {
                                _ordering: "weekOfInterval weekOfMonth"
                            },
                            "bg de iw pt ur zh": {
                                _ordering: "weekOfDate weekOfMonth weekOfInterval"
                            },
                            "ca es fr gl": {
                                _ordering: "weekOfDate"
                            },
                            "en bn ja ka": {
                                _ordering: "weekOfDate weekOfMonth"
                            },
                            eu: {
                                _ordering: "weekOfMonth weekOfDate"
                            },
                            "fa hr it lv pl si sr uk uz": {
                                _ordering: "weekOfMonth weekOfInterval"
                            },
                            "fi zh-TW": {
                                _ordering: "weekOfYear weekOfDate weekOfMonth"
                            },
                            "is mn no sv vi": {
                                _ordering: "weekOfYear weekOfMonth weekOfInterval"
                            },
                            "km mr": {
                                _ordering: "weekOfMonth weekOfYear"
                            },
                            "kn ml pa": {
                                _ordering: "weekOfMonth weekOfDate weekOfYear"
                            },
                            "lo sq": {
                                _ordering: "weekOfMonth weekOfInterval weekOfDate weekOfYear"
                            },
                            "ms tr": {
                                _ordering: "weekOfMonth weekOfYear weekOfInterval weekOfDate"
                            },
                            nl: {
                                _ordering: "weekOfDate weekOfYear weekOfMonth"
                            },
                            sl: {
                                _ordering: "weekOfInterval"
                            },
                            "sw te": {
                                _ordering: "weekOfMonth weekOfInterval weekOfYear"
                            },
                            und: {
                                _ordering: "weekOfYear"
                            },
                            zu: {
                                _ordering: "weekOfYear weekOfInterval"
                            }
                        },
                        currencyData: {
                            fractions: {
                                ADP: {
                                    _rounding: "0",
                                    _digits: "0"
                                },
                                AFN: {
                                    _rounding: "0",
                                    _digits: "0"
                                },
                                ALL: {
                                    _rounding: "0",
                                    _digits: "0"
                                },
                                AMD: {
                                    _rounding: "0",
                                    _digits: "2",
                                    _cashRounding: "0",
                                    _cashDigits: "0"
                                },
                                BHD: {
                                    _rounding: "0",
                                    _digits: "3"
                                },
                                BIF: {
                                    _rounding: "0",
                                    _digits: "0"
                                },
                                BYN: {
                                    _rounding: "0",
                                    _digits: "2"
                                },
                                BYR: {
                                    _rounding: "0",
                                    _digits: "0"
                                },
                                CAD: {
                                    _rounding: "0",
                                    _digits: "2",
                                    _cashRounding: "5"
                                },
                                CHF: {
                                    _rounding: "0",
                                    _digits: "2",
                                    _cashRounding: "5"
                                },
                                CLF: {
                                    _rounding: "0",
                                    _digits: "4"
                                },
                                CLP: {
                                    _rounding: "0",
                                    _digits: "0"
                                },
                                COP: {
                                    _rounding: "0",
                                    _digits: "2",
                                    _cashRounding: "0",
                                    _cashDigits: "0"
                                },
                                CRC: {
                                    _rounding: "0",
                                    _digits: "2",
                                    _cashRounding: "0",
                                    _cashDigits: "0"
                                },
                                CZK: {
                                    _rounding: "0",
                                    _digits: "2",
                                    _cashRounding: "0",
                                    _cashDigits: "0"
                                },
                                DEFAULT: {
                                    _rounding: "0",
                                    _digits: "2"
                                },
                                DJF: {
                                    _rounding: "0",
                                    _digits: "0"
                                },
                                DKK: {
                                    _rounding: "0",
                                    _digits: "2",
                                    _cashRounding: "50"
                                },
                                ESP: {
                                    _rounding: "0",
                                    _digits: "0"
                                },
                                GNF: {
                                    _rounding: "0",
                                    _digits: "0"
                                },
                                GYD: {
                                    _rounding: "0",
                                    _digits: "2",
                                    _cashRounding: "0",
                                    _cashDigits: "0"
                                },
                                HUF: {
                                    _rounding: "0",
                                    _digits: "2",
                                    _cashRounding: "0",
                                    _cashDigits: "0"
                                },
                                IDR: {
                                    _rounding: "0",
                                    _digits: "2",
                                    _cashRounding: "0",
                                    _cashDigits: "0"
                                },
                                IQD: {
                                    _rounding: "0",
                                    _digits: "0"
                                },
                                IRR: {
                                    _rounding: "0",
                                    _digits: "0"
                                },
                                ISK: {
                                    _rounding: "0",
                                    _digits: "0"
                                },
                                ITL: {
                                    _rounding: "0",
                                    _digits: "0"
                                },
                                JOD: {
                                    _rounding: "0",
                                    _digits: "3"
                                },
                                JPY: {
                                    _rounding: "0",
                                    _digits: "0"
                                },
                                KMF: {
                                    _rounding: "0",
                                    _digits: "0"
                                },
                                KPW: {
                                    _rounding: "0",
                                    _digits: "0"
                                },
                                KRW: {
                                    _rounding: "0",
                                    _digits: "0"
                                },
                                KWD: {
                                    _rounding: "0",
                                    _digits: "3"
                                },
                                LAK: {
                                    _rounding: "0",
                                    _digits: "0"
                                },
                                LBP: {
                                    _rounding: "0",
                                    _digits: "0"
                                },
                                LUF: {
                                    _rounding: "0",
                                    _digits: "0"
                                },
                                LYD: {
                                    _rounding: "0",
                                    _digits: "3"
                                },
                                MGA: {
                                    _rounding: "0",
                                    _digits: "0"
                                },
                                MGF: {
                                    _rounding: "0",
                                    _digits: "0"
                                },
                                MMK: {
                                    _rounding: "0",
                                    _digits: "0"
                                },
                                MNT: {
                                    _rounding: "0",
                                    _digits: "2",
                                    _cashRounding: "0",
                                    _cashDigits: "0"
                                },
                                MRO: {
                                    _rounding: "0",
                                    _digits: "0"
                                },
                                MUR: {
                                    _rounding: "0",
                                    _digits: "2",
                                    _cashRounding: "0",
                                    _cashDigits: "0"
                                },
                                NOK: {
                                    _rounding: "0",
                                    _digits: "2",
                                    _cashRounding: "0",
                                    _cashDigits: "0"
                                },
                                OMR: {
                                    _rounding: "0",
                                    _digits: "3"
                                },
                                PKR: {
                                    _rounding: "0",
                                    _digits: "2",
                                    _cashRounding: "0",
                                    _cashDigits: "0"
                                },
                                PYG: {
                                    _rounding: "0",
                                    _digits: "0"
                                },
                                RSD: {
                                    _rounding: "0",
                                    _digits: "0"
                                },
                                RWF: {
                                    _rounding: "0",
                                    _digits: "0"
                                },
                                SEK: {
                                    _rounding: "0",
                                    _digits: "2",
                                    _cashRounding: "0",
                                    _cashDigits: "0"
                                },
                                SLL: {
                                    _rounding: "0",
                                    _digits: "0"
                                },
                                SOS: {
                                    _rounding: "0",
                                    _digits: "0"
                                },
                                STD: {
                                    _rounding: "0",
                                    _digits: "0"
                                },
                                SYP: {
                                    _rounding: "0",
                                    _digits: "0"
                                },
                                TMM: {
                                    _rounding: "0",
                                    _digits: "0"
                                },
                                TND: {
                                    _rounding: "0",
                                    _digits: "3"
                                },
                                TRL: {
                                    _rounding: "0",
                                    _digits: "0"
                                },
                                TWD: {
                                    _rounding: "0",
                                    _digits: "2",
                                    _cashRounding: "0",
                                    _cashDigits: "0"
                                },
                                TZS: {
                                    _rounding: "0",
                                    _digits: "2",
                                    _cashRounding: "0",
                                    _cashDigits: "0"
                                },
                                UGX: {
                                    _rounding: "0",
                                    _digits: "0"
                                },
                                UYI: {
                                    _rounding: "0",
                                    _digits: "0"
                                },
                                UYW: {
                                    _rounding: "0",
                                    _digits: "4"
                                },
                                UZS: {
                                    _rounding: "0",
                                    _digits: "2",
                                    _cashRounding: "0",
                                    _cashDigits: "0"
                                },
                                VEF: {
                                    _rounding: "0",
                                    _digits: "2",
                                    _cashRounding: "0",
                                    _cashDigits: "0"
                                },
                                VND: {
                                    _rounding: "0",
                                    _digits: "0"
                                },
                                VUV: {
                                    _rounding: "0",
                                    _digits: "0"
                                },
                                XAF: {
                                    _rounding: "0",
                                    _digits: "0"
                                },
                                XOF: {
                                    _rounding: "0",
                                    _digits: "0"
                                },
                                XPF: {
                                    _rounding: "0",
                                    _digits: "0"
                                },
                                YER: {
                                    _rounding: "0",
                                    _digits: "0"
                                },
                                ZMK: {
                                    _rounding: "0",
                                    _digits: "0"
                                },
                                ZWD: {
                                    _rounding: "0",
                                    _digits: "0"
                                }
                            },
                            region: {
                                AC: [{
                                    SHP: {
                                        _from: "1976-01-01"
                                    }
                                }],
                                AD: [{
                                    ESP: {
                                        _from: "1873-01-01",
                                        _to: "2002-02-28"
                                    }
                                }, {
                                    ADP: {
                                        _from: "1936-01-01",
                                        _to: "2001-12-31"
                                    }
                                }, {
                                    FRF: {
                                        _from: "1960-01-01",
                                        _to: "2002-02-17"
                                    }
                                }, {
                                    EUR: {
                                        _from: "1999-01-01"
                                    }
                                }],
                                AE: [{
                                    AED: {
                                        _from: "1973-05-19"
                                    }
                                }],
                                AF: [{
                                    AFA: {
                                        _from: "1927-03-14",
                                        _to: "2002-12-31"
                                    }
                                }, {
                                    AFN: {
                                        _from: "2002-10-07"
                                    }
                                }],
                                AG: [{
                                    XCD: {
                                        _from: "1965-10-06"
                                    }
                                }],
                                AI: [{
                                    XCD: {
                                        _from: "1965-10-06"
                                    }
                                }],
                                AL: [{
                                    ALK: {
                                        _from: "1946-11-01",
                                        _to: "1965-08-16"
                                    }
                                }, {
                                    ALL: {
                                        _from: "1965-08-16"
                                    }
                                }],
                                AM: [{
                                    SUR: {
                                        _from: "1961-01-01",
                                        _to: "1991-12-25"
                                    }
                                }, {
                                    RUR: {
                                        _from: "1991-12-25",
                                        _to: "1993-11-22"
                                    }
                                }, {
                                    AMD: {
                                        _from: "1993-11-22"
                                    }
                                }],
                                AO: [{
                                    AOK: {
                                        _from: "1977-01-08",
                                        _to: "1991-03-01"
                                    }
                                }, {
                                    AON: {
                                        _from: "1990-09-25",
                                        _to: "2000-02-01"
                                    }
                                }, {
                                    AOR: {
                                        _from: "1995-07-01",
                                        _to: "2000-02-01"
                                    }
                                }, {
                                    AOA: {
                                        _from: "1999-12-13"
                                    }
                                }],
                                AQ: [{
                                    XXX: {
                                        _tender: "false"
                                    }
                                }],
                                AR: [{
                                    ARM: {
                                        _from: "1881-11-05",
                                        _to: "1970-01-01"
                                    }
                                }, {
                                    ARL: {
                                        _from: "1970-01-01",
                                        _to: "1983-06-01"
                                    }
                                }, {
                                    ARP: {
                                        _from: "1983-06-01",
                                        _to: "1985-06-14"
                                    }
                                }, {
                                    ARA: {
                                        _from: "1985-06-14",
                                        _to: "1992-01-01"
                                    }
                                }, {
                                    ARS: {
                                        _from: "1992-01-01"
                                    }
                                }],
                                AS: [{
                                    USD: {
                                        _from: "1904-07-16"
                                    }
                                }],
                                AT: [{
                                    ATS: {
                                        _from: "1947-12-04",
                                        _to: "2002-02-28"
                                    }
                                }, {
                                    EUR: {
                                        _from: "1999-01-01"
                                    }
                                }],
                                AU: [{
                                    AUD: {
                                        _from: "1966-02-14"
                                    }
                                }],
                                AW: [{
                                    ANG: {
                                        _from: "1940-05-10",
                                        _to: "1986-01-01"
                                    }
                                }, {
                                    AWG: {
                                        _from: "1986-01-01"
                                    }
                                }],
                                AX: [{
                                    EUR: {
                                        _from: "1999-01-01"
                                    }
                                }],
                                AZ: [{
                                    SUR: {
                                        _from: "1961-01-01",
                                        _to: "1991-12-25"
                                    }
                                }, {
                                    RUR: {
                                        _from: "1991-12-25",
                                        _to: "1994-01-01"
                                    }
                                }, {
                                    AZM: {
                                        _from: "1993-11-22",
                                        _to: "2006-12-31"
                                    }
                                }, {
                                    AZN: {
                                        _from: "2006-01-01"
                                    }
                                }],
                                BA: [{
                                    YUD: {
                                        _from: "1966-01-01",
                                        _to: "1990-01-01"
                                    }
                                }, {
                                    YUN: {
                                        _from: "1990-01-01",
                                        _to: "1992-07-01"
                                    }
                                }, {
                                    YUR: {
                                        _from: "1992-07-01",
                                        _to: "1993-10-01"
                                    }
                                }, {
                                    BAD: {
                                        _from: "1992-07-01",
                                        _to: "1994-08-15"
                                    }
                                }, {
                                    BAN: {
                                        _from: "1994-08-15",
                                        _to: "1997-07-01"
                                    }
                                }, {
                                    BAM: {
                                        _from: "1995-01-01"
                                    }
                                }],
                                BB: [{
                                    XCD: {
                                        _from: "1965-10-06",
                                        _to: "1973-12-03"
                                    }
                                }, {
                                    BBD: {
                                        _from: "1973-12-03"
                                    }
                                }],
                                BD: [{
                                    INR: {
                                        _from: "1835-08-17",
                                        _to: "1948-04-01"
                                    }
                                }, {
                                    PKR: {
                                        _from: "1948-04-01",
                                        _to: "1972-01-01"
                                    }
                                }, {
                                    BDT: {
                                        _from: "1972-01-01"
                                    }
                                }],
                                BE: [{
                                    NLG: {
                                        _from: "1816-12-15",
                                        _to: "1831-02-07"
                                    }
                                }, {
                                    BEF: {
                                        _from: "1831-02-07",
                                        _to: "2002-02-28"
                                    }
                                }, {
                                    BEC: {
                                        _tender: "false",
                                        _from: "1970-01-01",
                                        _to: "1990-03-05"
                                    }
                                }, {
                                    BEL: {
                                        _tender: "false",
                                        _from: "1970-01-01",
                                        _to: "1990-03-05"
                                    }
                                }, {
                                    EUR: {
                                        _from: "1999-01-01"
                                    }
                                }],
                                BF: [{
                                    XOF: {
                                        _from: "1984-08-04"
                                    }
                                }],
                                BG: [{
                                    BGO: {
                                        _from: "1879-07-08",
                                        _to: "1952-05-12"
                                    }
                                }, {
                                    BGM: {
                                        _from: "1952-05-12",
                                        _to: "1962-01-01"
                                    }
                                }, {
                                    BGL: {
                                        _from: "1962-01-01",
                                        _to: "1999-07-05"
                                    }
                                }, {
                                    BGN: {
                                        _from: "1999-07-05"
                                    }
                                }],
                                BH: [{
                                    BHD: {
                                        _from: "1965-10-16"
                                    }
                                }],
                                BI: [{
                                    BIF: {
                                        _from: "1964-05-19"
                                    }
                                }],
                                BJ: [{
                                    XOF: {
                                        _from: "1975-11-30"
                                    }
                                }],
                                BL: [{
                                    FRF: {
                                        _from: "1960-01-01",
                                        _to: "2002-02-17"
                                    }
                                }, {
                                    EUR: {
                                        _from: "1999-01-01"
                                    }
                                }],
                                BM: [{
                                    BMD: {
                                        _from: "1970-02-06"
                                    }
                                }],
                                BN: [{
                                    MYR: {
                                        _from: "1963-09-16",
                                        _to: "1967-06-12"
                                    }
                                }, {
                                    BND: {
                                        _from: "1967-06-12"
                                    }
                                }],
                                BO: [{
                                    BOV: {
                                        _tender: "false"
                                    }
                                }, {
                                    BOL: {
                                        _from: "1863-06-23",
                                        _to: "1963-01-01"
                                    }
                                }, {
                                    BOP: {
                                        _from: "1963-01-01",
                                        _to: "1986-12-31"
                                    }
                                }, {
                                    BOB: {
                                        _from: "1987-01-01"
                                    }
                                }],
                                BQ: [{
                                    ANG: {
                                        _from: "2010-10-10",
                                        _to: "2011-01-01"
                                    }
                                }, {
                                    USD: {
                                        _from: "2011-01-01"
                                    }
                                }],
                                BR: [{
                                    BRZ: {
                                        _from: "1942-11-01",
                                        _to: "1967-02-13"
                                    }
                                }, {
                                    BRB: {
                                        _from: "1967-02-13",
                                        _to: "1986-02-28"
                                    }
                                }, {
                                    BRC: {
                                        _from: "1986-02-28",
                                        _to: "1989-01-15"
                                    }
                                }, {
                                    BRN: {
                                        _from: "1989-01-15",
                                        _to: "1990-03-16"
                                    }
                                }, {
                                    BRE: {
                                        _from: "1990-03-16",
                                        _to: "1993-08-01"
                                    }
                                }, {
                                    BRR: {
                                        _from: "1993-08-01",
                                        _to: "1994-07-01"
                                    }
                                }, {
                                    BRL: {
                                        _from: "1994-07-01"
                                    }
                                }],
                                BS: [{
                                    BSD: {
                                        _from: "1966-05-25"
                                    }
                                }],
                                BT: [{
                                    INR: {
                                        _from: "1907-01-01"
                                    }
                                }, {
                                    BTN: {
                                        _from: "1974-04-16"
                                    }
                                }],
                                BU: [{
                                    BUK: {
                                        _from: "1952-07-01",
                                        _to: "1989-06-18"
                                    }
                                }],
                                BV: [{
                                    NOK: {
                                        _from: "1905-06-07"
                                    }
                                }],
                                BW: [{
                                    ZAR: {
                                        _from: "1961-02-14",
                                        _to: "1976-08-23"
                                    }
                                }, {
                                    BWP: {
                                        _from: "1976-08-23"
                                    }
                                }],
                                BY: [{
                                    SUR: {
                                        _from: "1961-01-01",
                                        _to: "1991-12-25"
                                    }
                                }, {
                                    RUR: {
                                        _from: "1991-12-25",
                                        _to: "1994-11-08"
                                    }
                                }, {
                                    BYB: {
                                        _from: "1994-08-01",
                                        _to: "2000-12-31"
                                    }
                                }, {
                                    BYR: {
                                        _from: "2000-01-01",
                                        _to: "2017-01-01"
                                    }
                                }, {
                                    BYN: {
                                        _from: "2016-07-01"
                                    }
                                }],
                                BZ: [{
                                    BZD: {
                                        _from: "1974-01-01"
                                    }
                                }],
                                CA: [{
                                    CAD: {
                                        _from: "1858-01-01"
                                    }
                                }],
                                CC: [{
                                    AUD: {
                                        _from: "1966-02-14"
                                    }
                                }],
                                CD: [{
                                    ZRZ: {
                                        _from: "1971-10-27",
                                        _to: "1993-11-01"
                                    }
                                }, {
                                    ZRN: {
                                        _from: "1993-11-01",
                                        _to: "1998-07-01"
                                    }
                                }, {
                                    CDF: {
                                        _from: "1998-07-01"
                                    }
                                }],
                                CF: [{
                                    XAF: {
                                        _from: "1993-01-01"
                                    }
                                }],
                                CG: [{
                                    XAF: {
                                        _from: "1993-01-01"
                                    }
                                }],
                                CH: [{
                                    CHE: {
                                        _tender: "false"
                                    }
                                }, {
                                    CHW: {
                                        _tender: "false"
                                    }
                                }, {
                                    CHF: {
                                        _from: "1799-03-17"
                                    }
                                }],
                                CI: [{
                                    XOF: {
                                        _from: "1958-12-04"
                                    }
                                }],
                                CK: [{
                                    NZD: {
                                        _from: "1967-07-10"
                                    }
                                }],
                                CL: [{
                                    CLF: {
                                        _tender: "false"
                                    }
                                }, {
                                    CLE: {
                                        _from: "1960-01-01",
                                        _to: "1975-09-29"
                                    }
                                }, {
                                    CLP: {
                                        _from: "1975-09-29"
                                    }
                                }],
                                CM: [{
                                    XAF: {
                                        _from: "1973-04-01"
                                    }
                                }],
                                CN: [{
                                    CNY: {
                                        _from: "1953-03-01"
                                    }
                                }, {
                                    CNX: {
                                        _tender: "false",
                                        _from: "1979-01-01",
                                        _to: "1998-12-31"
                                    }
                                }, {
                                    CNH: {
                                        _tender: "false",
                                        _from: "2010-07-19"
                                    }
                                }],
                                CO: [{
                                    COU: {
                                        _tender: "false"
                                    }
                                }, {
                                    COP: {
                                        _from: "1905-01-01"
                                    }
                                }],
                                CP: [{
                                    XXX: {
                                        _tender: "false"
                                    }
                                }],
                                CR: [{
                                    CRC: {
                                        _from: "1896-10-26"
                                    }
                                }],
                                CS: [{
                                    YUM: {
                                        _from: "1994-01-24",
                                        _to: "2002-05-15"
                                    }
                                }, {
                                    CSD: {
                                        _from: "2002-05-15",
                                        _to: "2006-06-03"
                                    }
                                }, {
                                    EUR: {
                                        _from: "2003-02-04",
                                        _to: "2006-06-03"
                                    }
                                }],
                                CU: [{
                                    CUP: {
                                        _from: "1859-01-01"
                                    }
                                }, {
                                    USD: {
                                        _from: "1899-01-01",
                                        _to: "1959-01-01"
                                    }
                                }, {
                                    CUC: {
                                        _from: "1994-01-01"
                                    }
                                }],
                                CV: [{
                                    PTE: {
                                        _from: "1911-05-22",
                                        _to: "1975-07-05"
                                    }
                                }, {
                                    CVE: {
                                        _from: "1914-01-01"
                                    }
                                }],
                                CW: [{
                                    ANG: {
                                        _from: "2010-10-10"
                                    }
                                }],
                                CX: [{
                                    AUD: {
                                        _from: "1966-02-14"
                                    }
                                }],
                                CY: [{
                                    CYP: {
                                        _from: "1914-09-10",
                                        _to: "2008-01-31"
                                    }
                                }, {
                                    EUR: {
                                        _from: "2008-01-01"
                                    }
                                }],
                                CZ: [{
                                    CSK: {
                                        _from: "1953-06-01",
                                        _to: "1993-03-01"
                                    }
                                }, {
                                    CZK: {
                                        _from: "1993-01-01"
                                    }
                                }],
                                DD: [{
                                    DDM: {
                                        _from: "1948-07-20",
                                        _to: "1990-10-02"
                                    }
                                }],
                                DE: [{
                                    DEM: {
                                        _from: "1948-06-20",
                                        _to: "2002-02-28"
                                    }
                                }, {
                                    EUR: {
                                        _from: "1999-01-01"
                                    }
                                }],
                                DG: [{
                                    USD: {
                                        _from: "1965-11-08"
                                    }
                                }],
                                DJ: [{
                                    DJF: {
                                        _from: "1977-06-27"
                                    }
                                }],
                                DK: [{
                                    DKK: {
                                        _from: "1873-05-27"
                                    }
                                }],
                                DM: [{
                                    XCD: {
                                        _from: "1965-10-06"
                                    }
                                }],
                                DO: [{
                                    USD: {
                                        _from: "1905-06-21",
                                        _to: "1947-10-01"
                                    }
                                }, {
                                    DOP: {
                                        _from: "1947-10-01"
                                    }
                                }],
                                DZ: [{
                                    DZD: {
                                        _from: "1964-04-01"
                                    }
                                }],
                                EA: [{
                                    EUR: {
                                        _from: "1999-01-01"
                                    }
                                }],
                                EC: [{
                                    ECS: {
                                        _from: "1884-04-01",
                                        _to: "2000-10-02"
                                    }
                                }, {
                                    ECV: {
                                        _tender: "false",
                                        _from: "1993-05-23",
                                        _to: "2000-01-09"
                                    }
                                }, {
                                    USD: {
                                        _from: "2000-10-02"
                                    }
                                }],
                                EE: [{
                                    SUR: {
                                        _from: "1961-01-01",
                                        _to: "1992-06-20"
                                    }
                                }, {
                                    EEK: {
                                        _from: "1992-06-21",
                                        _to: "2010-12-31"
                                    }
                                }, {
                                    EUR: {
                                        _from: "2011-01-01"
                                    }
                                }],
                                EG: [{
                                    EGP: {
                                        _from: "1885-11-14"
                                    }
                                }],
                                EH: [{
                                    MAD: {
                                        _from: "1976-02-26"
                                    }
                                }],
                                ER: [{
                                    ETB: {
                                        _from: "1993-05-24",
                                        _to: "1997-11-08"
                                    }
                                }, {
                                    ERN: {
                                        _from: "1997-11-08"
                                    }
                                }],
                                ES: [{
                                    ESP: {
                                        _from: "1868-10-19",
                                        _to: "2002-02-28"
                                    }
                                }, {
                                    ESB: {
                                        _tender: "false",
                                        _from: "1975-01-01",
                                        _to: "1994-12-31"
                                    }
                                }, {
                                    ESA: {
                                        _tender: "false",
                                        _from: "1978-01-01",
                                        _to: "1981-12-31"
                                    }
                                }, {
                                    EUR: {
                                        _from: "1999-01-01"
                                    }
                                }],
                                ET: [{
                                    ETB: {
                                        _from: "1976-09-15"
                                    }
                                }],
                                EU: [{
                                    XEU: {
                                        _tender: "false",
                                        _from: "1979-01-01",
                                        _to: "1998-12-31"
                                    }
                                }, {
                                    EUR: {
                                        _from: "1999-01-01"
                                    }
                                }],
                                FI: [{
                                    FIM: {
                                        _from: "1963-01-01",
                                        _to: "2002-02-28"
                                    }
                                }, {
                                    EUR: {
                                        _from: "1999-01-01"
                                    }
                                }],
                                FJ: [{
                                    FJD: {
                                        _from: "1969-01-13"
                                    }
                                }],
                                FK: [{
                                    FKP: {
                                        _from: "1901-01-01"
                                    }
                                }],
                                FM: [{
                                    JPY: {
                                        _from: "1914-10-03",
                                        _to: "1944-01-01"
                                    }
                                }, {
                                    USD: {
                                        _from: "1944-01-01"
                                    }
                                }],
                                FO: [{
                                    DKK: {
                                        _from: "1948-01-01"
                                    }
                                }],
                                FR: [{
                                    FRF: {
                                        _from: "1960-01-01",
                                        _to: "2002-02-17"
                                    }
                                }, {
                                    EUR: {
                                        _from: "1999-01-01"
                                    }
                                }],
                                GA: [{
                                    XAF: {
                                        _from: "1993-01-01"
                                    }
                                }],
                                GB: [{
                                    GBP: {
                                        _from: "1694-07-27"
                                    }
                                }],
                                GD: [{
                                    XCD: {
                                        _from: "1967-02-27"
                                    }
                                }],
                                GE: [{
                                    SUR: {
                                        _from: "1961-01-01",
                                        _to: "1991-12-25"
                                    }
                                }, {
                                    RUR: {
                                        _from: "1991-12-25",
                                        _to: "1993-06-11"
                                    }
                                }, {
                                    GEK: {
                                        _from: "1993-04-05",
                                        _to: "1995-09-25"
                                    }
                                }, {
                                    GEL: {
                                        _from: "1995-09-23"
                                    }
                                }],
                                GF: [{
                                    FRF: {
                                        _from: "1960-01-01",
                                        _to: "2002-02-17"
                                    }
                                }, {
                                    EUR: {
                                        _from: "1999-01-01"
                                    }
                                }],
                                GG: [{
                                    GBP: {
                                        _from: "1830-01-01"
                                    }
                                }],
                                GH: [{
                                    GHC: {
                                        _from: "1979-03-09",
                                        _to: "2007-12-31"
                                    }
                                }, {
                                    GHS: {
                                        _from: "2007-07-03"
                                    }
                                }],
                                GI: [{
                                    GIP: {
                                        _from: "1713-01-01"
                                    }
                                }],
                                GL: [{
                                    DKK: {
                                        _from: "1873-05-27"
                                    }
                                }],
                                GM: [{
                                    GMD: {
                                        _from: "1971-07-01"
                                    }
                                }],
                                GN: [{
                                    GNS: {
                                        _from: "1972-10-02",
                                        _to: "1986-01-06"
                                    }
                                }, {
                                    GNF: {
                                        _from: "1986-01-06"
                                    }
                                }],
                                GP: [{
                                    FRF: {
                                        _from: "1960-01-01",
                                        _to: "2002-02-17"
                                    }
                                }, {
                                    EUR: {
                                        _from: "1999-01-01"
                                    }
                                }],
                                GQ: [{
                                    GQE: {
                                        _from: "1975-07-07",
                                        _to: "1986-06-01"
                                    }
                                }, {
                                    XAF: {
                                        _from: "1993-01-01"
                                    }
                                }],
                                GR: [{
                                    GRD: {
                                        _from: "1954-05-01",
                                        _to: "2002-02-28"
                                    }
                                }, {
                                    EUR: {
                                        _from: "2001-01-01"
                                    }
                                }],
                                GS: [{
                                    GBP: {
                                        _from: "1908-01-01"
                                    }
                                }],
                                GT: [{
                                    GTQ: {
                                        _from: "1925-05-27"
                                    }
                                }],
                                GU: [{
                                    USD: {
                                        _from: "1944-08-21"
                                    }
                                }],
                                GW: [{
                                    GWE: {
                                        _from: "1914-01-01",
                                        _to: "1976-02-28"
                                    }
                                }, {
                                    GWP: {
                                        _from: "1976-02-28",
                                        _to: "1997-03-31"
                                    }
                                }, {
                                    XOF: {
                                        _from: "1997-03-31"
                                    }
                                }],
                                GY: [{
                                    GYD: {
                                        _from: "1966-05-26"
                                    }
                                }],
                                HK: [{
                                    HKD: {
                                        _from: "1895-02-02"
                                    }
                                }],
                                HM: [{
                                    AUD: {
                                        _from: "1967-02-16"
                                    }
                                }],
                                HN: [{
                                    HNL: {
                                        _from: "1926-04-03"
                                    }
                                }],
                                HR: [{
                                    YUD: {
                                        _from: "1966-01-01",
                                        _to: "1990-01-01"
                                    }
                                }, {
                                    YUN: {
                                        _from: "1990-01-01",
                                        _to: "1991-12-23"
                                    }
                                }, {
                                    HRD: {
                                        _from: "1991-12-23",
                                        _to: "1995-01-01"
                                    }
                                }, {
                                    HRK: {
                                        _from: "1994-05-30"
                                    }
                                }],
                                HT: [{
                                    HTG: {
                                        _from: "1872-08-26"
                                    }
                                }, {
                                    USD: {
                                        _from: "1915-01-01"
                                    }
                                }],
                                HU: [{
                                    HUF: {
                                        _from: "1946-07-23"
                                    }
                                }],
                                IC: [{
                                    EUR: {
                                        _from: "1999-01-01"
                                    }
                                }],
                                ID: [{
                                    IDR: {
                                        _from: "1965-12-13"
                                    }
                                }],
                                IE: [{
                                    GBP: {
                                        _from: "1800-01-01",
                                        _to: "1922-01-01"
                                    }
                                }, {
                                    IEP: {
                                        _from: "1922-01-01",
                                        _to: "2002-02-09"
                                    }
                                }, {
                                    EUR: {
                                        _from: "1999-01-01"
                                    }
                                }],
                                IL: [{
                                    ILP: {
                                        _from: "1948-08-16",
                                        _to: "1980-02-22"
                                    }
                                }, {
                                    ILR: {
                                        _from: "1980-02-22",
                                        _to: "1985-09-04"
                                    }
                                }, {
                                    ILS: {
                                        _from: "1985-09-04"
                                    }
                                }],
                                IM: [{
                                    GBP: {
                                        _from: "1840-01-03"
                                    }
                                }],
                                IN: [{
                                    INR: {
                                        _from: "1835-08-17"
                                    }
                                }],
                                IO: [{
                                    USD: {
                                        _from: "1965-11-08"
                                    }
                                }],
                                IQ: [{
                                    EGP: {
                                        _from: "1920-11-11",
                                        _to: "1931-04-19"
                                    }
                                }, {
                                    INR: {
                                        _from: "1920-11-11",
                                        _to: "1931-04-19"
                                    }
                                }, {
                                    IQD: {
                                        _from: "1931-04-19"
                                    }
                                }],
                                IR: [{
                                    IRR: {
                                        _from: "1932-05-13"
                                    }
                                }],
                                IS: [{
                                    DKK: {
                                        _from: "1873-05-27",
                                        _to: "1918-12-01"
                                    }
                                }, {
                                    ISJ: {
                                        _from: "1918-12-01",
                                        _to: "1981-01-01"
                                    }
                                }, {
                                    ISK: {
                                        _from: "1981-01-01"
                                    }
                                }],
                                IT: [{
                                    ITL: {
                                        _from: "1862-08-24",
                                        _to: "2002-02-28"
                                    }
                                }, {
                                    EUR: {
                                        _from: "1999-01-01"
                                    }
                                }],
                                JE: [{
                                    GBP: {
                                        _from: "1837-01-01"
                                    }
                                }],
                                JM: [{
                                    JMD: {
                                        _from: "1969-09-08"
                                    }
                                }],
                                JO: [{
                                    JOD: {
                                        _from: "1950-07-01"
                                    }
                                }],
                                JP: [{
                                    JPY: {
                                        _from: "1871-06-01"
                                    }
                                }],
                                KE: [{
                                    KES: {
                                        _from: "1966-09-14"
                                    }
                                }],
                                KG: [{
                                    SUR: {
                                        _from: "1961-01-01",
                                        _to: "1991-12-25"
                                    }
                                }, {
                                    RUR: {
                                        _from: "1991-12-25",
                                        _to: "1993-05-10"
                                    }
                                }, {
                                    KGS: {
                                        _from: "1993-05-10"
                                    }
                                }],
                                KH: [{
                                    KHR: {
                                        _from: "1980-03-20"
                                    }
                                }],
                                KI: [{
                                    AUD: {
                                        _from: "1966-02-14"
                                    }
                                }],
                                KM: [{
                                    KMF: {
                                        _from: "1975-07-06"
                                    }
                                }],
                                KN: [{
                                    XCD: {
                                        _from: "1965-10-06"
                                    }
                                }],
                                KP: [{
                                    KPW: {
                                        _from: "1959-04-17"
                                    }
                                }],
                                KR: [{
                                    KRO: {
                                        _from: "1945-08-15",
                                        _to: "1953-02-15"
                                    }
                                }, {
                                    KRH: {
                                        _from: "1953-02-15",
                                        _to: "1962-06-10"
                                    }
                                }, {
                                    KRW: {
                                        _from: "1962-06-10"
                                    }
                                }],
                                KW: [{
                                    KWD: {
                                        _from: "1961-04-01"
                                    }
                                }],
                                KY: [{
                                    JMD: {
                                        _from: "1969-09-08",
                                        _to: "1971-01-01"
                                    }
                                }, {
                                    KYD: {
                                        _from: "1971-01-01"
                                    }
                                }],
                                KZ: [{
                                    KZT: {
                                        _from: "1993-11-05"
                                    }
                                }],
                                LA: [{
                                    LAK: {
                                        _from: "1979-12-10"
                                    }
                                }],
                                LB: [{
                                    LBP: {
                                        _from: "1948-02-02"
                                    }
                                }],
                                LC: [{
                                    XCD: {
                                        _from: "1965-10-06"
                                    }
                                }],
                                LI: [{
                                    CHF: {
                                        _from: "1921-02-01"
                                    }
                                }],
                                LK: [{
                                    LKR: {
                                        _from: "1978-05-22"
                                    }
                                }],
                                LR: [{
                                    LRD: {
                                        _from: "1944-01-01"
                                    }
                                }],
                                LS: [{
                                    ZAR: {
                                        _from: "1961-02-14"
                                    }
                                }, {
                                    LSL: {
                                        _from: "1980-01-22"
                                    }
                                }],
                                LT: [{
                                    SUR: {
                                        _from: "1961-01-01",
                                        _to: "1992-10-01"
                                    }
                                }, {
                                    LTT: {
                                        _from: "1992-10-01",
                                        _to: "1993-06-25"
                                    }
                                }, {
                                    LTL: {
                                        _from: "1993-06-25",
                                        _to: "2014-12-31"
                                    }
                                }, {
                                    EUR: {
                                        _from: "2015-01-01"
                                    }
                                }],
                                LU: [{
                                    LUF: {
                                        _from: "1944-09-04",
                                        _to: "2002-02-28"
                                    }
                                }, {
                                    LUC: {
                                        _tender: "false",
                                        _from: "1970-01-01",
                                        _to: "1990-03-05"
                                    }
                                }, {
                                    LUL: {
                                        _tender: "false",
                                        _from: "1970-01-01",
                                        _to: "1990-03-05"
                                    }
                                }, {
                                    EUR: {
                                        _from: "1999-01-01"
                                    }
                                }],
                                LV: [{
                                    SUR: {
                                        _from: "1961-01-01",
                                        _to: "1992-07-20"
                                    }
                                }, {
                                    LVR: {
                                        _from: "1992-05-07",
                                        _to: "1993-10-17"
                                    }
                                }, {
                                    LVL: {
                                        _from: "1993-06-28",
                                        _to: "2013-12-31"
                                    }
                                }, {
                                    EUR: {
                                        _from: "2014-01-01"
                                    }
                                }],
                                LY: [{
                                    LYD: {
                                        _from: "1971-09-01"
                                    }
                                }],
                                MA: [{
                                    MAF: {
                                        _from: "1881-01-01",
                                        _to: "1959-10-17"
                                    }
                                }, {
                                    MAD: {
                                        _from: "1959-10-17"
                                    }
                                }],
                                MC: [{
                                    FRF: {
                                        _from: "1960-01-01",
                                        _to: "2002-02-17"
                                    }
                                }, {
                                    MCF: {
                                        _from: "1960-01-01",
                                        _to: "2002-02-17"
                                    }
                                }, {
                                    EUR: {
                                        _from: "1999-01-01"
                                    }
                                }],
                                MD: [{
                                    MDC: {
                                        _from: "1992-06-01",
                                        _to: "1993-11-29"
                                    }
                                }, {
                                    MDL: {
                                        _from: "1993-11-29"
                                    }
                                }],
                                ME: [{
                                    YUM: {
                                        _from: "1994-01-24",
                                        _to: "2002-05-15"
                                    }
                                }, {
                                    DEM: {
                                        _from: "1999-10-02",
                                        _to: "2002-05-15"
                                    }
                                }, {
                                    EUR: {
                                        _from: "2002-01-01"
                                    }
                                }],
                                MF: [{
                                    FRF: {
                                        _from: "1960-01-01",
                                        _to: "2002-02-17"
                                    }
                                }, {
                                    EUR: {
                                        _from: "1999-01-01"
                                    }
                                }],
                                MG: [{
                                    MGF: {
                                        _from: "1963-07-01",
                                        _to: "2004-12-31"
                                    }
                                }, {
                                    MGA: {
                                        _from: "1983-11-01"
                                    }
                                }],
                                MH: [{
                                    USD: {
                                        _from: "1944-01-01"
                                    }
                                }],
                                MK: [{
                                    MKN: {
                                        _from: "1992-04-26",
                                        _to: "1993-05-20"
                                    }
                                }, {
                                    MKD: {
                                        _from: "1993-05-20"
                                    }
                                }],
                                ML: [{
                                    XOF: {
                                        _from: "1958-11-24",
                                        _to: "1962-07-02"
                                    }
                                }, {
                                    MLF: {
                                        _from: "1962-07-02",
                                        _to: "1984-08-31"
                                    }
                                }, {
                                    XOF: {
                                        _from: "1984-06-01"
                                    }
                                }],
                                MM: [{
                                    BUK: {
                                        _from: "1952-07-01",
                                        _to: "1989-06-18"
                                    }
                                }, {
                                    MMK: {
                                        _from: "1989-06-18"
                                    }
                                }],
                                MN: [{
                                    MNT: {
                                        _from: "1915-03-01"
                                    }
                                }],
                                MO: [{
                                    MOP: {
                                        _from: "1901-01-01"
                                    }
                                }],
                                MP: [{
                                    USD: {
                                        _from: "1944-01-01"
                                    }
                                }],
                                MQ: [{
                                    FRF: {
                                        _from: "1960-01-01",
                                        _to: "2002-02-17"
                                    }
                                }, {
                                    EUR: {
                                        _from: "1999-01-01"
                                    }
                                }],
                                MR: [{
                                    XOF: {
                                        _from: "1958-11-28",
                                        _to: "1973-06-29"
                                    }
                                }, {
                                    MRO: {
                                        _from: "1973-06-29",
                                        _to: "2018-06-30"
                                    }
                                }, {
                                    MRU: {
                                        _from: "2018-01-01"
                                    }
                                }],
                                MS: [{
                                    XCD: {
                                        _from: "1967-02-27"
                                    }
                                }],
                                MT: [{
                                    MTP: {
                                        _from: "1914-08-13",
                                        _to: "1968-06-07"
                                    }
                                }, {
                                    MTL: {
                                        _from: "1968-06-07",
                                        _to: "2008-01-31"
                                    }
                                }, {
                                    EUR: {
                                        _from: "2008-01-01"
                                    }
                                }],
                                MU: [{
                                    MUR: {
                                        _from: "1934-04-01"
                                    }
                                }],
                                MV: [{
                                    MVP: {
                                        _from: "1947-01-01",
                                        _to: "1981-07-01"
                                    }
                                }, {
                                    MVR: {
                                        _from: "1981-07-01"
                                    }
                                }],
                                MW: [{
                                    MWK: {
                                        _from: "1971-02-15"
                                    }
                                }],
                                MX: [{
                                    MXV: {
                                        _tender: "false"
                                    }
                                }, {
                                    MXP: {
                                        _from: "1822-01-01",
                                        _to: "1992-12-31"
                                    }
                                }, {
                                    MXN: {
                                        _from: "1993-01-01"
                                    }
                                }],
                                MY: [{
                                    MYR: {
                                        _from: "1963-09-16"
                                    }
                                }],
                                MZ: [{
                                    MZE: {
                                        _from: "1975-06-25",
                                        _to: "1980-06-16"
                                    }
                                }, {
                                    MZM: {
                                        _from: "1980-06-16",
                                        _to: "2006-12-31"
                                    }
                                }, {
                                    MZN: {
                                        _from: "2006-07-01"
                                    }
                                }],
                                NA: [{
                                    ZAR: {
                                        _from: "1961-02-14"
                                    }
                                }, {
                                    NAD: {
                                        _from: "1993-01-01"
                                    }
                                }],
                                NC: [{
                                    XPF: {
                                        _from: "1985-01-01"
                                    }
                                }],
                                NE: [{
                                    XOF: {
                                        _from: "1958-12-19"
                                    }
                                }],
                                NF: [{
                                    AUD: {
                                        _from: "1966-02-14"
                                    }
                                }],
                                NG: [{
                                    NGN: {
                                        _from: "1973-01-01"
                                    }
                                }],
                                NI: [{
                                    NIC: {
                                        _from: "1988-02-15",
                                        _to: "1991-04-30"
                                    }
                                }, {
                                    NIO: {
                                        _from: "1991-04-30"
                                    }
                                }],
                                NL: [{
                                    NLG: {
                                        _from: "1813-01-01",
                                        _to: "2002-02-28"
                                    }
                                }, {
                                    EUR: {
                                        _from: "1999-01-01"
                                    }
                                }],
                                NO: [{
                                    SEK: {
                                        _from: "1873-05-27",
                                        _to: "1905-06-07"
                                    }
                                }, {
                                    NOK: {
                                        _from: "1905-06-07"
                                    }
                                }],
                                NP: [{
                                    INR: {
                                        _from: "1870-01-01",
                                        _to: "1966-10-17"
                                    }
                                }, {
                                    NPR: {
                                        _from: "1933-01-01"
                                    }
                                }],
                                NR: [{
                                    AUD: {
                                        _from: "1966-02-14"
                                    }
                                }],
                                NU: [{
                                    NZD: {
                                        _from: "1967-07-10"
                                    }
                                }],
                                NZ: [{
                                    NZD: {
                                        _from: "1967-07-10"
                                    }
                                }],
                                OM: [{
                                    OMR: {
                                        _from: "1972-11-11"
                                    }
                                }],
                                PA: [{
                                    PAB: {
                                        _from: "1903-11-04"
                                    }
                                }, {
                                    USD: {
                                        _from: "1903-11-18"
                                    }
                                }],
                                PE: [{
                                    PES: {
                                        _from: "1863-02-14",
                                        _to: "1985-02-01"
                                    }
                                }, {
                                    PEI: {
                                        _from: "1985-02-01",
                                        _to: "1991-07-01"
                                    }
                                }, {
                                    PEN: {
                                        _from: "1991-07-01"
                                    }
                                }],
                                PF: [{
                                    XPF: {
                                        _from: "1945-12-26"
                                    }
                                }],
                                PG: [{
                                    AUD: {
                                        _from: "1966-02-14",
                                        _to: "1975-09-16"
                                    }
                                }, {
                                    PGK: {
                                        _from: "1975-09-16"
                                    }
                                }],
                                PH: [{
                                    PHP: {
                                        _from: "1946-07-04"
                                    }
                                }],
                                PK: [{
                                    INR: {
                                        _from: "1835-08-17",
                                        _to: "1947-08-15"
                                    }
                                }, {
                                    PKR: {
                                        _from: "1948-04-01"
                                    }
                                }],
                                PL: [{
                                    PLZ: {
                                        _from: "1950-10-28",
                                        _to: "1994-12-31"
                                    }
                                }, {
                                    PLN: {
                                        _from: "1995-01-01"
                                    }
                                }],
                                PM: [{
                                    FRF: {
                                        _from: "1972-12-21",
                                        _to: "2002-02-17"
                                    }
                                }, {
                                    EUR: {
                                        _from: "1999-01-01"
                                    }
                                }],
                                PN: [{
                                    NZD: {
                                        _from: "1969-01-13"
                                    }
                                }],
                                PR: [{
                                    ESP: {
                                        _from: "1800-01-01",
                                        _to: "1898-12-10"
                                    }
                                }, {
                                    USD: {
                                        _from: "1898-12-10"
                                    }
                                }],
                                PS: [{
                                    JOD: {
                                        _from: "1950-07-01",
                                        _to: "1967-06-01"
                                    }
                                }, {
                                    ILP: {
                                        _from: "1967-06-01",
                                        _to: "1980-02-22"
                                    }
                                }, {
                                    ILS: {
                                        _from: "1985-09-04"
                                    }
                                }, {
                                    JOD: {
                                        _from: "1996-02-12"
                                    }
                                }],
                                PT: [{
                                    PTE: {
                                        _from: "1911-05-22",
                                        _to: "2002-02-28"
                                    }
                                }, {
                                    EUR: {
                                        _from: "1999-01-01"
                                    }
                                }],
                                PW: [{
                                    USD: {
                                        _from: "1944-01-01"
                                    }
                                }],
                                PY: [{
                                    PYG: {
                                        _from: "1943-11-01"
                                    }
                                }],
                                QA: [{
                                    QAR: {
                                        _from: "1973-05-19"
                                    }
                                }],
                                RE: [{
                                    FRF: {
                                        _from: "1975-01-01",
                                        _to: "2002-02-17"
                                    }
                                }, {
                                    EUR: {
                                        _from: "1999-01-01"
                                    }
                                }],
                                RO: [{
                                    ROL: {
                                        _from: "1952-01-28",
                                        _to: "2006-12-31"
                                    }
                                }, {
                                    RON: {
                                        _from: "2005-07-01"
                                    }
                                }],
                                RS: [{
                                    YUM: {
                                        _from: "1994-01-24",
                                        _to: "2002-05-15"
                                    }
                                }, {
                                    CSD: {
                                        _from: "2002-05-15",
                                        _to: "2006-10-25"
                                    }
                                }, {
                                    RSD: {
                                        _from: "2006-10-25"
                                    }
                                }],
                                RU: [{
                                    RUR: {
                                        _from: "1991-12-25",
                                        _to: "1998-12-31"
                                    }
                                }, {
                                    RUB: {
                                        _from: "1999-01-01"
                                    }
                                }],
                                RW: [{
                                    RWF: {
                                        _from: "1964-05-19"
                                    }
                                }],
                                SA: [{
                                    SAR: {
                                        _from: "1952-10-22"
                                    }
                                }],
                                SB: [{
                                    AUD: {
                                        _from: "1966-02-14",
                                        _to: "1978-06-30"
                                    }
                                }, {
                                    SBD: {
                                        _from: "1977-10-24"
                                    }
                                }],
                                SC: [{
                                    SCR: {
                                        _from: "1903-11-01"
                                    }
                                }],
                                SD: [{
                                    EGP: {
                                        _from: "1889-01-19",
                                        _to: "1958-01-01"
                                    }
                                }, {
                                    GBP: {
                                        _from: "1889-01-19",
                                        _to: "1958-01-01"
                                    }
                                }, {
                                    SDP: {
                                        _from: "1957-04-08",
                                        _to: "1998-06-01"
                                    }
                                }, {
                                    SDD: {
                                        _from: "1992-06-08",
                                        _to: "2007-06-30"
                                    }
                                }, {
                                    SDG: {
                                        _from: "2007-01-10"
                                    }
                                }],
                                SE: [{
                                    SEK: {
                                        _from: "1873-05-27"
                                    }
                                }],
                                SG: [{
                                    MYR: {
                                        _from: "1963-09-16",
                                        _to: "1967-06-12"
                                    }
                                }, {
                                    SGD: {
                                        _from: "1967-06-12"
                                    }
                                }],
                                SH: [{
                                    SHP: {
                                        _from: "1917-02-15"
                                    }
                                }],
                                SI: [{
                                    SIT: {
                                        _from: "1992-10-07",
                                        _to: "2007-01-14"
                                    }
                                }, {
                                    EUR: {
                                        _from: "2007-01-01"
                                    }
                                }],
                                SJ: [{
                                    NOK: {
                                        _from: "1905-06-07"
                                    }
                                }],
                                SK: [{
                                    CSK: {
                                        _from: "1953-06-01",
                                        _to: "1992-12-31"
                                    }
                                }, {
                                    SKK: {
                                        _from: "1992-12-31",
                                        _to: "2009-01-01"
                                    }
                                }, {
                                    EUR: {
                                        _from: "2009-01-01"
                                    }
                                }],
                                SL: [{
                                    GBP: {
                                        _from: "1808-11-30",
                                        _to: "1966-02-04"
                                    }
                                }, {
                                    SLL: {
                                        _from: "1964-08-04"
                                    }
                                }],
                                SM: [{
                                    ITL: {
                                        _from: "1865-12-23",
                                        _to: "2001-02-28"
                                    }
                                }, {
                                    EUR: {
                                        _from: "1999-01-01"
                                    }
                                }],
                                SN: [{
                                    XOF: {
                                        _from: "1959-04-04"
                                    }
                                }],
                                SO: [{
                                    SOS: {
                                        _from: "1960-07-01"
                                    }
                                }],
                                SR: [{
                                    NLG: {
                                        _from: "1815-11-20",
                                        _to: "1940-05-10"
                                    }
                                }, {
                                    SRG: {
                                        _from: "1940-05-10",
                                        _to: "2003-12-31"
                                    }
                                }, {
                                    SRD: {
                                        _from: "2004-01-01"
                                    }
                                }],
                                SS: [{
                                    SDG: {
                                        _from: "2007-01-10",
                                        _to: "2011-09-01"
                                    }
                                }, {
                                    SSP: {
                                        _from: "2011-07-18"
                                    }
                                }],
                                ST: [{
                                    STD: {
                                        _from: "1977-09-08",
                                        _to: "2017-12-31"
                                    }
                                }, {
                                    STN: {
                                        _from: "2018-01-01"
                                    }
                                }],
                                SU: [{
                                    SUR: {
                                        _from: "1961-01-01",
                                        _to: "1991-12-25"
                                    }
                                }],
                                SV: [{
                                    SVC: {
                                        _from: "1919-11-11",
                                        _to: "2001-01-01"
                                    }
                                }, {
                                    USD: {
                                        _from: "2001-01-01"
                                    }
                                }],
                                SX: [{
                                    ANG: {
                                        _from: "2010-10-10"
                                    }
                                }],
                                SY: [{
                                    SYP: {
                                        _from: "1948-01-01"
                                    }
                                }],
                                SZ: [{
                                    SZL: {
                                        _from: "1974-09-06"
                                    }
                                }],
                                TA: [{
                                    GBP: {
                                        _from: "1938-01-12"
                                    }
                                }],
                                TC: [{
                                    USD: {
                                        _from: "1969-09-08"
                                    }
                                }],
                                TD: [{
                                    XAF: {
                                        _from: "1993-01-01"
                                    }
                                }],
                                TF: [{
                                    FRF: {
                                        _from: "1959-01-01",
                                        _to: "2002-02-17"
                                    }
                                }, {
                                    EUR: {
                                        _from: "1999-01-01"
                                    }
                                }],
                                TG: [{
                                    XOF: {
                                        _from: "1958-11-28"
                                    }
                                }],
                                TH: [{
                                    THB: {
                                        _from: "1928-04-15"
                                    }
                                }],
                                TJ: [{
                                    RUR: {
                                        _from: "1991-12-25",
                                        _to: "1995-05-10"
                                    }
                                }, {
                                    TJR: {
                                        _from: "1995-05-10",
                                        _to: "2000-10-25"
                                    }
                                }, {
                                    TJS: {
                                        _from: "2000-10-26"
                                    }
                                }],
                                TK: [{
                                    NZD: {
                                        _from: "1967-07-10"
                                    }
                                }],
                                TL: [{
                                    TPE: {
                                        _from: "1959-01-02",
                                        _to: "2002-05-20"
                                    }
                                }, {
                                    IDR: {
                                        _from: "1975-12-07",
                                        _to: "2002-05-20"
                                    }
                                }, {
                                    USD: {
                                        _from: "1999-10-20"
                                    }
                                }],
                                TM: [{
                                    SUR: {
                                        _from: "1961-01-01",
                                        _to: "1991-12-25"
                                    }
                                }, {
                                    RUR: {
                                        _from: "1991-12-25",
                                        _to: "1993-11-01"
                                    }
                                }, {
                                    TMM: {
                                        _from: "1993-11-01",
                                        _to: "2009-01-01"
                                    }
                                }, {
                                    TMT: {
                                        _from: "2009-01-01"
                                    }
                                }],
                                TN: [{
                                    TND: {
                                        _from: "1958-11-01"
                                    }
                                }],
                                TO: [{
                                    TOP: {
                                        _from: "1966-02-14"
                                    }
                                }],
                                TP: [{
                                    TPE: {
                                        _from: "1959-01-02",
                                        _to: "2002-05-20"
                                    }
                                }, {
                                    IDR: {
                                        _from: "1975-12-07",
                                        _to: "2002-05-20"
                                    }
                                }],
                                TR: [{
                                    TRL: {
                                        _from: "1922-11-01",
                                        _to: "2005-12-31"
                                    }
                                }, {
                                    TRY: {
                                        _from: "2005-01-01"
                                    }
                                }],
                                TT: [{
                                    TTD: {
                                        _from: "1964-01-01"
                                    }
                                }],
                                TV: [{
                                    AUD: {
                                        _from: "1966-02-14"
                                    }
                                }],
                                TW: [{
                                    TWD: {
                                        _from: "1949-06-15"
                                    }
                                }],
                                TZ: [{
                                    TZS: {
                                        _from: "1966-06-14"
                                    }
                                }],
                                UA: [{
                                    SUR: {
                                        _from: "1961-01-01",
                                        _to: "1991-12-25"
                                    }
                                }, {
                                    RUR: {
                                        _from: "1991-12-25",
                                        _to: "1992-11-13"
                                    }
                                }, {
                                    UAK: {
                                        _from: "1992-11-13",
                                        _to: "1993-10-17"
                                    }
                                }, {
                                    UAH: {
                                        _from: "1996-09-02"
                                    }
                                }],
                                UG: [{
                                    UGS: {
                                        _from: "1966-08-15",
                                        _to: "1987-05-15"
                                    }
                                }, {
                                    UGX: {
                                        _from: "1987-05-15"
                                    }
                                }],
                                UM: [{
                                    USD: {
                                        _from: "1944-01-01"
                                    }
                                }],
                                US: [{
                                    USN: {
                                        _tender: "false"
                                    }
                                }, {
                                    USS: {
                                        _tender: "false",
                                        _to: "2014-03-01"
                                    }
                                }, {
                                    USD: {
                                        _from: "1792-01-01"
                                    }
                                }],
                                UY: [{
                                    UYI: {
                                        _tender: "false"
                                    }
                                }, {
                                    UYW: {
                                        _tender: "false"
                                    }
                                }, {
                                    UYP: {
                                        _from: "1975-07-01",
                                        _to: "1993-03-01"
                                    }
                                }, {
                                    UYU: {
                                        _from: "1993-03-01"
                                    }
                                }],
                                UZ: [{
                                    UZS: {
                                        _from: "1994-07-01"
                                    }
                                }],
                                VA: [{
                                    ITL: {
                                        _from: "1870-10-19",
                                        _to: "2002-02-28"
                                    }
                                }, {
                                    EUR: {
                                        _from: "1999-01-01"
                                    }
                                }],
                                VC: [{
                                    XCD: {
                                        _from: "1965-10-06"
                                    }
                                }],
                                VE: [{
                                    VEB: {
                                        _from: "1871-05-11",
                                        _to: "2008-06-30"
                                    }
                                }, {
                                    VEF: {
                                        _from: "2008-01-01",
                                        _to: "2018-08-20"
                                    }
                                }, {
                                    VES: {
                                        _from: "2018-08-20"
                                    }
                                }],
                                VG: [{
                                    USD: {
                                        _from: "1833-01-01"
                                    }
                                }, {
                                    GBP: {
                                        _from: "1833-01-01",
                                        _to: "1959-01-01"
                                    }
                                }],
                                VI: [{
                                    USD: {
                                        _from: "1837-01-01"
                                    }
                                }],
                                VN: [{
                                    VNN: {
                                        _from: "1978-05-03",
                                        _to: "1985-09-14"
                                    }
                                }, {
                                    VND: {
                                        _from: "1985-09-14"
                                    }
                                }],
                                VU: [{
                                    VUV: {
                                        _from: "1981-01-01"
                                    }
                                }],
                                WF: [{
                                    XPF: {
                                        _from: "1961-07-30"
                                    }
                                }],
                                WS: [{
                                    WST: {
                                        _from: "1967-07-10"
                                    }
                                }],
                                XK: [{
                                    YUM: {
                                        _from: "1994-01-24",
                                        _to: "1999-09-30"
                                    }
                                }, {
                                    DEM: {
                                        _from: "1999-09-01",
                                        _to: "2002-03-09"
                                    }
                                }, {
                                    EUR: {
                                        _from: "2002-01-01"
                                    }
                                }],
                                YD: [{
                                    YDD: {
                                        _from: "1965-04-01",
                                        _to: "1996-01-01"
                                    }
                                }],
                                YE: [{
                                    YER: {
                                        _from: "1990-05-22"
                                    }
                                }],
                                YT: [{
                                    KMF: {
                                        _from: "1975-01-01",
                                        _to: "1976-02-23"
                                    }
                                }, {
                                    FRF: {
                                        _from: "1976-02-23",
                                        _to: "2002-02-17"
                                    }
                                }, {
                                    EUR: {
                                        _from: "1999-01-01"
                                    }
                                }],
                                YU: [{
                                    YUD: {
                                        _from: "1966-01-01",
                                        _to: "1990-01-01"
                                    }
                                }, {
                                    YUN: {
                                        _from: "1990-01-01",
                                        _to: "1992-07-24"
                                    }
                                }, {
                                    YUM: {
                                        _from: "1994-01-24",
                                        _to: "2002-05-15"
                                    }
                                }],
                                ZA: [{
                                    ZAR: {
                                        _from: "1961-02-14"
                                    }
                                }, {
                                    ZAL: {
                                        _tender: "false",
                                        _from: "1985-09-01",
                                        _to: "1995-03-13"
                                    }
                                }],
                                ZM: [{
                                    ZMK: {
                                        _from: "1968-01-16",
                                        _to: "2013-01-01"
                                    }
                                }, {
                                    ZMW: {
                                        _from: "2013-01-01"
                                    }
                                }],
                                ZR: [{
                                    ZRZ: {
                                        _from: "1971-10-27",
                                        _to: "1993-11-01"
                                    }
                                }, {
                                    ZRN: {
                                        _from: "1993-11-01",
                                        _to: "1998-07-31"
                                    }
                                }],
                                ZW: [{
                                    RHD: {
                                        _from: "1970-02-17",
                                        _to: "1980-04-18"
                                    }
                                }, {
                                    ZWD: {
                                        _from: "1980-04-18",
                                        _to: "2008-08-01"
                                    }
                                }, {
                                    ZWR: {
                                        _from: "2008-08-01",
                                        _to: "2009-02-02"
                                    }
                                }, {
                                    ZWL: {
                                        _from: "2009-02-02",
                                        _to: "2009-04-12"
                                    }
                                }, {
                                    USD: {
                                        _from: "2009-04-12"
                                    }
                                }],
                                ZZ: [{
                                    XAG: {
                                        _tender: "false"
                                    }
                                }, {
                                    XAU: {
                                        _tender: "false"
                                    }
                                }, {
                                    XBA: {
                                        _tender: "false"
                                    }
                                }, {
                                    XBB: {
                                        _tender: "false"
                                    }
                                }, {
                                    XBC: {
                                        _tender: "false"
                                    }
                                }, {
                                    XBD: {
                                        _tender: "false"
                                    }
                                }, {
                                    XDR: {
                                        _tender: "false"
                                    }
                                }, {
                                    XPD: {
                                        _tender: "false"
                                    }
                                }, {
                                    XPT: {
                                        _tender: "false"
                                    }
                                }, {
                                    XSU: {
                                        _tender: "false"
                                    }
                                }, {
                                    XTS: {
                                        _tender: "false"
                                    }
                                }, {
                                    XUA: {
                                        _tender: "false"
                                    }
                                }, {
                                    XXX: {
                                        _tender: "false"
                                    }
                                }, {
                                    XRE: {
                                        _tender: "false",
                                        _to: "1999-11-30"
                                    }
                                }, {
                                    XFU: {
                                        _tender: "false",
                                        _to: "2013-11-30"
                                    }
                                }, {
                                    XFO: {
                                        _tender: "false",
                                        _from: "1930-01-01",
                                        _to: "2003-04-01"
                                    }
                                }]
                            }
                        },
                        numberingSystems: {
                            adlm: {
                                _digits: "\ud83a\udd50\ud83a\udd51\ud83a\udd52\ud83a\udd53\ud83a\udd54\ud83a\udd55\ud83a\udd56\ud83a\udd57\ud83a\udd58\ud83a\udd59",
                                _type: "numeric"
                            },
                            ahom: {
                                _digits: "\ud805\udf30\ud805\udf31\ud805\udf32\ud805\udf33\ud805\udf34\ud805\udf35\ud805\udf36\ud805\udf37\ud805\udf38\ud805\udf39",
                                _type: "numeric"
                            },
                            arab: {
                                _digits: "\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669",
                                _type: "numeric"
                            },
                            arabext: {
                                _digits: "\u06f0\u06f1\u06f2\u06f3\u06f4\u06f5\u06f6\u06f7\u06f8\u06f9",
                                _type: "numeric"
                            },
                            armn: {
                                _rules: "armenian-upper",
                                _type: "algorithmic"
                            },
                            armnlow: {
                                _rules: "armenian-lower",
                                _type: "algorithmic"
                            },
                            bali: {
                                _digits: "\u1b50\u1b51\u1b52\u1b53\u1b54\u1b55\u1b56\u1b57\u1b58\u1b59",
                                _type: "numeric"
                            },
                            beng: {
                                _digits: "\u09e6\u09e7\u09e8\u09e9\u09ea\u09eb\u09ec\u09ed\u09ee\u09ef",
                                _type: "numeric"
                            },
                            bhks: {
                                _digits: "\ud807\udc50\ud807\udc51\ud807\udc52\ud807\udc53\ud807\udc54\ud807\udc55\ud807\udc56\ud807\udc57\ud807\udc58\ud807\udc59",
                                _type: "numeric"
                            },
                            brah: {
                                _digits: "\ud804\udc66\ud804\udc67\ud804\udc68\ud804\udc69\ud804\udc6a\ud804\udc6b\ud804\udc6c\ud804\udc6d\ud804\udc6e\ud804\udc6f",
                                _type: "numeric"
                            },
                            cakm: {
                                _digits: "\ud804\udd36\ud804\udd37\ud804\udd38\ud804\udd39\ud804\udd3a\ud804\udd3b\ud804\udd3c\ud804\udd3d\ud804\udd3e\ud804\udd3f",
                                _type: "numeric"
                            },
                            cham: {
                                _digits: "\uaa50\uaa51\uaa52\uaa53\uaa54\uaa55\uaa56\uaa57\uaa58\uaa59",
                                _type: "numeric"
                            },
                            cyrl: {
                                _rules: "cyrillic-lower",
                                _type: "algorithmic"
                            },
                            deva: {
                                _digits: "\u0966\u0967\u0968\u0969\u096a\u096b\u096c\u096d\u096e\u096f",
                                _type: "numeric"
                            },
                            ethi: {
                                _rules: "ethiopic",
                                _type: "algorithmic"
                            },
                            fullwide: {
                                _digits: "\uff10\uff11\uff12\uff13\uff14\uff15\uff16\uff17\uff18\uff19",
                                _type: "numeric"
                            },
                            geor: {
                                _rules: "georgian",
                                _type: "algorithmic"
                            },
                            gong: {
                                _digits: "\ud807\udda0\ud807\udda1\ud807\udda2\ud807\udda3\ud807\udda4\ud807\udda5\ud807\udda6\ud807\udda7\ud807\udda8\ud807\udda9",
                                _type: "numeric"
                            },
                            gonm: {
                                _digits: "\ud807\udd50\ud807\udd51\ud807\udd52\ud807\udd53\ud807\udd54\ud807\udd55\ud807\udd56\ud807\udd57\ud807\udd58\ud807\udd59",
                                _type: "numeric"
                            },
                            grek: {
                                _rules: "greek-upper",
                                _type: "algorithmic"
                            },
                            greklow: {
                                _rules: "greek-lower",
                                _type: "algorithmic"
                            },
                            gujr: {
                                _digits: "\u0ae6\u0ae7\u0ae8\u0ae9\u0aea\u0aeb\u0aec\u0aed\u0aee\u0aef",
                                _type: "numeric"
                            },
                            guru: {
                                _digits: "\u0a66\u0a67\u0a68\u0a69\u0a6a\u0a6b\u0a6c\u0a6d\u0a6e\u0a6f",
                                _type: "numeric"
                            },
                            hanidays: {
                                _rules: "zh/SpelloutRules/spellout-numbering-days",
                                _type: "algorithmic"
                            },
                            hanidec: {
                                _digits: "\u3007\u4e00\u4e8c\u4e09\u56db\u4e94\u516d\u4e03\u516b\u4e5d",
                                _type: "numeric"
                            },
                            hans: {
                                _rules: "zh/SpelloutRules/spellout-cardinal",
                                _type: "algorithmic"
                            },
                            hansfin: {
                                _rules: "zh/SpelloutRules/spellout-cardinal-financial",
                                _type: "algorithmic"
                            },
                            hant: {
                                _rules: "zh_Hant/SpelloutRules/spellout-cardinal",
                                _type: "algorithmic"
                            },
                            hantfin: {
                                _rules: "zh_Hant/SpelloutRules/spellout-cardinal-financial",
                                _type: "algorithmic"
                            },
                            hebr: {
                                _rules: "hebrew",
                                _type: "algorithmic"
                            },
                            hmng: {
                                _digits: "\ud81a\udf50\ud81a\udf51\ud81a\udf52\ud81a\udf53\ud81a\udf54\ud81a\udf55\ud81a\udf56\ud81a\udf57\ud81a\udf58\ud81a\udf59",
                                _type: "numeric"
                            },
                            hmnp: {
                                _digits: "\ud838\udd40\ud838\udd41\ud838\udd42\ud838\udd43\ud838\udd44\ud838\udd45\ud838\udd46\ud838\udd47\ud838\udd48\ud838\udd49",
                                _type: "numeric"
                            },
                            java: {
                                _digits: "\ua9d0\ua9d1\ua9d2\ua9d3\ua9d4\ua9d5\ua9d6\ua9d7\ua9d8\ua9d9",
                                _type: "numeric"
                            },
                            jpan: {
                                _rules: "ja/SpelloutRules/spellout-cardinal",
                                _type: "algorithmic"
                            },
                            jpanfin: {
                                _rules: "ja/SpelloutRules/spellout-cardinal-financial",
                                _type: "algorithmic"
                            },
                            jpanyear: {
                                _rules: "ja/SpelloutRules/spellout-numbering-year-latn",
                                _type: "algorithmic"
                            },
                            kali: {
                                _digits: "\ua900\ua901\ua902\ua903\ua904\ua905\ua906\ua907\ua908\ua909",
                                _type: "numeric"
                            },
                            khmr: {
                                _digits: "\u17e0\u17e1\u17e2\u17e3\u17e4\u17e5\u17e6\u17e7\u17e8\u17e9",
                                _type: "numeric"
                            },
                            knda: {
                                _digits: "\u0ce6\u0ce7\u0ce8\u0ce9\u0cea\u0ceb\u0cec\u0ced\u0cee\u0cef",
                                _type: "numeric"
                            },
                            lana: {
                                _digits: "\u1a80\u1a81\u1a82\u1a83\u1a84\u1a85\u1a86\u1a87\u1a88\u1a89",
                                _type: "numeric"
                            },
                            lanatham: {
                                _digits: "\u1a90\u1a91\u1a92\u1a93\u1a94\u1a95\u1a96\u1a97\u1a98\u1a99",
                                _type: "numeric"
                            },
                            laoo: {
                                _digits: "\u0ed0\u0ed1\u0ed2\u0ed3\u0ed4\u0ed5\u0ed6\u0ed7\u0ed8\u0ed9",
                                _type: "numeric"
                            },
                            latn: {
                                _digits: "0123456789",
                                _type: "numeric"
                            },
                            lepc: {
                                _digits: "\u1c40\u1c41\u1c42\u1c43\u1c44\u1c45\u1c46\u1c47\u1c48\u1c49",
                                _type: "numeric"
                            },
                            limb: {
                                _digits: "\u1946\u1947\u1948\u1949\u194a\u194b\u194c\u194d\u194e\u194f",
                                _type: "numeric"
                            },
                            mathbold: {
                                _digits: "\ud835\udfce\ud835\udfcf\ud835\udfd0\ud835\udfd1\ud835\udfd2\ud835\udfd3\ud835\udfd4\ud835\udfd5\ud835\udfd6\ud835\udfd7",
                                _type: "numeric"
                            },
                            mathdbl: {
                                _digits: "\ud835\udfd8\ud835\udfd9\ud835\udfda\ud835\udfdb\ud835\udfdc\ud835\udfdd\ud835\udfde\ud835\udfdf\ud835\udfe0\ud835\udfe1",
                                _type: "numeric"
                            },
                            mathmono: {
                                _digits: "\ud835\udff6\ud835\udff7\ud835\udff8\ud835\udff9\ud835\udffa\ud835\udffb\ud835\udffc\ud835\udffd\ud835\udffe\ud835\udfff",
                                _type: "numeric"
                            },
                            mathsanb: {
                                _digits: "\ud835\udfec\ud835\udfed\ud835\udfee\ud835\udfef\ud835\udff0\ud835\udff1\ud835\udff2\ud835\udff3\ud835\udff4\ud835\udff5",
                                _type: "numeric"
                            },
                            mathsans: {
                                _digits: "\ud835\udfe2\ud835\udfe3\ud835\udfe4\ud835\udfe5\ud835\udfe6\ud835\udfe7\ud835\udfe8\ud835\udfe9\ud835\udfea\ud835\udfeb",
                                _type: "numeric"
                            },
                            mlym: {
                                _digits: "\u0d66\u0d67\u0d68\u0d69\u0d6a\u0d6b\u0d6c\u0d6d\u0d6e\u0d6f",
                                _type: "numeric"
                            },
                            modi: {
                                _digits: "\ud805\ude50\ud805\ude51\ud805\ude52\ud805\ude53\ud805\ude54\ud805\ude55\ud805\ude56\ud805\ude57\ud805\ude58\ud805\ude59",
                                _type: "numeric"
                            },
                            mong: {
                                _digits: "\u1810\u1811\u1812\u1813\u1814\u1815\u1816\u1817\u1818\u1819",
                                _type: "numeric"
                            },
                            mroo: {
                                _digits: "\ud81a\ude60\ud81a\ude61\ud81a\ude62\ud81a\ude63\ud81a\ude64\ud81a\ude65\ud81a\ude66\ud81a\ude67\ud81a\ude68\ud81a\ude69",
                                _type: "numeric"
                            },
                            mtei: {
                                _digits: "\uabf0\uabf1\uabf2\uabf3\uabf4\uabf5\uabf6\uabf7\uabf8\uabf9",
                                _type: "numeric"
                            },
                            mymr: {
                                _digits: "\u1040\u1041\u1042\u1043\u1044\u1045\u1046\u1047\u1048\u1049",
                                _type: "numeric"
                            },
                            mymrshan: {
                                _digits: "\u1090\u1091\u1092\u1093\u1094\u1095\u1096\u1097\u1098\u1099",
                                _type: "numeric"
                            },
                            mymrtlng: {
                                _digits: "\ua9f0\ua9f1\ua9f2\ua9f3\ua9f4\ua9f5\ua9f6\ua9f7\ua9f8\ua9f9",
                                _type: "numeric"
                            },
                            newa: {
                                _digits: "\ud805\udc50\ud805\udc51\ud805\udc52\ud805\udc53\ud805\udc54\ud805\udc55\ud805\udc56\ud805\udc57\ud805\udc58\ud805\udc59",
                                _type: "numeric"
                            },
                            nkoo: {
                                _digits: "\u07c0\u07c1\u07c2\u07c3\u07c4\u07c5\u07c6\u07c7\u07c8\u07c9",
                                _type: "numeric"
                            },
                            olck: {
                                _digits: "\u1c50\u1c51\u1c52\u1c53\u1c54\u1c55\u1c56\u1c57\u1c58\u1c59",
                                _type: "numeric"
                            },
                            orya: {
                                _digits: "\u0b66\u0b67\u0b68\u0b69\u0b6a\u0b6b\u0b6c\u0b6d\u0b6e\u0b6f",
                                _type: "numeric"
                            },
                            osma: {
                                _digits: "\ud801\udca0\ud801\udca1\ud801\udca2\ud801\udca3\ud801\udca4\ud801\udca5\ud801\udca6\ud801\udca7\ud801\udca8\ud801\udca9",
                                _type: "numeric"
                            },
                            rohg: {
                                _digits: "\ud803\udd30\ud803\udd31\ud803\udd32\ud803\udd33\ud803\udd34\ud803\udd35\ud803\udd36\ud803\udd37\ud803\udd38\ud803\udd39",
                                _type: "numeric"
                            },
                            roman: {
                                _rules: "roman-upper",
                                _type: "algorithmic"
                            },
                            romanlow: {
                                _rules: "roman-lower",
                                _type: "algorithmic"
                            },
                            saur: {
                                _digits: "\ua8d0\ua8d1\ua8d2\ua8d3\ua8d4\ua8d5\ua8d6\ua8d7\ua8d8\ua8d9",
                                _type: "numeric"
                            },
                            shrd: {
                                _digits: "\ud804\uddd0\ud804\uddd1\ud804\uddd2\ud804\uddd3\ud804\uddd4\ud804\uddd5\ud804\uddd6\ud804\uddd7\ud804\uddd8\ud804\uddd9",
                                _type: "numeric"
                            },
                            sind: {
                                _digits: "\ud804\udef0\ud804\udef1\ud804\udef2\ud804\udef3\ud804\udef4\ud804\udef5\ud804\udef6\ud804\udef7\ud804\udef8\ud804\udef9",
                                _type: "numeric"
                            },
                            sinh: {
                                _digits: "\u0de6\u0de7\u0de8\u0de9\u0dea\u0deb\u0dec\u0ded\u0dee\u0def",
                                _type: "numeric"
                            },
                            sora: {
                                _digits: "\ud804\udcf0\ud804\udcf1\ud804\udcf2\ud804\udcf3\ud804\udcf4\ud804\udcf5\ud804\udcf6\ud804\udcf7\ud804\udcf8\ud804\udcf9",
                                _type: "numeric"
                            },
                            sund: {
                                _digits: "\u1bb0\u1bb1\u1bb2\u1bb3\u1bb4\u1bb5\u1bb6\u1bb7\u1bb8\u1bb9",
                                _type: "numeric"
                            },
                            takr: {
                                _digits: "\ud805\udec0\ud805\udec1\ud805\udec2\ud805\udec3\ud805\udec4\ud805\udec5\ud805\udec6\ud805\udec7\ud805\udec8\ud805\udec9",
                                _type: "numeric"
                            },
                            talu: {
                                _digits: "\u19d0\u19d1\u19d2\u19d3\u19d4\u19d5\u19d6\u19d7\u19d8\u19d9",
                                _type: "numeric"
                            },
                            taml: {
                                _rules: "tamil",
                                _type: "algorithmic"
                            },
                            tamldec: {
                                _digits: "\u0be6\u0be7\u0be8\u0be9\u0bea\u0beb\u0bec\u0bed\u0bee\u0bef",
                                _type: "numeric"
                            },
                            telu: {
                                _digits: "\u0c66\u0c67\u0c68\u0c69\u0c6a\u0c6b\u0c6c\u0c6d\u0c6e\u0c6f",
                                _type: "numeric"
                            },
                            thai: {
                                _digits: "\u0e50\u0e51\u0e52\u0e53\u0e54\u0e55\u0e56\u0e57\u0e58\u0e59",
                                _type: "numeric"
                            },
                            tibt: {
                                _digits: "\u0f20\u0f21\u0f22\u0f23\u0f24\u0f25\u0f26\u0f27\u0f28\u0f29",
                                _type: "numeric"
                            },
                            tirh: {
                                _digits: "\ud805\udcd0\ud805\udcd1\ud805\udcd2\ud805\udcd3\ud805\udcd4\ud805\udcd5\ud805\udcd6\ud805\udcd7\ud805\udcd8\ud805\udcd9",
                                _type: "numeric"
                            },
                            vaii: {
                                _digits: "\ua620\ua621\ua622\ua623\ua624\ua625\ua626\ua627\ua628\ua629",
                                _type: "numeric"
                            },
                            wara: {
                                _digits: "\ud806\udce0\ud806\udce1\ud806\udce2\ud806\udce3\ud806\udce4\ud806\udce5\ud806\udce6\ud806\udce7\ud806\udce8\ud806\udce9",
                                _type: "numeric"
                            },
                            wcho: {
                                _digits: "\ud838\udef0\ud838\udef1\ud838\udef2\ud838\udef3\ud838\udef4\ud838\udef5\ud838\udef6\ud838\udef7\ud838\udef8\ud838\udef9",
                                _type: "numeric"
                            }
                        }
                    }
                }
            },
        84109:
            /*!******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/core/localization/core.js ***!
              \******************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _dependency_injector = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/dependency_injector */ 89656));
                var _parent_locales = _interopRequireDefault(__webpack_require__( /*! ./cldr-data/parent_locales */ 85703));
                var _parentLocale = _interopRequireDefault(__webpack_require__( /*! ./parentLocale */ 55088));

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                exports.default = (0, _dependency_injector.default)({
                    locale: (() => {
                        let currentLocale = "en";
                        return locale => {
                            if (!locale) {
                                return currentLocale
                            }
                            currentLocale = locale
                        }
                    })(),
                    getValueByClosestLocale: function(getter) {
                        let locale = this.locale();
                        let value = getter(locale);
                        let isRootLocale;
                        while (!value && !isRootLocale) {
                            locale = (0, _parentLocale.default)(_parent_locales.default, locale);
                            if (locale) {
                                value = getter(locale)
                            } else {
                                isRootLocale = true
                            }
                        }
                        if (void 0 === value && "en" !== locale) {
                            return getter("en")
                        }
                        return value
                    }
                });
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        17333:
            /*!**********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/core/localization/currency.js ***!
              \**********************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576);
                exports.default = {
                    _formatNumberCore: function(value, format, formatConfig) {
                        if ("currency" === format) {
                            formatConfig.precision = formatConfig.precision || 0;
                            let result = this.format(value, (0, _extend.extend)({}, formatConfig, {
                                type: "fixedpoint"
                            }));
                            const currencyPart = this.getCurrencySymbol().symbol.replace(/\$/g, "$$$$");
                            result = result.replace(/^(\D*)(\d.*)/, "$1" + currencyPart + "$2");
                            return result
                        }
                        return this.callBase.apply(this, arguments)
                    },
                    getCurrencySymbol: function() {
                        return {
                            symbol: "$"
                        }
                    },
                    getOpenXmlCurrencyFormat: function() {
                        return "$#,##0{0}_);\\($#,##0{0}\\)"
                    }
                };
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        38662:
            /*!******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/core/localization/date.js ***!
              \******************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _dependency_injector = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/dependency_injector */ 89656));
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528);
                var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274);
                var _errors = _interopRequireDefault(__webpack_require__( /*! ../../../core/errors */ 87129));
                var _date = __webpack_require__( /*! ./ldml/date.formatter */ 86670);
                var _date2 = __webpack_require__( /*! ./ldml/date.format */ 83445);
                var _date3 = __webpack_require__( /*! ./ldml/date.parser */ 46981);
                var _default_date_names = _interopRequireDefault(__webpack_require__( /*! ./default_date_names */ 81179));
                var _first_day_of_week_data = _interopRequireDefault(__webpack_require__( /*! ./cldr-data/first_day_of_week_data */ 29908));
                var _core = _interopRequireDefault(__webpack_require__( /*! ./core */ 84109));
                var _number = _interopRequireDefault(__webpack_require__( /*! ./number */ 52771));
                var _date4 = _interopRequireDefault(__webpack_require__( /*! ./intl/date */ 21840));

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const hasIntl = "undefined" !== typeof Intl;
                const FORMATS_TO_PATTERN_MAP = {
                    shortdate: "M/d/y",
                    shorttime: "h:mm a",
                    longdate: "EEEE, MMMM d, y",
                    longtime: "h:mm:ss a",
                    monthandday: "MMMM d",
                    monthandyear: "MMMM y",
                    quarterandyear: "QQQ y",
                    day: "d",
                    year: "y",
                    shortdateshorttime: "M/d/y, h:mm a",
                    longdatelongtime: "EEEE, MMMM d, y, h:mm:ss a",
                    month: "LLLL",
                    shortyear: "yy",
                    dayofweek: "EEEE",
                    quarter: "QQQ",
                    hour: "HH",
                    minute: "mm",
                    second: "ss",
                    millisecond: "SSS",
                    "datetime-local": "yyyy-MM-ddTHH':'mm':'ss"
                };
                const possiblePartPatterns = {
                    year: ["y", "yy", "yyyy"],
                    day: ["d", "dd"],
                    month: ["M", "MM", "MMM", "MMMM"],
                    hours: ["H", "HH", "h", "hh", "ah"],
                    minutes: ["m", "mm"],
                    seconds: ["s", "ss"],
                    milliseconds: ["S", "SS", "SSS"]
                };
                const dateLocalization = (0, _dependency_injector.default)({
                    engine: function() {
                        return "base"
                    },
                    _getPatternByFormat: function(format) {
                        return FORMATS_TO_PATTERN_MAP[format.toLowerCase()]
                    },
                    _expandPattern: function(pattern) {
                        return this._getPatternByFormat(pattern) || pattern
                    },
                    formatUsesMonthName: function(format) {
                        return -1 !== this._expandPattern(format).indexOf("MMMM")
                    },
                    formatUsesDayName: function(format) {
                        return -1 !== this._expandPattern(format).indexOf("EEEE")
                    },
                    getFormatParts: function(format) {
                        const pattern = this._getPatternByFormat(format) || format;
                        const result = [];
                        (0, _iterator.each)(pattern.split(/\W+/), ((_, formatPart) => {
                            (0, _iterator.each)(possiblePartPatterns, ((partName, possiblePatterns) => {
                                if (possiblePatterns.includes(formatPart)) {
                                    result.push(partName)
                                }
                            }))
                        }));
                        return result
                    },
                    getMonthNames: function(format) {
                        return _default_date_names.default.getMonthNames(format)
                    },
                    getDayNames: function(format) {
                        return _default_date_names.default.getDayNames(format)
                    },
                    getQuarterNames: function(format) {
                        return _default_date_names.default.getQuarterNames(format)
                    },
                    getPeriodNames: function(format) {
                        return _default_date_names.default.getPeriodNames(format)
                    },
                    getTimeSeparator: function() {
                        return ":"
                    },
                    is24HourFormat: function(format) {
                        const amTime = new Date(2017, 0, 20, 11, 0, 0, 0);
                        const pmTime = new Date(2017, 0, 20, 23, 0, 0, 0);
                        const amTimeFormatted = this.format(amTime, format);
                        const pmTimeFormatted = this.format(pmTime, format);
                        for (let i = 0; i < amTimeFormatted.length; i++) {
                            if (amTimeFormatted[i] !== pmTimeFormatted[i]) {
                                return !isNaN(parseInt(amTimeFormatted[i]))
                            }
                        }
                    },
                    format: function(date, format) {
                        if (!date) {
                            return
                        }
                        if (!format) {
                            return date
                        }
                        let formatter;
                        if ("function" === typeof format) {
                            formatter = format
                        } else if (format.formatter) {
                            formatter = format.formatter
                        } else {
                            format = format.type || format;
                            if ((0, _type.isString)(format)) {
                                format = FORMATS_TO_PATTERN_MAP[format.toLowerCase()] || format;
                                return _number.default.convertDigits((0, _date.getFormatter)(format, this)(date))
                            }
                        }
                        if (!formatter) {
                            return
                        }
                        return formatter(date)
                    },
                    parse: function(text, format) {
                        const that = this;
                        let ldmlFormat;
                        let formatter;
                        if (!text) {
                            return
                        }
                        if (!format) {
                            return this.parse(text, "shortdate")
                        }
                        if (format.parser) {
                            return format.parser(text)
                        }
                        if ("string" === typeof format && !FORMATS_TO_PATTERN_MAP[format.toLowerCase()]) {
                            ldmlFormat = format
                        } else {
                            formatter = value => {
                                const text = that.format(value, format);
                                return _number.default.convertDigits(text, true)
                            };
                            try {
                                ldmlFormat = (0, _date2.getFormat)(formatter)
                            } catch (e) {}
                        }
                        if (ldmlFormat) {
                            text = _number.default.convertDigits(text, true);
                            return (0, _date3.getParser)(ldmlFormat, this)(text)
                        }
                        _errors.default.log("W0012");
                        const result = new Date(text);
                        if (!result || isNaN(result.getTime())) {
                            return
                        }
                        return result
                    },
                    firstDayOfWeekIndex: function() {
                        const index = _core.default.getValueByClosestLocale((locale => _first_day_of_week_data.default[locale]));
                        return void 0 === index ? 0 : index
                    }
                });
                if (hasIntl) {
                    dateLocalization.inject(_date4.default)
                }
                exports.default = dateLocalization;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        81179:
            /*!********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/core/localization/default_date_names.js ***!
              \********************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274);
                const MONTHS = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
                const DAYS = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
                const PERIODS = ["AM", "PM"];
                const QUARTERS = ["Q1", "Q2", "Q3", "Q4"];
                const cutCaptions = (captions, format) => {
                    const lengthByFormat = {
                        abbreviated: 3,
                        short: 2,
                        narrow: 1
                    };
                    return (0, _iterator.map)(captions, (caption => caption.substr(0, lengthByFormat[format])))
                };
                exports.default = {
                    getMonthNames: function(format) {
                        return cutCaptions(MONTHS, format)
                    },
                    getDayNames: function(format) {
                        return cutCaptions(DAYS, format)
                    },
                    getQuarterNames: function(format) {
                        return QUARTERS
                    },
                    getPeriodNames: function(format) {
                        return PERIODS
                    }
                };
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        62788:
            /*!******************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/core/localization/default_messages.js ***!
              \******************************************************************************************/
            function(__unused_webpack_module, exports) {
                exports.defaultMessages = void 0;
                // !!! AUTO-GENERATED FILE, DO NOT EDIT
                exports.defaultMessages = {
                    en: {
                        Yes: "Yes",
                        No: "No",
                        Cancel: "Cancel",
                        CheckState: "Check state",
                        Close: "Close",
                        Clear: "Clear",
                        Done: "Done",
                        Loading: "Loading...",
                        Select: "Select...",
                        Search: "Search",
                        Back: "Back",
                        OK: "OK",
                        Today: "Today",
                        Yesterday: "Yesterday",
                        "dxCollectionWidget-noDataText": "No data to display",
                        "dxDropDownEditor-selectLabel": "Select",
                        "validation-required": "Required",
                        "validation-required-formatted": "{0} is required",
                        "validation-numeric": "Value must be a number",
                        "validation-numeric-formatted": "{0} must be a number",
                        "validation-range": "Value is out of range",
                        "validation-range-formatted": "{0} is out of range",
                        "validation-stringLength": "The length of the value is not correct",
                        "validation-stringLength-formatted": "The length of {0} is not correct",
                        "validation-custom": "Value is invalid",
                        "validation-custom-formatted": "{0} is invalid",
                        "validation-async": "Value is invalid",
                        "validation-async-formatted": "{0} is invalid",
                        "validation-compare": "Values do not match",
                        "validation-compare-formatted": "{0} does not match",
                        "validation-pattern": "Value does not match pattern",
                        "validation-pattern-formatted": "{0} does not match pattern",
                        "validation-email": "Email is invalid",
                        "validation-email-formatted": "{0} is invalid",
                        "validation-mask": "Value is invalid",
                        "dxLookup-searchPlaceholder": "Minimum character number: {0}",
                        "dxList-pullingDownText": "Pull down to refresh...",
                        "dxList-pulledDownText": "Release to refresh...",
                        "dxList-refreshingText": "Refreshing...",
                        "dxList-pageLoadingText": "Loading...",
                        "dxList-nextButtonText": "More",
                        "dxList-selectAll": "Select All",
                        "dxList-listAriaLabel": "Items",
                        "dxList-listAriaLabel-deletable": "Deletable items",
                        "dxListEditDecorator-delete": "Delete",
                        "dxListEditDecorator-more": "More",
                        "dxList-selectAll-indeterminate": "Half-checked",
                        "dxList-selectAll-checked": "Checked",
                        "dxList-selectAll-notChecked": "Not checked",
                        "dxList-ariaRoleDescription": "List",
                        "dxList-listAriaLabel-itemContent": "List item content",
                        "dxScrollView-pullingDownText": "Pull down to refresh...",
                        "dxScrollView-pulledDownText": "Release to refresh...",
                        "dxScrollView-refreshingText": "Refreshing...",
                        "dxScrollView-reachBottomText": "Loading...",
                        "dxDateBox-simulatedDataPickerTitleTime": "Select time",
                        "dxDateBox-simulatedDataPickerTitleDate": "Select date",
                        "dxDateBox-simulatedDataPickerTitleDateTime": "Select date and time",
                        "dxDateBox-validation-datetime": "Value must be a date or time",
                        "dxDateRangeBox-invalidStartDateMessage": "Start value must be a date",
                        "dxDateRangeBox-invalidEndDateMessage": "End value must be a date",
                        "dxDateRangeBox-startDateOutOfRangeMessage": "Start date is out of range",
                        "dxDateRangeBox-endDateOutOfRangeMessage": "End date is out of range",
                        "dxDateRangeBox-startDateLabel": "Start Date",
                        "dxDateRangeBox-endDateLabel": "End Date",
                        "dxFileUploader-selectFile": "Select a file",
                        "dxFileUploader-dropFile": "or Drop a file here",
                        "dxFileUploader-bytes": "bytes",
                        "dxFileUploader-kb": "KB",
                        "dxFileUploader-Mb": "MB",
                        "dxFileUploader-Gb": "GB",
                        "dxFileUploader-upload": "Upload",
                        "dxFileUploader-uploaded": "Uploaded",
                        "dxFileUploader-readyToUpload": "Ready to upload",
                        "dxFileUploader-uploadAbortedMessage": "Upload cancelled",
                        "dxFileUploader-uploadFailedMessage": "Upload failed",
                        "dxFileUploader-invalidFileExtension": "File type is not allowed",
                        "dxFileUploader-invalidMaxFileSize": "File is too large",
                        "dxFileUploader-invalidMinFileSize": "File is too small",
                        "dxRangeSlider-ariaFrom": "From",
                        "dxRangeSlider-ariaTill": "Till",
                        "dxSwitch-switchedOnText": "ON",
                        "dxSwitch-switchedOffText": "OFF",
                        "dxForm-optionalMark": "optional",
                        "dxForm-requiredMessage": "{0} is required",
                        "dxNumberBox-invalidValueMessage": "Value must be a number",
                        "dxNumberBox-noDataText": "No data",
                        "dxDataGrid-emptyHeaderWithColumnChooserText": "Use {0} to display columns",
                        "dxDataGrid-emptyHeaderWithGroupPanelText": "Drag a column from the group panel here",
                        "dxDataGrid-emptyHeaderWithColumnChooserAndGroupPanelText": "Use {0} or drag a column from the group panel",
                        "dxDataGrid-emptyHeaderColumnChooserText": "column chooser",
                        "dxDataGrid-columnChooserTitle": "Column Chooser",
                        "dxDataGrid-columnChooserEmptyText": "Drag a column here to hide it",
                        "dxDataGrid-groupContinuesMessage": "Continues on the next page",
                        "dxDataGrid-groupContinuedMessage": "Continued from the previous page",
                        "dxDataGrid-groupHeaderText": "Group by This Column",
                        "dxDataGrid-ungroupHeaderText": "Ungroup",
                        "dxDataGrid-ungroupAllText": "Ungroup All",
                        "dxDataGrid-editingEditRow": "Edit",
                        "dxDataGrid-editingSaveRowChanges": "Save",
                        "dxDataGrid-editingCancelRowChanges": "Cancel",
                        "dxDataGrid-editingDeleteRow": "Delete",
                        "dxDataGrid-editingUndeleteRow": "Undelete",
                        "dxDataGrid-editingConfirmDeleteMessage": "Are you sure you want to delete this record?",
                        "dxDataGrid-validationCancelChanges": "Cancel changes",
                        "dxDataGrid-groupPanelEmptyText": "Drag a column header here to group by that column",
                        "dxDataGrid-noDataText": "No data",
                        "dxDataGrid-searchPanelPlaceholder": "Search...",
                        "dxDataGrid-filterRowShowAllText": "(All)",
                        "dxDataGrid-filterRowResetOperationText": "Reset",
                        "dxDataGrid-filterRowOperationEquals": "Equals",
                        "dxDataGrid-filterRowOperationNotEquals": "Does not equal",
                        "dxDataGrid-filterRowOperationLess": "Less than",
                        "dxDataGrid-filterRowOperationLessOrEquals": "Less than or equal to",
                        "dxDataGrid-filterRowOperationGreater": "Greater than",
                        "dxDataGrid-filterRowOperationGreaterOrEquals": "Greater than or equal to",
                        "dxDataGrid-filterRowOperationStartsWith": "Starts with",
                        "dxDataGrid-filterRowOperationContains": "Contains",
                        "dxDataGrid-filterRowOperationNotContains": "Does not contain",
                        "dxDataGrid-filterRowOperationEndsWith": "Ends with",
                        "dxDataGrid-filterRowOperationBetween": "Between",
                        "dxDataGrid-filterRowOperationBetweenStartText": "Start",
                        "dxDataGrid-filterRowOperationBetweenEndText": "End",
                        "dxDataGrid-ariaSearchBox": "Search box",
                        "dxDataGrid-applyFilterText": "Apply filter",
                        "dxDataGrid-trueText": "true",
                        "dxDataGrid-falseText": "false",
                        "dxDataGrid-sortingAscendingText": "Sort Ascending",
                        "dxDataGrid-sortingDescendingText": "Sort Descending",
                        "dxDataGrid-sortingClearText": "Clear Sorting",
                        "dxDataGrid-ariaNotSortedColumn": "Not sorted column",
                        "dxDataGrid-ariaSortedAscendingColumn": "Column sorted in ascending order",
                        "dxDataGrid-ariaSortedDescendingColumn": "Column sorted in descending order",
                        "dxDataGrid-ariaSortIndex": "Sort index {0}",
                        "dxDataGrid-editingSaveAllChanges": "Save changes",
                        "dxDataGrid-editingCancelAllChanges": "Discard changes",
                        "dxDataGrid-editingAddRow": "Add a row",
                        "dxDataGrid-summaryMin": "Min: {0}",
                        "dxDataGrid-summaryMinOtherColumn": "Min of {1} is {0}",
                        "dxDataGrid-summaryMax": "Max: {0}",
                        "dxDataGrid-summaryMaxOtherColumn": "Max of {1} is {0}",
                        "dxDataGrid-summaryAvg": "Avg: {0}",
                        "dxDataGrid-summaryAvgOtherColumn": "Avg of {1} is {0}",
                        "dxDataGrid-summarySum": "Sum: {0}",
                        "dxDataGrid-summarySumOtherColumn": "Sum of {1} is {0}",
                        "dxDataGrid-summaryCount": "Count: {0}",
                        "dxDataGrid-columnFixingFix": "Set Fixed Position",
                        "dxDataGrid-columnFixingUnfix": "Unfix",
                        "dxDataGrid-columnFixingLeftPosition": "Left",
                        "dxDataGrid-columnFixingRightPosition": "Right",
                        "dxDataGrid-columnFixingStickyPosition": "Sticky",
                        "dxDataGrid-exportTo": "Export",
                        "dxDataGrid-exportToExcel": "Export to Excel file",
                        "dxDataGrid-exporting": "Exporting...",
                        "dxDataGrid-excelFormat": "Excel file",
                        "dxDataGrid-selectedRows": "Selected rows",
                        "dxDataGrid-exportSelectedRows": "Export selected rows to {0}",
                        "dxDataGrid-exportAll": "Export all data to {0}",
                        "dxDataGrid-headerFilterLabel": "Filter options",
                        "dxDataGrid-headerFilterIndicatorLabel": "Show filter options for column '{0}'",
                        "dxDataGrid-headerFilterEmptyValue": "(Blanks)",
                        "dxDataGrid-headerFilterOK": "OK",
                        "dxDataGrid-headerFilterCancel": "Cancel",
                        "dxDataGrid-ariaAdaptiveCollapse": "Hide additional data",
                        "dxDataGrid-ariaAdaptiveExpand": "Display additional data",
                        "dxDataGrid-ariaColumn": "Column",
                        "dxDataGrid-ariaColumnHeader": "Column header",
                        "dxDataGrid-ariaValue": "Value",
                        "dxDataGrid-ariaError": "Error",
                        "dxDataGrid-ariaRevertButton": "Press Escape to discard the changes",
                        "dxDataGrid-ariaFilterCell": "Filter cell",
                        "dxDataGrid-ariaCollapse": "Collapse",
                        "dxDataGrid-ariaModifiedCell": "Modified",
                        "dxDataGrid-ariaDeletedCell": "Deleted",
                        "dxDataGrid-ariaEditableCell": "Editable",
                        "dxDataGrid-ariaExpand": "Expand",
                        "dxDataGrid-ariaCollapsedRow": "Collapsed row",
                        "dxDataGrid-ariaExpandedRow": "Expanded row",
                        "dxDataGrid-ariaDataGrid": "Data grid with {0} rows and {1} columns",
                        "dxDataGrid-ariaSearchInGrid": "Search in the data grid",
                        "dxDataGrid-ariaSelectAll": "Select all",
                        "dxDataGrid-ariaSelectRow": "Select row",
                        "dxDataGrid-ariaToolbar": "Data grid toolbar",
                        "dxDataGrid-ariaEditForm": "Edit form",
                        "dxDataGrid-filterBuilderPopupTitle": "Filter Builder",
                        "dxDataGrid-filterPanelCreateFilter": "Create Filter",
                        "dxDataGrid-filterPanelClearFilter": "Clear",
                        "dxDataGrid-filterPanelFilterEnabledHint": "Enable the filter",
                        "dxDataGrid-masterDetail": "Cell with details",
                        "dxDataGrid-moveColumnToTheRight": "Move to the right",
                        "dxDataGrid-moveColumnToTheLeft": "Move to the left",
                        "dxTreeList-ariaTreeList": "Tree list with {0} rows and {1} columns",
                        "dxTreeList-ariaExpandableInstruction": "Press Ctrl + right arrow to expand the focused node and Ctrl + left arrow to collapse it",
                        "dxTreeList-ariaSearchInGrid": "Search in the tree list",
                        "dxTreeList-ariaToolbar": "Tree list toolbar",
                        "dxTreeList-editingAddRowToNode": "Add",
                        "dxPager-infoText": "Page {0} of {1} ({2} items)",
                        "dxPager-pagesCountText": "of",
                        "dxPager-pageSize": "Items per page: {0}",
                        "dxPager-pageSizesAllText": "All",
                        "dxPager-page": "Page {0}",
                        "dxPager-prevPage": "Previous page",
                        "dxPager-nextPage": "Next page",
                        "dxPager-ariaLabel": "Page navigation",
                        "dxPager-ariaPageSize": "Page size",
                        "dxPager-ariaPageNumber": "Page number",
                        "dxPagination-infoText": "Page {0} of {1} ({2} items)",
                        "dxPagination-pagesCountText": "of",
                        "dxPagination-pageSize": "Items per page: {0}",
                        "dxPagination-pageSizesAllText": "All",
                        "dxPagination-page": "Page {0}",
                        "dxPagination-prevPage": "Previous page",
                        "dxPagination-nextPage": "Next page",
                        "dxPagination-ariaLabel": "Page navigation",
                        "dxPagination-ariaPageSize": "Page size",
                        "dxPagination-ariaPageNumber": "Page number",
                        "dxPivotGrid-grandTotal": "Grand Total",
                        "dxPivotGrid-total": "{0} Total",
                        "dxPivotGrid-fieldChooserTitle": "Field Chooser",
                        "dxPivotGrid-showFieldChooser": "Show Field Chooser",
                        "dxPivotGrid-expandAll": "Expand All",
                        "dxPivotGrid-collapseAll": "Collapse All",
                        "dxPivotGrid-sortColumnBySummary": 'Sort "{0}" by This Column',
                        "dxPivotGrid-sortRowBySummary": 'Sort "{0}" by This Row',
                        "dxPivotGrid-removeAllSorting": "Remove All Sorting",
                        "dxPivotGrid-dataNotAvailable": "N/A",
                        "dxPivotGrid-rowFields": "Row Fields",
                        "dxPivotGrid-columnFields": "Column Fields",
                        "dxPivotGrid-dataFields": "Data Fields",
                        "dxPivotGrid-filterFields": "Filter Fields",
                        "dxPivotGrid-allFields": "All Fields",
                        "dxPivotGrid-columnFieldArea": "Drop Column Fields Here",
                        "dxPivotGrid-dataFieldArea": "Drop Data Fields Here",
                        "dxPivotGrid-rowFieldArea": "Drop Row Fields Here",
                        "dxPivotGrid-filterFieldArea": "Drop Filter Fields Here",
                        "dxScheduler-dateRange": "from {0} to {1}",
                        "dxScheduler-ariaLabel": "Scheduler. {0} view: {1} with {2} appointments",
                        "dxScheduler-ariaLabel-currentIndicator-present": "The current time indicator is visible in the view",
                        "dxScheduler-ariaLabel-currentIndicator-not-present": "The current time indicator is not visible on the screen",
                        "dxScheduler-appointmentAriaLabel-group": "Group: {0}",
                        "dxScheduler-appointmentAriaLabel-recurring": "Recurring appointment",
                        "dxScheduler-appointmentListAriaLabel": "Appointment list",
                        "dxScheduler-editorLabelTitle": "Subject",
                        "dxScheduler-editorLabelStartDate": "Start Date",
                        "dxScheduler-editorLabelEndDate": "End Date",
                        "dxScheduler-editorLabelDescription": "Description",
                        "dxScheduler-editorLabelRecurrence": "Repeat",
                        "dxScheduler-navigationToday": "Today",
                        "dxScheduler-navigationPrevious": "Previous page",
                        "dxScheduler-navigationNext": "Next page",
                        "dxScheduler-openAppointment": "Open appointment",
                        "dxScheduler-recurrenceNever": "Never",
                        "dxScheduler-recurrenceMinutely": "Every minute",
                        "dxScheduler-recurrenceHourly": "Hourly",
                        "dxScheduler-recurrenceDaily": "Daily",
                        "dxScheduler-recurrenceWeekly": "Weekly",
                        "dxScheduler-recurrenceMonthly": "Monthly",
                        "dxScheduler-recurrenceYearly": "Yearly",
                        "dxScheduler-recurrenceRepeatEvery": "Repeat Every",
                        "dxScheduler-recurrenceRepeatOn": "Repeat On",
                        "dxScheduler-recurrenceEnd": "End repeat",
                        "dxScheduler-recurrenceAfter": "After",
                        "dxScheduler-recurrenceOn": "On",
                        "dxScheduler-recurrenceUntilDateLabel": "Date when repeat ends",
                        "dxScheduler-recurrenceOccurrenceLabel": "Number of occurrences",
                        "dxScheduler-recurrenceRepeatMinutely": "minute(s)",
                        "dxScheduler-recurrenceRepeatHourly": "hour(s)",
                        "dxScheduler-recurrenceRepeatDaily": "day(s)",
                        "dxScheduler-recurrenceRepeatWeekly": "week(s)",
                        "dxScheduler-recurrenceRepeatMonthly": "month(s)",
                        "dxScheduler-recurrenceRepeatYearly": "year(s)",
                        "dxScheduler-switcherDay": "Day",
                        "dxScheduler-switcherWeek": "Week",
                        "dxScheduler-switcherWorkWeek": "Work Week",
                        "dxScheduler-switcherMonth": "Month",
                        "dxScheduler-switcherAgenda": "Agenda",
                        "dxScheduler-switcherTimelineDay": "Timeline Day",
                        "dxScheduler-switcherTimelineWeek": "Timeline Week",
                        "dxScheduler-switcherTimelineWorkWeek": "Timeline Work Week",
                        "dxScheduler-switcherTimelineMonth": "Timeline Month",
                        "dxScheduler-recurrenceRepeatOnDate": "on date",
                        "dxScheduler-recurrenceRepeatCount": "occurrence(s)",
                        "dxScheduler-allDay": "All day",
                        "dxScheduler-ariaEditForm": "Edit form",
                        "dxScheduler-confirmRecurrenceEditTitle": "Edit Recurring Appointment",
                        "dxScheduler-confirmRecurrenceDeleteTitle": "Delete Recurring Appointment",
                        "dxScheduler-confirmRecurrenceEditMessage": "Do you want to edit only this appointment or the whole series?",
                        "dxScheduler-confirmRecurrenceDeleteMessage": "Do you want to delete only this appointment or the whole series?",
                        "dxScheduler-confirmRecurrenceEditSeries": "Edit series",
                        "dxScheduler-confirmRecurrenceDeleteSeries": "Delete series",
                        "dxScheduler-confirmRecurrenceEditOccurrence": "Edit appointment",
                        "dxScheduler-confirmRecurrenceDeleteOccurrence": "Delete appointment",
                        "dxScheduler-noTimezoneTitle": "No timezone",
                        "dxScheduler-moreAppointments": "{0} more",
                        "dxCalendar-currentDay": "Today",
                        "dxCalendar-currentMonth": "Current month",
                        "dxCalendar-currentYear": "Current year",
                        "dxCalendar-currentYearRange": "Current year range",
                        "dxCalendar-todayButtonText": "Today",
                        "dxCalendar-ariaWidgetName": "Calendar",
                        "dxCalendar-previousMonthButtonLabel": "Previous month",
                        "dxCalendar-previousYearButtonLabel": "Previous year",
                        "dxCalendar-previousDecadeButtonLabel": "Previous decade",
                        "dxCalendar-previousCenturyButtonLabel": "Previous century",
                        "dxCalendar-nextMonthButtonLabel": "Next month",
                        "dxCalendar-nextYearButtonLabel": "Next year",
                        "dxCalendar-nextDecadeButtonLabel": "Next decade",
                        "dxCalendar-nextCenturyButtonLabel": "Next century",
                        "dxCalendar-captionMonthLabel": "Month selection",
                        "dxCalendar-captionYearLabel": "Year selection",
                        "dxCalendar-captionDecadeLabel": "Decade selection",
                        "dxCalendar-captionCenturyLabel": "Century selection",
                        "dxCalendar-selectedDate": "The selected date is {0}",
                        "dxCalendar-selectedDates": "The selected dates",
                        "dxCalendar-selectedDateRange": "The selected date range is from {0} to {1}",
                        "dxCalendar-selectedMultipleDateRange": "from {0} to {1}",
                        "dxCalendar-selectedDateRangeCount": "There are {0} selected date ranges",
                        "dxCalendar-readOnlyLabel": "Read-only calendar",
                        "dxCardView-ariaSearchInGrid": "Search in the card view",
                        "dxCardView-ariaHeaderItemLabel": "Field name {0}",
                        "dxCardView-ariaHeaderItemSortingAscendingLabel": "Sorted in ascending order",
                        "dxCardView-ariaHeaderItemSortingDescendingLabel": "Sorted in descending order",
                        "dxCardView-ariaHeaderItemSortingIndexLabel": "Sort index {0}",
                        "dxCardView-ariaHeaderHasHeaderFilterLabel": "Header filter applied",
                        "dxCardView-ariaSelectCard": "Select card",
                        "dxCardView-ariaCardView": "Card view with {0} cards. Each card has {1} fields",
                        "dxCardView-ariaCard": "Card",
                        "dxCardView-ariaEditableCard": "Editable card",
                        "dxCardView-ariaCardPosition": "Row {0}, column {1}",
                        "dxCardView-ariaSelectedCardState": "Selected",
                        "dxCardView-ariaNotSelectedCardState": "Not selected",
                        "dxCardView-selectAll": "Select all",
                        "dxCardView-clearSelection": "Clear selection",
                        "dxCardView-cardNoImageAriaLabel": "No image",
                        "dxCardView-headerItemDropZoneText": "Drop the header item here",
                        "dxCardView-emptyHeaderPanelText": "Use {0} to display columns",
                        "dxCardView-emptyHeaderPanelColumnChooserText": "column chooser",
                        "dxAvatar-defaultImageAlt": "Avatar",
                        "dxChat-elementAriaLabel": "Chat",
                        "dxChat-textareaPlaceholder": "Type a message",
                        "dxChat-sendButtonAriaLabel": "Send",
                        "dxChat-cancelEditingButtonAriaLabel": "Cancel",
                        "dxChat-editingMessageCaption": "Edit Message",
                        "dxChat-defaultUserName": "Unknown User",
                        "dxChat-messageListAriaLabel": "Message list",
                        "dxChat-alertListAriaLabel": "Error list",
                        "dxChat-emptyListMessage": "There are no messages in this chat",
                        "dxChat-emptyListPrompt": "Write your first message",
                        "dxChat-typingMessageSingleUser": "{0} is typing...",
                        "dxChat-typingMessageTwoUsers": "{0} and {1} are typing...",
                        "dxChat-typingMessageThreeUsers": "{0}, {1} and {2} are typing...",
                        "dxChat-typingMessageMultipleUsers": "{0} and others are typing...",
                        "dxChat-editedMessageText": "Edited",
                        "dxChat-editingEditMessage": "Edit",
                        "dxChat-editingDeleteMessage": "Delete",
                        "dxChat-editingDeleteConfirmText": "Are you sure you want to delete this message?",
                        "dxChat-deletedMessageText": "This message was deleted",
                        "dxChat-defaultImageAlt": "Image shared in chat",
                        "dxColorView-ariaRed": "Red",
                        "dxColorView-ariaGreen": "Green",
                        "dxColorView-ariaBlue": "Blue",
                        "dxColorView-ariaAlpha": "Transparency",
                        "dxColorView-ariaHex": "Color code",
                        "dxTagBox-selected": "{0} selected",
                        "dxTagBox-allSelected": "All selected ({0})",
                        "dxTagBox-moreSelected": "{0} more",
                        "dxTagBox-tagRoleDescription": "Tag. Press the delete button to remove this tag",
                        "dxTagBox-ariaRoleDescription": "Tag box",
                        "vizExport-printingButtonText": "Print",
                        "vizExport-titleMenuText": "Exporting/Printing",
                        "vizExport-exportButtonText": "{0} file",
                        "dxFilterBuilder-and": "And",
                        "dxFilterBuilder-or": "Or",
                        "dxFilterBuilder-notAnd": "Not And",
                        "dxFilterBuilder-notOr": "Not Or",
                        "dxFilterBuilder-addCondition": "Add Condition",
                        "dxFilterBuilder-addGroup": "Add Group",
                        "dxFilterBuilder-enterValueText": "<enter a value>",
                        "dxFilterBuilder-filterOperationEquals": "Equals",
                        "dxFilterBuilder-filterOperationNotEquals": "Does not equal",
                        "dxFilterBuilder-filterOperationLess": "Is less than",
                        "dxFilterBuilder-filterOperationLessOrEquals": "Is less than or equal to",
                        "dxFilterBuilder-filterOperationGreater": "Is greater than",
                        "dxFilterBuilder-filterOperationGreaterOrEquals": "Is greater than or equal to",
                        "dxFilterBuilder-filterOperationStartsWith": "Starts with",
                        "dxFilterBuilder-filterOperationContains": "Contains",
                        "dxFilterBuilder-filterOperationNotContains": "Does not contain",
                        "dxFilterBuilder-filterOperationEndsWith": "Ends with",
                        "dxFilterBuilder-filterOperationIsBlank": "Is blank",
                        "dxFilterBuilder-filterOperationIsNotBlank": "Is not blank",
                        "dxFilterBuilder-filterOperationBetween": "Is between",
                        "dxFilterBuilder-filterOperationAnyOf": "Is any of",
                        "dxFilterBuilder-filterOperationNoneOf": "Is none of",
                        "dxFilterBuilder-filterAriaRootElement": "Filter builder",
                        "dxFilterBuilder-filterAriaGroupLevel": "Level {0}",
                        "dxFilterBuilder-filterAriaGroupItem": "Group item",
                        "dxFilterBuilder-filterAriaOperationButton": "Operation",
                        "dxFilterBuilder-filterAriaAddButton": "Add",
                        "dxFilterBuilder-filterAriaRemoveButton": "Remove {0}",
                        "dxFilterBuilder-filterAriaItemField": "Item field",
                        "dxFilterBuilder-filterAriaItemOperation": "Item operation",
                        "dxFilterBuilder-filterAriaItemValue": "Item value",
                        "dxHtmlEditor-dialogColorCaption": "Change Font Color",
                        "dxHtmlEditor-dialogBackgroundCaption": "Change Background Color",
                        "dxHtmlEditor-dialogLinkCaption": "Add Link",
                        "dxHtmlEditor-dialogLinkUrlField": "URL",
                        "dxHtmlEditor-dialogLinkTextField": "Text",
                        "dxHtmlEditor-dialogLinkTargetField": "Open link in new window",
                        "dxHtmlEditor-dialogImageCaption": "Add Image",
                        "dxHtmlEditor-dialogImageUrlField": "URL",
                        "dxHtmlEditor-dialogImageAltField": "Alternate text",
                        "dxHtmlEditor-dialogImageWidthField": "Width (px)",
                        "dxHtmlEditor-dialogImageHeightField": "Height (px)",
                        "dxHtmlEditor-dialogInsertTableRowsField": "Rows",
                        "dxHtmlEditor-dialogInsertTableColumnsField": "Columns",
                        "dxHtmlEditor-dialogInsertTableCaption": "Insert Table",
                        "dxHtmlEditor-dialogUpdateImageCaption": "Update Image",
                        "dxHtmlEditor-dialogImageUpdateButton": "Update",
                        "dxHtmlEditor-dialogImageAddButton": "Add",
                        "dxHtmlEditor-dialogImageSpecifyUrl": "From the Web",
                        "dxHtmlEditor-dialogImageSelectFile": "From This Device",
                        "dxHtmlEditor-dialogImageKeepAspectRatio": "Keep Aspect Ratio",
                        "dxHtmlEditor-dialogImageEncodeToBase64": "Encode to Base64",
                        "dxHtmlEditor-heading": "Heading",
                        "dxHtmlEditor-normalText": "Normal text",
                        "dxHtmlEditor-background": "Background Color",
                        "dxHtmlEditor-bold": "Bold",
                        "dxHtmlEditor-color": "Font Color",
                        "dxHtmlEditor-font": "Font",
                        "dxHtmlEditor-italic": "Italic",
                        "dxHtmlEditor-link": "Add Link",
                        "dxHtmlEditor-image": "Add Image",
                        "dxHtmlEditor-size": "Size",
                        "dxHtmlEditor-strike": "Strikethrough",
                        "dxHtmlEditor-subscript": "Subscript",
                        "dxHtmlEditor-superscript": "Superscript",
                        "dxHtmlEditor-underline": "Underline",
                        "dxHtmlEditor-blockquote": "Blockquote",
                        "dxHtmlEditor-header": "Header",
                        "dxHtmlEditor-increaseIndent": "Increase Indent",
                        "dxHtmlEditor-decreaseIndent": "Decrease Indent",
                        "dxHtmlEditor-orderedList": "Ordered List",
                        "dxHtmlEditor-bulletList": "Bullet List",
                        "dxHtmlEditor-alignLeft": "Align Left",
                        "dxHtmlEditor-alignCenter": "Align Center",
                        "dxHtmlEditor-alignRight": "Align Right",
                        "dxHtmlEditor-alignJustify": "Align Justify",
                        "dxHtmlEditor-codeBlock": "Code Block",
                        "dxHtmlEditor-variable": "Add Variable",
                        "dxHtmlEditor-undo": "Undo",
                        "dxHtmlEditor-redo": "Redo",
                        "dxHtmlEditor-clear": "Clear Formatting",
                        "dxHtmlEditor-insertTable": "Insert Table",
                        "dxHtmlEditor-insertHeaderRow": "Insert Header Row",
                        "dxHtmlEditor-insertRowAbove": "Insert Row Above",
                        "dxHtmlEditor-insertRowBelow": "Insert Row Below",
                        "dxHtmlEditor-insertColumnLeft": "Insert Column Left",
                        "dxHtmlEditor-insertColumnRight": "Insert Column Right",
                        "dxHtmlEditor-deleteColumn": "Delete Column",
                        "dxHtmlEditor-deleteRow": "Delete Row",
                        "dxHtmlEditor-deleteTable": "Delete Table",
                        "dxHtmlEditor-cellProperties": "Cell Properties",
                        "dxHtmlEditor-tableProperties": "Table Properties",
                        "dxHtmlEditor-insert": "Insert",
                        "dxHtmlEditor-delete": "Delete",
                        "dxHtmlEditor-border": "Border",
                        "dxHtmlEditor-style": "Style",
                        "dxHtmlEditor-width": "Width",
                        "dxHtmlEditor-height": "Height",
                        "dxHtmlEditor-borderColor": "Color",
                        "dxHtmlEditor-borderWidth": "Border Width",
                        "dxHtmlEditor-tableBackground": "Background",
                        "dxHtmlEditor-dimensions": "Dimensions",
                        "dxHtmlEditor-alignment": "Alignment",
                        "dxHtmlEditor-horizontal": "Horizontal",
                        "dxHtmlEditor-vertical": "Vertical",
                        "dxHtmlEditor-paddingVertical": "Vertical Padding",
                        "dxHtmlEditor-paddingHorizontal": "Horizontal Padding",
                        "dxHtmlEditor-pixels": "Pixels",
                        "dxHtmlEditor-list": "List",
                        "dxHtmlEditor-ordered": "Ordered",
                        "dxHtmlEditor-bullet": "Bullet",
                        "dxHtmlEditor-align": "Align",
                        "dxHtmlEditor-center": "Center",
                        "dxHtmlEditor-left": "Left",
                        "dxHtmlEditor-right": "Right",
                        "dxHtmlEditor-indent": "Indent",
                        "dxHtmlEditor-justify": "Justify",
                        "dxHtmlEditor-borderStyleNone": "none",
                        "dxHtmlEditor-borderStyleHidden": "hidden",
                        "dxHtmlEditor-borderStyleDotted": "dotted",
                        "dxHtmlEditor-borderStyleDashed": "dashed",
                        "dxHtmlEditor-borderStyleSolid": "solid",
                        "dxHtmlEditor-borderStyleDouble": "double",
                        "dxHtmlEditor-borderStyleGroove": "groove",
                        "dxHtmlEditor-borderStyleRidge": "ridge",
                        "dxHtmlEditor-borderStyleInset": "inset",
                        "dxHtmlEditor-borderStyleOutset": "outset",
                        "dxHtmlEditor-aiDialogTitle": "AI Assistant",
                        "dxHtmlEditor-aiDialogError": "Something went wrong. Please try again.",
                        "dxHtmlEditor-aiDialogCanceled": "Generation canceled",
                        "dxHtmlEditor-aiReplace": "Replace",
                        "dxHtmlEditor-aiInsertAbove": "Insert above",
                        "dxHtmlEditor-aiInsertBelow": "Insert below",
                        "dxHtmlEditor-aiCopy": "Copy",
                        "dxHtmlEditor-aiRegenerate": "Regenerate",
                        "dxHtmlEditor-aiGenerate": "Generate",
                        "dxHtmlEditor-aiCancel": "Cancel",
                        "dxHtmlEditor-aiToolbarItemAriaLabel": "AI Assistant toolbar item",
                        "dxHtmlEditor-aiResultTextAreaAriaLabel": "AI Assistant result",
                        "dxHtmlEditor-aiAskPlaceholder": "Ask AI to modify text",
                        "dxFileManager-newDirectoryName": "Untitled directory",
                        "dxFileManager-rootDirectoryName": "Files",
                        "dxFileManager-errorNoAccess": "Access Denied. Operation could not be completed.",
                        "dxFileManager-errorDirectoryExistsFormat": "Directory '{0}' already exists.",
                        "dxFileManager-errorFileExistsFormat": "File '{0}' already exists.",
                        "dxFileManager-errorFileNotFoundFormat": "File '{0}' not found.",
                        "dxFileManager-errorDirectoryNotFoundFormat": "Directory '{0}' not found.",
                        "dxFileManager-errorWrongFileExtension": "File extension is not allowed.",
                        "dxFileManager-errorMaxFileSizeExceeded": "File size exceeds the maximum allowed size.",
                        "dxFileManager-errorInvalidSymbols": "This name contains invalid characters.",
                        "dxFileManager-errorDefault": "Unspecified error.",
                        "dxFileManager-errorDirectoryOpenFailed": "The directory cannot be opened",
                        "dxFileManager-commandCreate": "New directory",
                        "dxFileManager-commandRename": "Rename",
                        "dxFileManager-commandMove": "Move to",
                        "dxFileManager-commandCopy": "Copy to",
                        "dxFileManager-commandDelete": "Delete",
                        "dxFileManager-commandDownload": "Download",
                        "dxFileManager-commandUpload": "Upload files",
                        "dxFileManager-commandRefresh": "Refresh",
                        "dxFileManager-commandThumbnails": "Thumbnails View",
                        "dxFileManager-commandDetails": "Details View",
                        "dxFileManager-commandClearSelection": "Clear selection",
                        "dxFileManager-commandShowNavPane": "Toggle navigation pane",
                        "dxFileManager-dialogDirectoryChooserMoveTitle": "Move to",
                        "dxFileManager-dialogDirectoryChooserMoveButtonText": "Move",
                        "dxFileManager-dialogDirectoryChooserCopyTitle": "Copy to",
                        "dxFileManager-dialogDirectoryChooserCopyButtonText": "Copy",
                        "dxFileManager-dialogRenameItemTitle": "Rename",
                        "dxFileManager-dialogRenameItemButtonText": "Save",
                        "dxFileManager-dialogCreateDirectoryTitle": "New directory",
                        "dxFileManager-dialogCreateDirectoryButtonText": "Create",
                        "dxFileManager-dialogDeleteItemTitle": "Delete",
                        "dxFileManager-dialogDeleteItemButtonText": "Delete",
                        "dxFileManager-dialogDeleteItemSingleItemConfirmation": "Are you sure you want to delete {0}?",
                        "dxFileManager-dialogDeleteItemMultipleItemsConfirmation": "Are you sure you want to delete {0} items?",
                        "dxFileManager-dialogButtonCancel": "Cancel",
                        "dxFileManager-editingCreateSingleItemProcessingMessage": "Creating a directory inside {0}",
                        "dxFileManager-editingCreateSingleItemSuccessMessage": "Created a directory inside {0}",
                        "dxFileManager-editingCreateSingleItemErrorMessage": "Directory was not created",
                        "dxFileManager-editingCreateCommonErrorMessage": "Directory was not created",
                        "dxFileManager-editingRenameSingleItemProcessingMessage": "Renaming an item inside {0}",
                        "dxFileManager-editingRenameSingleItemSuccessMessage": "Renamed an item inside {0}",
                        "dxFileManager-editingRenameSingleItemErrorMessage": "Item was not renamed",
                        "dxFileManager-editingRenameCommonErrorMessage": "Item was not renamed",
                        "dxFileManager-editingDeleteSingleItemProcessingMessage": "Deleting an item from {0}",
                        "dxFileManager-editingDeleteMultipleItemsProcessingMessage": "Deleting {0} items from {1}",
                        "dxFileManager-editingDeleteSingleItemSuccessMessage": "Deleted an item from {0}",
                        "dxFileManager-editingDeleteMultipleItemsSuccessMessage": "Deleted {0} items from {1}",
                        "dxFileManager-editingDeleteSingleItemErrorMessage": "Item was not deleted",
                        "dxFileManager-editingDeleteMultipleItemsErrorMessage": "{0} items were not deleted",
                        "dxFileManager-editingDeleteCommonErrorMessage": "Some items were not deleted",
                        "dxFileManager-editingMoveSingleItemProcessingMessage": "Moving an item to {0}",
                        "dxFileManager-editingMoveMultipleItemsProcessingMessage": "Moving {0} items to {1}",
                        "dxFileManager-editingMoveSingleItemSuccessMessage": "Moved an item to {0}",
                        "dxFileManager-editingMoveMultipleItemsSuccessMessage": "Moved {0} items to {1}",
                        "dxFileManager-editingMoveSingleItemErrorMessage": "Item was not moved",
                        "dxFileManager-editingMoveMultipleItemsErrorMessage": "{0} items were not moved",
                        "dxFileManager-editingMoveCommonErrorMessage": "Some items were not moved",
                        "dxFileManager-editingCopySingleItemProcessingMessage": "Copying an item to {0}",
                        "dxFileManager-editingCopyMultipleItemsProcessingMessage": "Copying {0} items to {1}",
                        "dxFileManager-editingCopySingleItemSuccessMessage": "Copied an item to {0}",
                        "dxFileManager-editingCopyMultipleItemsSuccessMessage": "Copied {0} items to {1}",
                        "dxFileManager-editingCopySingleItemErrorMessage": "Item was not copied",
                        "dxFileManager-editingCopyMultipleItemsErrorMessage": "{0} items were not copied",
                        "dxFileManager-editingCopyCommonErrorMessage": "Some items were not copied",
                        "dxFileManager-editingUploadSingleItemProcessingMessage": "Uploading an item to {0}",
                        "dxFileManager-editingUploadMultipleItemsProcessingMessage": "Uploading {0} items to {1}",
                        "dxFileManager-editingUploadSingleItemSuccessMessage": "Uploaded an item to {0}",
                        "dxFileManager-editingUploadMultipleItemsSuccessMessage": "Uploaded {0} items to {1}",
                        "dxFileManager-editingUploadSingleItemErrorMessage": "Item was not uploaded",
                        "dxFileManager-editingUploadMultipleItemsErrorMessage": "{0} items were not uploaded",
                        "dxFileManager-editingUploadCanceledMessage": "Canceled",
                        "dxFileManager-editingDownloadSingleItemErrorMessage": "Item was not downloaded",
                        "dxFileManager-editingDownloadMultipleItemsErrorMessage": "{0} items were not downloaded",
                        "dxFileManager-listDetailsColumnCaptionName": "Name",
                        "dxFileManager-listDetailsColumnCaptionDateModified": "Date Modified",
                        "dxFileManager-listDetailsColumnCaptionFileSize": "File Size",
                        "dxFileManager-listThumbnailsTooltipTextSize": "Size",
                        "dxFileManager-listThumbnailsTooltipTextDateModified": "Date Modified",
                        "dxFileManager-notificationProgressPanelTitle": "Progress",
                        "dxFileManager-notificationProgressPanelEmptyListText": "No operations",
                        "dxFileManager-notificationProgressPanelOperationCanceled": "Canceled",
                        "dxDiagram-categoryGeneral": "General",
                        "dxDiagram-categoryFlowchart": "Flowchart",
                        "dxDiagram-categoryOrgChart": "Org Chart",
                        "dxDiagram-categoryContainers": "Containers",
                        "dxDiagram-categoryCustom": "Custom",
                        "dxDiagram-commandExportToSvg": "Export to SVG",
                        "dxDiagram-commandExportToPng": "Export to PNG",
                        "dxDiagram-commandExportToJpg": "Export to JPEG",
                        "dxDiagram-commandUndo": "Undo",
                        "dxDiagram-commandRedo": "Redo",
                        "dxDiagram-commandFontName": "Font Name",
                        "dxDiagram-commandFontSize": "Font Size",
                        "dxDiagram-commandBold": "Bold",
                        "dxDiagram-commandItalic": "Italic",
                        "dxDiagram-commandUnderline": "Underline",
                        "dxDiagram-commandTextColor": "Font Color",
                        "dxDiagram-commandLineColor": "Line Color",
                        "dxDiagram-commandLineWidth": "Line Width",
                        "dxDiagram-commandLineStyle": "Line Style",
                        "dxDiagram-commandLineStyleSolid": "Solid",
                        "dxDiagram-commandLineStyleDotted": "Dotted",
                        "dxDiagram-commandLineStyleDashed": "Dashed",
                        "dxDiagram-commandFillColor": "Fill Color",
                        "dxDiagram-commandAlignLeft": "Align Left",
                        "dxDiagram-commandAlignCenter": "Align Center",
                        "dxDiagram-commandAlignRight": "Align Right",
                        "dxDiagram-commandConnectorLineType": "Connector Line Type",
                        "dxDiagram-commandConnectorLineStraight": "Straight",
                        "dxDiagram-commandConnectorLineOrthogonal": "Orthogonal",
                        "dxDiagram-commandConnectorLineStart": "Connector Line Start",
                        "dxDiagram-commandConnectorLineEnd": "Connector Line End",
                        "dxDiagram-commandConnectorLineNone": "None",
                        "dxDiagram-commandConnectorLineArrow": "Arrow",
                        "dxDiagram-commandFullscreen": "Full Screen",
                        "dxDiagram-commandUnits": "Units",
                        "dxDiagram-commandPageSize": "Page Size",
                        "dxDiagram-commandPageOrientation": "Page Orientation",
                        "dxDiagram-commandPageOrientationLandscape": "Landscape",
                        "dxDiagram-commandPageOrientationPortrait": "Portrait",
                        "dxDiagram-commandPageColor": "Page Color",
                        "dxDiagram-commandShowGrid": "Show Grid",
                        "dxDiagram-commandSnapToGrid": "Snap to Grid",
                        "dxDiagram-commandGridSize": "Grid Size",
                        "dxDiagram-commandZoomLevel": "Zoom Level",
                        "dxDiagram-commandAutoZoom": "Auto Zoom",
                        "dxDiagram-commandFitToContent": "Fit to Content",
                        "dxDiagram-commandFitToWidth": "Fit to Width",
                        "dxDiagram-commandAutoZoomByContent": "Auto Zoom by Content",
                        "dxDiagram-commandAutoZoomByWidth": "Auto Zoom by Width",
                        "dxDiagram-commandSimpleView": "Simple View",
                        "dxDiagram-commandCut": "Cut",
                        "dxDiagram-commandCopy": "Copy",
                        "dxDiagram-commandPaste": "Paste",
                        "dxDiagram-commandSelectAll": "Select All",
                        "dxDiagram-commandDelete": "Delete",
                        "dxDiagram-commandBringToFront": "Bring to Front",
                        "dxDiagram-commandSendToBack": "Send to Back",
                        "dxDiagram-commandLock": "Lock",
                        "dxDiagram-commandUnlock": "Unlock",
                        "dxDiagram-commandInsertShapeImage": "Insert Image...",
                        "dxDiagram-commandEditShapeImage": "Change Image...",
                        "dxDiagram-commandDeleteShapeImage": "Delete Image",
                        "dxDiagram-commandLayoutLeftToRight": "Left-to-right",
                        "dxDiagram-commandLayoutRightToLeft": "Right-to-left",
                        "dxDiagram-commandLayoutTopToBottom": "Top-to-bottom",
                        "dxDiagram-commandLayoutBottomToTop": "Bottom-to-top",
                        "dxDiagram-unitIn": "in",
                        "dxDiagram-unitCm": "cm",
                        "dxDiagram-unitPx": "px",
                        "dxDiagram-dialogButtonOK": "OK",
                        "dxDiagram-dialogButtonCancel": "Cancel",
                        "dxDiagram-dialogInsertShapeImageTitle": "Insert Image",
                        "dxDiagram-dialogEditShapeImageTitle": "Change Image",
                        "dxDiagram-dialogEditShapeImageSelectButton": "Select image",
                        "dxDiagram-dialogEditShapeImageLabelText": "or drop a file here",
                        "dxDiagram-uiExport": "Export",
                        "dxDiagram-uiProperties": "Properties",
                        "dxDiagram-uiSettings": "Settings",
                        "dxDiagram-uiShowToolbox": "Show Toolbox",
                        "dxDiagram-uiSearch": "Search",
                        "dxDiagram-uiStyle": "Style",
                        "dxDiagram-uiLayout": "Layout",
                        "dxDiagram-uiLayoutTree": "Tree",
                        "dxDiagram-uiLayoutLayered": "Layered",
                        "dxDiagram-uiDiagram": "Diagram",
                        "dxDiagram-uiText": "Text",
                        "dxDiagram-uiObject": "Object",
                        "dxDiagram-uiConnector": "Connector",
                        "dxDiagram-uiPage": "Page",
                        "dxDiagram-shapeText": "Text",
                        "dxDiagram-shapeRectangle": "Rectangle",
                        "dxDiagram-shapeEllipse": "Ellipse",
                        "dxDiagram-shapeCross": "Cross",
                        "dxDiagram-shapeTriangle": "Triangle",
                        "dxDiagram-shapeDiamond": "Diamond",
                        "dxDiagram-shapeHeart": "Heart",
                        "dxDiagram-shapePentagon": "Pentagon",
                        "dxDiagram-shapeHexagon": "Hexagon",
                        "dxDiagram-shapeOctagon": "Octagon",
                        "dxDiagram-shapeStar": "Star",
                        "dxDiagram-shapeArrowLeft": "Left Arrow",
                        "dxDiagram-shapeArrowUp": "Up Arrow",
                        "dxDiagram-shapeArrowRight": "Right Arrow",
                        "dxDiagram-shapeArrowDown": "Down Arrow",
                        "dxDiagram-shapeArrowUpDown": "Up Down Arrow",
                        "dxDiagram-shapeArrowLeftRight": "Left Right Arrow",
                        "dxDiagram-shapeProcess": "Process",
                        "dxDiagram-shapeDecision": "Decision",
                        "dxDiagram-shapeTerminator": "Terminator",
                        "dxDiagram-shapePredefinedProcess": "Predefined Process",
                        "dxDiagram-shapeDocument": "Document",
                        "dxDiagram-shapeMultipleDocuments": "Multiple Documents",
                        "dxDiagram-shapeManualInput": "Manual Input",
                        "dxDiagram-shapePreparation": "Preparation",
                        "dxDiagram-shapeData": "Data",
                        "dxDiagram-shapeDatabase": "Database",
                        "dxDiagram-shapeHardDisk": "Hard Disk",
                        "dxDiagram-shapeInternalStorage": "Internal Storage",
                        "dxDiagram-shapePaperTape": "Paper Tape",
                        "dxDiagram-shapeManualOperation": "Manual Operation",
                        "dxDiagram-shapeDelay": "Delay",
                        "dxDiagram-shapeStoredData": "Stored Data",
                        "dxDiagram-shapeDisplay": "Display",
                        "dxDiagram-shapeMerge": "Merge",
                        "dxDiagram-shapeConnector": "Connector",
                        "dxDiagram-shapeOr": "Or",
                        "dxDiagram-shapeSummingJunction": "Summing Junction",
                        "dxDiagram-shapeContainerDefaultText": "Container",
                        "dxDiagram-shapeVerticalContainer": "Vertical Container",
                        "dxDiagram-shapeHorizontalContainer": "Horizontal Container",
                        "dxDiagram-shapeCardDefaultText": "Person's Name",
                        "dxDiagram-shapeCardWithImageOnLeft": "Card with Image on the Left",
                        "dxDiagram-shapeCardWithImageOnTop": "Card with Image on the Top",
                        "dxDiagram-shapeCardWithImageOnRight": "Card with Image on the Right",
                        "dxGantt-dialogTitle": "Title",
                        "dxGantt-dialogStartTitle": "Start",
                        "dxGantt-dialogEndTitle": "End",
                        "dxGantt-dialogProgressTitle": "Progress",
                        "dxGantt-dialogResourcesTitle": "Resources",
                        "dxGantt-dialogResourceManagerTitle": "Resource Manager",
                        "dxGantt-dialogTaskDetailsTitle": "Task Details",
                        "dxGantt-dialogEditResourceListHint": "Edit Resource List",
                        "dxGantt-dialogEditNoResources": "No resources",
                        "dxGantt-dialogButtonAdd": "Add",
                        "dxGantt-contextMenuNewTask": "New Task",
                        "dxGantt-contextMenuNewSubtask": "New Subtask",
                        "dxGantt-contextMenuDeleteTask": "Delete Task",
                        "dxGantt-contextMenuDeleteDependency": "Delete Dependency",
                        "dxGantt-dialogTaskDeleteConfirmation": "Deleting a task also deletes all its dependencies and subtasks. Are you sure you want to delete this task?",
                        "dxGantt-dialogDependencyDeleteConfirmation": "Are you sure you want to delete the dependency from the task?",
                        "dxGantt-dialogResourcesDeleteConfirmation": "Deleting a resource also deletes it from tasks to which this resource is assigned. Are you sure you want to delete these resources? Resources: {0}",
                        "dxGantt-dialogConstraintCriticalViolationMessage": "The task you are attempting to move is linked to a second task by a dependency relation. This change would conflict with dependency rules. How would you like to proceed?",
                        "dxGantt-dialogConstraintViolationMessage": "The task you are attempting to move is linked to a second task by a dependency relation. How would you like to proceed?",
                        "dxGantt-dialogCancelOperationMessage": "Cancel the operation",
                        "dxGantt-dialogDeleteDependencyMessage": "Delete the dependency",
                        "dxGantt-dialogMoveTaskAndKeepDependencyMessage": "Move the task and keep the dependency",
                        "dxGantt-dialogConstraintCriticalViolationSeveralTasksMessage": "The task you are attempting to move is linked to another tasks by dependency relations. This change would conflict with dependency rules. How would you like to proceed?",
                        "dxGantt-dialogConstraintViolationSeveralTasksMessage": "The task you are attempting to move is linked to another tasks by dependency relations. How would you like to proceed?",
                        "dxGantt-dialogDeleteDependenciesMessage": "Delete the dependency relations",
                        "dxGantt-dialogMoveTaskAndKeepDependenciesMessage": "Move the task and keep the dependencies",
                        "dxGantt-undo": "Undo",
                        "dxGantt-redo": "Redo",
                        "dxGantt-expandAll": "Expand All",
                        "dxGantt-collapseAll": "Collapse All",
                        "dxGantt-addNewTask": "Add New Task",
                        "dxGantt-deleteSelectedTask": "Delete Selected Task",
                        "dxGantt-zoomIn": "Zoom In",
                        "dxGantt-zoomOut": "Zoom Out",
                        "dxGantt-fullScreen": "Full Screen",
                        "dxGantt-quarter": "Q{0}",
                        "dxGantt-sortingAscendingText": "Sort Ascending",
                        "dxGantt-sortingDescendingText": "Sort Descending",
                        "dxGantt-sortingClearText": "Clear Sorting",
                        "dxGantt-showResources": "Show Resources",
                        "dxGantt-showDependencies": "Show Dependencies",
                        "dxGantt-dialogStartDateValidation": "Start date must be after {0}",
                        "dxGantt-dialogEndDateValidation": "End date must be after {0}",
                        "dxGallery-itemName": "Gallery item",
                        "dxMultiView-elementAriaRoleDescription": "MultiView",
                        "dxMultiView-elementAriaLabel": "Use the arrow keys or swipe to navigate between views",
                        "dxMultiView-itemAriaRoleDescription": "View",
                        "dxMultiView-itemAriaLabel": "{0} of {1}",
                        "dxSplitter-resizeHandleAriaLabel": "Split bar",
                        "dxSplitter-resizeHandleAriaRoleDescription": "Separator",
                        "dxStepper-optionalMark": "(Optional)"
                    }
                }
            },
        23805:
            /*!****************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/core/localization/globalize/core.js ***!
              \****************************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _globalize = _interopRequireDefault(__webpack_require__( /*! globalize */ 87626));
                var _core = _interopRequireDefault(__webpack_require__( /*! ../core */ 84109));
                var _en = __webpack_require__( /*! ../cldr-data/en */ 61316);
                var _supplemental = __webpack_require__( /*! ../cldr-data/supplemental */ 99645);

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                if (_globalize.default && _globalize.default.load) {
                    if (!_globalize.default.locale()) {
                        _globalize.default.load(_en.enCldr, _supplemental.supplementalCldr);
                        _globalize.default.locale("en")
                    }
                    _core.default.inject({
                        locale: function(locale) {
                            if (!locale) {
                                return _globalize.default.locale().locale
                            }
                            _globalize.default.locale(locale)
                        }
                    })
                }
            },
        869:
            /*!********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/core/localization/globalize/currency.js ***!
              \********************************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _open_xml_currency_format = _interopRequireDefault(__webpack_require__( /*! ../open_xml_currency_format */ 70832));
                __webpack_require__( /*! ./core */ 23805);
                __webpack_require__( /*! ./number */ 13203);
                __webpack_require__( /*! ../currency */ 17333);
                __webpack_require__( /*! globalize/currency */ 87626);
                var _globalize = _interopRequireDefault(__webpack_require__( /*! globalize */ 87626));
                var _common = __webpack_require__( /*! ../../../../common */ 83077);
                var _number2 = _interopRequireDefault(__webpack_require__( /*! ../number */ 52771));

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const CURRENCY_STYLES = ["symbol", "accounting"];
                if (_globalize.default && _globalize.default.formatCurrency) {
                    if ("en" === _globalize.default.locale().locale) {
                        _globalize.default.locale("en")
                    }
                    const formattersCache = {};
                    const getFormatter = (currency, format) => {
                        let formatter;
                        let formatCacheKey;
                        if ("object" === typeof format) {
                            formatCacheKey = _globalize.default.locale().locale + ":" + currency + ":" + JSON.stringify(format)
                        } else {
                            formatCacheKey = _globalize.default.locale().locale + ":" + currency + ":" + format
                        }
                        formatter = formattersCache[formatCacheKey];
                        if (!formatter) {
                            formatter = formattersCache[formatCacheKey] = _globalize.default.currencyFormatter(currency, format)
                        }
                        return formatter
                    };
                    const globalizeCurrencyLocalization = {
                        _formatNumberCore: function(value, format, formatConfig) {
                            if ("currency" === format) {
                                const currency = formatConfig && formatConfig.currency || (0, _common.config)().defaultCurrency;
                                return getFormatter(currency, this._normalizeFormatConfig(format, formatConfig, value))(value)
                            }
                            return this.callBase.apply(this, arguments)
                        },
                        _normalizeFormatConfig: function(format, formatConfig, value) {
                            const normalizedConfig = this.callBase(format, formatConfig, value);
                            if ("currency" === format) {
                                const useAccountingStyle = formatConfig.useCurrencyAccountingStyle ?? (0, _common.config)().defaultUseCurrencyAccountingStyle;
                                normalizedConfig.style = CURRENCY_STYLES[+useAccountingStyle]
                            }
                            return normalizedConfig
                        },
                        format: function(value, format) {
                            if ("number" !== typeof value) {
                                return value
                            }
                            format = this._normalizeFormat(format);
                            if (format) {
                                if ("default" === format.currency) {
                                    format.currency = (0, _common.config)().defaultCurrency
                                }
                                if ("currency" === format.type) {
                                    return this._formatNumber(value, this._parseNumberFormatString("currency"), format)
                                } else if (!format.type && format.currency) {
                                    return getFormatter(format.currency, format)(value)
                                }
                            }
                            return this.callBase.apply(this, arguments)
                        },
                        getCurrencySymbol: function(currency) {
                            if (!currency) {
                                currency = (0, _common.config)().defaultCurrency
                            }
                            return _globalize.default.cldr.main("numbers/currencies/" + currency)
                        },
                        getOpenXmlCurrencyFormat: function(currency) {
                            const currencySymbol = this.getCurrencySymbol(currency).symbol;
                            const accountingFormat = _globalize.default.cldr.main("numbers/currencyFormats-numberSystem-latn").accounting;
                            return (0, _open_xml_currency_format.default)(currencySymbol, accountingFormat)
                        }
                    };
                    _number2.default.inject(globalizeCurrencyLocalization)
                }
            },
        99862:
            /*!****************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/core/localization/globalize/date.js ***!
              \****************************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                __webpack_require__( /*! ./core */ 23805);
                __webpack_require__( /*! ./number */ 13203);
                __webpack_require__( /*! globalize/date */ 87626);
                var _globalize = _interopRequireDefault(__webpack_require__( /*! globalize */ 87626));
                var _date2 = _interopRequireDefault(__webpack_require__( /*! ../date */ 38662));
                var _type = __webpack_require__( /*! ../../../../core/utils/type */ 11528);
                var iteratorUtils = function(e, r) {
                    if (!r && e && e.__esModule) {
                        return e
                    }
                    if (null === e || "object" != typeof e && "function" != typeof e) {
                        return {
                            default: e
                        }
                    }
                    var t = _getRequireWildcardCache(r);
                    if (t && t.has(e)) {
                        return t.get(e)
                    }
                    var n = {
                            __proto__: null
                        },
                        a = Object.defineProperty && Object.getOwnPropertyDescriptor;
                    for (var u in e) {
                        if ("default" !== u && {}.hasOwnProperty.call(e, u)) {
                            var i = a ? Object.getOwnPropertyDescriptor(e, u) : null;
                            i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]
                        }
                    }
                    return n.default = e, t && t.set(e, n), n
                }(__webpack_require__( /*! ../../../../core/utils/iterator */ 21274));

                function _getRequireWildcardCache(e) {
                    if ("function" != typeof WeakMap) {
                        return null
                    }
                    var r = new WeakMap,
                        t = new WeakMap;
                    return (_getRequireWildcardCache = function(e) {
                        return e ? t : r
                    })(e)
                }

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const ACCEPTABLE_JSON_FORMAT_PROPERTIES = ["skeleton", "date", "time", "datetime", "raw"];
                const RTL_MARKS_REGEX = /[\u200E\u200F]/g;
                if (_globalize.default && _globalize.default.formatDate) {
                    if ("en" === _globalize.default.locale().locale) {
                        _globalize.default.locale("en")
                    }
                    const formattersCache = {};
                    const FORMATS_TO_GLOBALIZE_MAP = {
                        shortdate: {
                            path: "dateTimeFormats/availableFormats/yMd"
                        },
                        shorttime: {
                            path: "timeFormats/short"
                        },
                        longdate: {
                            path: "dateFormats/full"
                        },
                        longtime: {
                            path: "timeFormats/medium"
                        },
                        monthandday: {
                            path: "dateTimeFormats/availableFormats/MMMMd"
                        },
                        monthandyear: {
                            path: "dateTimeFormats/availableFormats/yMMMM"
                        },
                        quarterandyear: {
                            path: "dateTimeFormats/availableFormats/yQQQ"
                        },
                        day: {
                            path: "dateTimeFormats/availableFormats/d"
                        },
                        year: {
                            path: "dateTimeFormats/availableFormats/y"
                        },
                        shortdateshorttime: {
                            path: "dateTimeFormats/short",
                            parts: ["shorttime", "shortdate"]
                        },
                        longdatelongtime: {
                            path: "dateTimeFormats/medium",
                            parts: ["longtime", "longdate"]
                        },
                        month: {
                            pattern: "LLLL"
                        },
                        shortyear: {
                            pattern: "yy"
                        },
                        dayofweek: {
                            pattern: "EEEE"
                        },
                        quarter: {
                            pattern: "QQQ"
                        },
                        millisecond: {
                            pattern: "SSS"
                        },
                        hour: {
                            pattern: "HH"
                        },
                        minute: {
                            pattern: "mm"
                        },
                        second: {
                            pattern: "ss"
                        }
                    };
                    const globalizeDateLocalization = {
                        engine: function() {
                            return "globalize"
                        },
                        _getPatternByFormat: function(format) {
                            const that = this;
                            const lowerFormat = format.toLowerCase();
                            const globalizeFormat = FORMATS_TO_GLOBALIZE_MAP[lowerFormat];
                            if ("datetime-local" === lowerFormat) {
                                return "yyyy-MM-ddTHH':'mm':'ss"
                            }
                            if (!globalizeFormat) {
                                return
                            }
                            let result = globalizeFormat.path && that._getFormatStringByPath(globalizeFormat.path) || globalizeFormat.pattern;
                            if (globalizeFormat.parts) {
                                iteratorUtils.each(globalizeFormat.parts, ((index, part) => {
                                    result = result.replace("{" + index + "}", that._getPatternByFormat(part))
                                }))
                            }
                            return result
                        },
                        _getFormatStringByPath: function(path) {
                            return _globalize.default.locale().main("dates/calendars/gregorian/" + path)
                        },
                        getPeriodNames: function(format, type) {
                            format = format || "wide";
                            type = "format" === type ? type : "stand-alone";
                            const json = _globalize.default.locale().main(`dates/calendars/gregorian/dayPeriods/${type}/${format}`);
                            return [json.am, json.pm]
                        },
                        getMonthNames: function(format, type) {
                            const months = _globalize.default.locale().main("dates/calendars/gregorian/months/" + ("format" === type ? type : "stand-alone") + "/" + (format || "wide"));
                            return iteratorUtils.map(months, (month => month))
                        },
                        getDayNames: function(format) {
                            const days = _globalize.default.locale().main("dates/calendars/gregorian/days/stand-alone/" + (format || "wide"));
                            return iteratorUtils.map(days, (day => day))
                        },
                        getTimeSeparator: function() {
                            return _globalize.default.locale().main("numbers/symbols-numberSystem-latn/timeSeparator")
                        },
                        removeRtlMarks: text => text.replace(RTL_MARKS_REGEX, ""),
                        format: function(date, format) {
                            if (!date) {
                                return
                            }
                            if (!format) {
                                return date
                            }
                            let formatter;
                            let formatCacheKey;
                            if ("function" === typeof format) {
                                return format(date)
                            }
                            if (format.formatter) {
                                return format.formatter(date)
                            }
                            format = format.type || format;
                            if ("string" === typeof format) {
                                formatCacheKey = _globalize.default.locale().locale + ":" + format;
                                formatter = formattersCache[formatCacheKey];
                                if (!formatter) {
                                    format = {
                                        raw: this._getPatternByFormat(format) || format
                                    };
                                    formatter = formattersCache[formatCacheKey] = _globalize.default.dateFormatter(format)
                                }
                            } else {
                                if (!this._isAcceptableFormat(format)) {
                                    return
                                }
                                formatter = _globalize.default.dateFormatter(format)
                            }
                            return this.removeRtlMarks(formatter(date))
                        },
                        parse: function(text, format) {
                            if (!text) {
                                return
                            }
                            if (!format || "function" === typeof format || (0, _type.isObject)(format) && !this._isAcceptableFormat(format)) {
                                if (format) {
                                    const parsedValue = this.callBase(text, format);
                                    if (parsedValue) {
                                        return parsedValue
                                    }
                                }
                                return _globalize.default.parseDate(text)
                            }
                            if (format.parser) {
                                return format.parser(text)
                            }
                            if ("string" === typeof format) {
                                format = {
                                    raw: this._getPatternByFormat(format) || format
                                }
                            }
                            const parsedDate = _globalize.default.parseDate(text, format);
                            return parsedDate ? parsedDate : this.callBase(text, format)
                        },
                        _isAcceptableFormat: function(format) {
                            if (format.parser) {
                                return true
                            }
                            for (let i = 0; i < ACCEPTABLE_JSON_FORMAT_PROPERTIES.length; i++) {
                                if (Object.prototype.hasOwnProperty.call(format, ACCEPTABLE_JSON_FORMAT_PROPERTIES[i])) {
                                    return true
                                }
                            }
                        },
                        firstDayOfWeekIndex: function() {
                            const firstDay = _globalize.default.locale().supplemental.weekData.firstDay();
                            return this._getDayKeys().indexOf(firstDay)
                        },
                        _getDayKeys: function() {
                            const days = _globalize.default.locale().main("dates/calendars/gregorian/days/format/short");
                            return iteratorUtils.map(days, ((day, key) => key))
                        }
                    };
                    _date2.default.resetInjection();
                    _date2.default.inject(globalizeDateLocalization)
                }
            },
        84207:
            /*!*******************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/core/localization/globalize/message.js ***!
              \*******************************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                __webpack_require__( /*! ./core */ 23805);
                var _globalize = _interopRequireDefault(__webpack_require__( /*! globalize */ 87626));
                var _message = _interopRequireDefault(__webpack_require__( /*! ../message */ 4671));
                var _core2 = _interopRequireDefault(__webpack_require__( /*! ../core */ 84109));
                __webpack_require__( /*! globalize/message */ 87626);

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                if (_globalize.default && _globalize.default.formatMessage) {
                    const DEFAULT_LOCALE = "en";
                    const originalLoadMessages = _globalize.default.loadMessages;
                    _globalize.default.loadMessages = messages => {
                        _message.default.load(messages)
                    };
                    const globalizeMessageLocalization = {
                        engine: function() {
                            return "globalize"
                        },
                        ctor: function() {
                            this.load(this._dictionary)
                        },
                        load: function(messages) {
                            this.callBase(messages);
                            originalLoadMessages(messages)
                        },
                        getMessagesByLocales: function() {
                            return _globalize.default.cldr.get("globalize-messages")
                        },
                        getFormatter: function(key, locale) {
                            const currentLocale = locale || _core2.default.locale();
                            let formatter = this._getFormatterBase(key, locale);
                            if (!formatter) {
                                formatter = this._formatterByGlobalize(key, locale)
                            }
                            if (!formatter && currentLocale !== DEFAULT_LOCALE) {
                                formatter = this.getFormatter(key, DEFAULT_LOCALE)
                            }
                            return formatter
                        },
                        _formatterByGlobalize: function(key, locale) {
                            const currentGlobalize = !locale || locale === _core2.default.locale() ? _globalize.default : new _globalize.default(locale);
                            let result;
                            if (this._messageLoaded(key, locale)) {
                                result = currentGlobalize.messageFormatter(key)
                            }
                            return result
                        },
                        _messageLoaded: function(key, locale) {
                            const currentCldr = locale ? new _globalize.default(locale).cldr : _globalize.default.locale();
                            const value = currentCldr.get(["globalize-messages/{bundle}", key]);
                            return !!value
                        },
                        _loadSingle: function(key, value, locale) {
                            const data = {};
                            data[locale] = {};
                            data[locale][key] = value;
                            this.load(data)
                        }
                    };
                    _message.default.inject(globalizeMessageLocalization)
                }
            },
        13203:
            /*!******************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/core/localization/globalize/number.js ***!
              \******************************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                __webpack_require__( /*! ./core */ 23805);
                var _globalize = _interopRequireDefault(__webpack_require__( /*! globalize */ 87626));
                var _number = _interopRequireDefault(__webpack_require__( /*! ../number */ 52771));
                var _errors = _interopRequireDefault(__webpack_require__( /*! ../../../../core/errors */ 87129));
                __webpack_require__( /*! globalize/number */ 87626);

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                if (_globalize.default && _globalize.default.formatNumber) {
                    if ("en" === _globalize.default.locale().locale) {
                        _globalize.default.locale("en")
                    }
                    const formattersCache = {};
                    const getFormatter = format => {
                        let formatter;
                        let formatCacheKey;
                        if ("object" === typeof format) {
                            formatCacheKey = _globalize.default.locale().locale + ":" + JSON.stringify(format)
                        } else {
                            formatCacheKey = _globalize.default.locale().locale + ":" + format
                        }
                        formatter = formattersCache[formatCacheKey];
                        if (!formatter) {
                            formatter = formattersCache[formatCacheKey] = _globalize.default.numberFormatter(format)
                        }
                        return formatter
                    };
                    const globalizeNumberLocalization = {
                        engine: function() {
                            return "globalize"
                        },
                        _formatNumberCore: function(value, format, formatConfig) {
                            if ("exponential" === format) {
                                return this.callBase.apply(this, arguments)
                            }
                            return getFormatter(this._normalizeFormatConfig(format, formatConfig, value))(value)
                        },
                        _normalizeFormatConfig: function(format, formatConfig, value) {
                            let config;
                            if ("decimal" === format) {
                                config = {
                                    minimumIntegerDigits: formatConfig.precision || 1,
                                    useGrouping: false,
                                    minimumFractionDigits: 0,
                                    maximumFractionDigits: 20,
                                    round: value < 0 ? "ceil" : "floor"
                                }
                            } else {
                                config = this._getPrecisionConfig(formatConfig.precision)
                            }
                            if ("percent" === format) {
                                config.style = "percent"
                            }
                            return config
                        },
                        _getPrecisionConfig: function(precision) {
                            let config;
                            if (null === precision) {
                                config = {
                                    minimumFractionDigits: 0,
                                    maximumFractionDigits: 20
                                }
                            } else {
                                config = {
                                    minimumFractionDigits: precision || 0,
                                    maximumFractionDigits: precision || 0
                                }
                            }
                            return config
                        },
                        format: function(value, format) {
                            if ("number" !== typeof value) {
                                return value
                            }
                            format = this._normalizeFormat(format);
                            if (!format || "function" !== typeof format && !format.type && !format.formatter) {
                                return getFormatter(format)(value)
                            }
                            return this.callBase.apply(this, arguments)
                        },
                        parse: function(text, format) {
                            if (!text) {
                                return
                            }
                            if (format && (format.parser || "string" === typeof format)) {
                                return this.callBase.apply(this, arguments)
                            }
                            if (format) {
                                _errors.default.log("W0011")
                            }
                            let result = _globalize.default.parseNumber(text);
                            if (isNaN(result)) {
                                result = this.callBase.apply(this, arguments)
                            }
                            return result
                        }
                    };
                    _number.default.resetInjection();
                    _number.default.inject(globalizeNumberLocalization)
                }
            },
        21840:
            /*!***********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/core/localization/intl/date.js ***!
              \***********************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 52576);
                var _core = (e = __webpack_require__( /*! ../core */ 84109), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                const SYMBOLS_TO_REMOVE_REGEX = /[\u200E\u200F]/g;
                const NARROW_NO_BREAK_SPACE_REGEX = /[\u202F]/g;
                const getIntlFormatter = format => date => {
                    if (!format.timeZoneName) {
                        const year = date.getFullYear();
                        const recognizableAsTwentyCentury = String(year).length < 3;
                        const safeYearShift = 400;
                        const temporaryYearValue = recognizableAsTwentyCentury ? year + safeYearShift : year;
                        const utcDate = new Date(Date.UTC(temporaryYearValue, date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));
                        if (recognizableAsTwentyCentury) {
                            utcDate.setFullYear(year)
                        }
                        const utcFormat = (0, _extend.extend)({
                            timeZone: "UTC"
                        }, format);
                        return formatDateTime(utcDate, utcFormat)
                    }
                    return formatDateTime(date, format)
                };
                const formattersCache = {};
                const getFormatter = format => {
                    const key = _core.default.locale() + "/" + JSON.stringify(format);
                    if (!formattersCache[key]) {
                        formattersCache[key] = new Intl.DateTimeFormat(_core.default.locale(), format).format
                    }
                    return formattersCache[key]
                };

                function formatDateTime(date, format) {
                    return getFormatter(format)(date).replace(SYMBOLS_TO_REMOVE_REGEX, "").replace(NARROW_NO_BREAK_SPACE_REGEX, " ")
                }
                const formatNumber = number => new Intl.NumberFormat(_core.default.locale()).format(number);
                const getAlternativeNumeralsMap = (() => {
                    const numeralsMapCache = {};
                    return locale => {
                        if (!(locale in numeralsMapCache)) {
                            if ("0" === formatNumber(0)) {
                                numeralsMapCache[locale] = false;
                                return false
                            }
                            numeralsMapCache[locale] = {};
                            for (let i = 0; i < 10; ++i) {
                                numeralsMapCache[locale][formatNumber(i)] = i
                            }
                        }
                        return numeralsMapCache[locale]
                    }
                })();
                const normalizeNumerals = dateString => {
                    const alternativeNumeralsMap = getAlternativeNumeralsMap(_core.default.locale());
                    if (!alternativeNumeralsMap) {
                        return dateString
                    }
                    return dateString.split("").map((sign => sign in alternativeNumeralsMap ? String(alternativeNumeralsMap[sign]) : sign)).join("")
                };
                const removeLeadingZeroes = str => str.replace(/(\D)0+(\d)/g, "$1$2");
                const normalizeMonth = text => text.replace("d\u2019", "de ");
                const intlFormats = {
                    day: {
                        day: "numeric"
                    },
                    date: {
                        year: "numeric",
                        month: "long",
                        day: "numeric"
                    },
                    dayofweek: {
                        weekday: "long"
                    },
                    longdate: {
                        weekday: "long",
                        year: "numeric",
                        month: "long",
                        day: "numeric"
                    },
                    longdatelongtime: {
                        weekday: "long",
                        year: "numeric",
                        month: "long",
                        day: "numeric",
                        hour: "numeric",
                        minute: "numeric",
                        second: "numeric"
                    },
                    longtime: {
                        hour: "numeric",
                        minute: "numeric",
                        second: "numeric"
                    },
                    month: {
                        month: "long"
                    },
                    monthandday: {
                        month: "long",
                        day: "numeric"
                    },
                    monthandyear: {
                        year: "numeric",
                        month: "long"
                    },
                    shortdate: {},
                    shorttime: {
                        hour: "numeric",
                        minute: "numeric"
                    },
                    shortyear: {
                        year: "2-digit"
                    },
                    year: {
                        year: "numeric"
                    }
                };
                Object.defineProperty(intlFormats, "shortdateshorttime", {
                    get: function() {
                        const defaultOptions = Intl.DateTimeFormat(_core.default.locale()).resolvedOptions();
                        return {
                            year: defaultOptions.year,
                            month: defaultOptions.month,
                            day: defaultOptions.day,
                            hour: "numeric",
                            minute: "numeric"
                        }
                    }
                });
                const monthNameStrategies = {
                    standalone: function(monthIndex, monthFormat) {
                        const date = new Date(1999, monthIndex, 13, 1);
                        const dateString = getIntlFormatter({
                            month: monthFormat
                        })(date);
                        return dateString
                    },
                    format: function(monthIndex, monthFormat) {
                        const date = new Date(0, monthIndex, 13, 1);
                        const dateString = normalizeMonth(getIntlFormatter({
                            day: "numeric",
                            month: monthFormat
                        })(date));
                        const parts = dateString.split(" ").filter((part => part.indexOf("13") < 0));
                        if (1 === parts.length) {
                            return parts[0]
                        } else if (2 === parts.length) {
                            return parts[0].length > parts[1].length ? parts[0] : parts[1]
                        }
                        return monthNameStrategies.standalone(monthIndex, monthFormat)
                    }
                };
                exports.default = {
                    engine: function() {
                        return "intl"
                    },
                    getMonthNames: function(format, type) {
                        const monthFormat = {
                            wide: "long",
                            abbreviated: "short",
                            narrow: "narrow"
                        } [format || "wide"];
                        type = "format" === type ? type : "standalone";
                        return Array.apply(null, new Array(12)).map(((_, monthIndex) => monthNameStrategies[type](monthIndex, monthFormat)))
                    },
                    getDayNames: function(format) {
                        const result = (format => Array.apply(null, new Array(7)).map(((_, dayIndex) => getIntlFormatter({
                            weekday: format
                        })(new Date(0, 0, dayIndex)))))({
                            wide: "long",
                            abbreviated: "short",
                            short: "narrow",
                            narrow: "narrow"
                        } [format || "wide"]);
                        return result
                    },
                    getPeriodNames: function() {
                        const hour12Formatter = getIntlFormatter({
                            hour: "numeric",
                            hour12: true
                        });
                        return [1, 13].map((hours => {
                            const hourNumberText = formatNumber(1);
                            const timeParts = hour12Formatter(new Date(0, 0, 1, hours)).split(hourNumberText);
                            if (2 !== timeParts.length) {
                                return ""
                            }
                            const biggerPart = timeParts[0].length > timeParts[1].length ? timeParts[0] : timeParts[1];
                            return biggerPart.trim()
                        }))
                    },
                    format: function(date, format) {
                        if (!date) {
                            return
                        }
                        if (!format) {
                            return date
                        }
                        if ("function" !== typeof format && !format.formatter) {
                            format = format.type || format
                        }
                        const intlFormat = (format => "string" === typeof format && intlFormats[format.toLowerCase()])(format);
                        if (intlFormat) {
                            return getIntlFormatter(intlFormat)(date)
                        }
                        const formatType = typeof format;
                        if (format.formatter || "function" === formatType || "string" === formatType) {
                            return this.callBase.apply(this, arguments)
                        }
                        return getIntlFormatter(format)(date)
                    },
                    parse: function(dateString, format) {
                        let formatter;
                        if (format && !format.parser && "string" === typeof dateString) {
                            dateString = normalizeMonth(dateString);
                            formatter = date => normalizeMonth(this.format(date, format))
                        }
                        return this.callBase(dateString, formatter || format)
                    },
                    _parseDateBySimpleFormat: function(dateString, format) {
                        dateString = normalizeNumerals(dateString);
                        const formatParts = this.getFormatParts(format);
                        const dateParts = dateString.split(/\D+/).filter((part => part.length > 0));
                        if (formatParts.length !== dateParts.length) {
                            return
                        }
                        const dateArgs = this._generateDateArgs(formatParts, dateParts);
                        const constructValidDate = ampmShift => {
                            const parsedDate = ((dateArgs, ampmShift) => {
                                const hoursShift = ampmShift ? 12 : 0;
                                return new Date(dateArgs.year, dateArgs.month, dateArgs.day, (dateArgs.hours + hoursShift) % 24, dateArgs.minutes, dateArgs.seconds)
                            })(dateArgs, ampmShift);
                            if (actual = normalizeNumerals(this.format(parsedDate, format)), expected = dateString, removeLeadingZeroes(actual) === removeLeadingZeroes(expected)) {
                                return parsedDate
                            }
                            var actual, expected
                        };
                        return constructValidDate(false) || constructValidDate(true)
                    },
                    _generateDateArgs: function(formatParts, dateParts) {
                        const currentDate = new Date;
                        const dateArgs = {
                            year: currentDate.getFullYear(),
                            month: currentDate.getMonth(),
                            day: currentDate.getDate(),
                            hours: 0,
                            minutes: 0,
                            seconds: 0
                        };
                        formatParts.forEach(((formatPart, index) => {
                            const datePart = dateParts[index];
                            let parsed = parseInt(datePart, 10);
                            if ("month" === formatPart) {
                                parsed -= 1
                            }
                            dateArgs[formatPart] = parsed
                        }));
                        return dateArgs
                    },
                    formatUsesMonthName: function(format) {
                        if ("object" === typeof format && !(format.type || format.format)) {
                            return "long" === format.month
                        }
                        return this.callBase.apply(this, arguments)
                    },
                    formatUsesDayName: function(format) {
                        if ("object" === typeof format && !(format.type || format.format)) {
                            return "long" === format.weekday
                        }
                        return this.callBase.apply(this, arguments)
                    },
                    getTimeSeparator: function() {
                        return normalizeNumerals(formatDateTime(new Date(2001, 1, 1, 11, 11), {
                            hour: "numeric",
                            minute: "numeric",
                            hour12: false
                        })).replace(/\d/g, "")
                    },
                    getFormatParts: function(format) {
                        if ("string" === typeof format) {
                            return this.callBase(format)
                        }
                        const intlFormat = (0, _extend.extend)({}, intlFormats[format.toLowerCase()]);
                        const date = new Date(2001, 2, 4, 5, 6, 7);
                        let formattedDate = getIntlFormatter(intlFormat)(date);
                        formattedDate = normalizeNumerals(formattedDate);
                        return [{
                            name: "year",
                            value: 1
                        }, {
                            name: "month",
                            value: 3
                        }, {
                            name: "day",
                            value: 4
                        }, {
                            name: "hours",
                            value: 5
                        }, {
                            name: "minutes",
                            value: 6
                        }, {
                            name: "seconds",
                            value: 7
                        }].map((part => ({
                            name: part.name,
                            index: formattedDate.indexOf(part.value)
                        }))).filter((part => part.index > -1)).sort(((a, b) => a.index - b.index)).map((part => part.name))
                    }
                };
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        63265:
            /*!*************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/core/localization/intl/number.js ***!
              \*************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _common = __webpack_require__( /*! ../../../../common */ 83077);
                var _core = _interopRequireDefault(__webpack_require__( /*! ../core */ 84109));
                var _open_xml_currency_format = _interopRequireDefault(__webpack_require__( /*! ../open_xml_currency_format */ 70832));
                var _accounting_formats = _interopRequireDefault(__webpack_require__( /*! ../cldr-data/accounting_formats */ 55581));

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const CURRENCY_STYLES = ["standard", "accounting"];
                const detectCurrencySymbolRegex = /([^\s0]+)?(\s*)0*[.,]*0*(\s*)([^\s0]+)?/;
                const formattersCache = {};
                const getFormatter = format => {
                    const key = _core.default.locale() + "/" + JSON.stringify(format);
                    if (!formattersCache[key]) {
                        formattersCache[key] = new Intl.NumberFormat(_core.default.locale(), format).format
                    }
                    return formattersCache[key]
                };
                exports.default = {
                    engine: function() {
                        return "intl"
                    },
                    _formatNumberCore: function(value, format, formatConfig) {
                        if ("exponential" === format) {
                            return this.callBase.apply(this, arguments)
                        }
                        return getFormatter(this._normalizeFormatConfig(format, formatConfig, value))(value)
                    },
                    _normalizeFormatConfig: function(format, formatConfig, value) {
                        let config;
                        if ("decimal" === format) {
                            const fractionDigits = String(value).split(".")[1];
                            config = {
                                minimumIntegerDigits: formatConfig.precision || void 0,
                                useGrouping: false,
                                maximumFractionDigits: fractionDigits && fractionDigits.length,
                                round: value < 0 ? "ceil" : "floor"
                            }
                        } else {
                            config = this._getPrecisionConfig(formatConfig.precision)
                        }
                        if ("percent" === format) {
                            config.style = "percent"
                        } else if ("currency" === format) {
                            const useAccountingStyle = formatConfig.useCurrencyAccountingStyle ?? (0, _common.config)().defaultUseCurrencyAccountingStyle;
                            config.style = "currency";
                            config.currency = formatConfig.currency || (0, _common.config)().defaultCurrency;
                            config.currencySign = CURRENCY_STYLES[+useAccountingStyle]
                        }
                        return config
                    },
                    _getPrecisionConfig: function(precision) {
                        let config;
                        if (null === precision) {
                            config = {
                                minimumFractionDigits: 0,
                                maximumFractionDigits: 20
                            }
                        } else {
                            config = {
                                minimumFractionDigits: precision || 0,
                                maximumFractionDigits: precision || 0
                            }
                        }
                        return config
                    },
                    format: function(value, format) {
                        if ("number" !== typeof value) {
                            return value
                        }
                        format = this._normalizeFormat(format);
                        if ("default" === format.currency) {
                            format.currency = (0, _common.config)().defaultCurrency
                        }
                        if (!format || "function" !== typeof format && !format.type && !format.formatter) {
                            return getFormatter(format)(value)
                        }
                        const result = this.callBase.apply(this, arguments);
                        return result
                    },
                    _getCurrencySymbolInfo: function(currency) {
                        const formatter = (currency => new Intl.NumberFormat(_core.default.locale(), {
                            style: "currency",
                            currency: currency
                        }))(currency);
                        return this._extractCurrencySymbolInfo(formatter.format(0))
                    },
                    _extractCurrencySymbolInfo: function(currencyValueString) {
                        const match = detectCurrencySymbolRegex.exec(currencyValueString) || [];
                        const position = match[1] ? "before" : "after";
                        const symbol = match[1] || match[4] || "";
                        const delimiter = match[2] || match[3] || "";
                        return {
                            position: position,
                            symbol: symbol,
                            delimiter: delimiter
                        }
                    },
                    getCurrencySymbol: function(currency) {
                        if (!currency) {
                            currency = (0, _common.config)().defaultCurrency
                        }
                        const symbolInfo = this._getCurrencySymbolInfo(currency);
                        return {
                            symbol: symbolInfo.symbol
                        }
                    },
                    getOpenXmlCurrencyFormat: function(currency) {
                        const targetCurrency = currency || (0, _common.config)().defaultCurrency;
                        const currencySymbol = this._getCurrencySymbolInfo(targetCurrency).symbol;
                        const closestAccountingFormat = _core.default.getValueByClosestLocale((locale => _accounting_formats.default[locale]));
                        return (0, _open_xml_currency_format.default)(currencySymbol, closestAccountingFormat)
                    }
                };
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        64333:
            /*!****************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/core/localization/language_codes.js ***!
              \****************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.getLanguageId = function() {
                    return LANGUAGE_CODES[_core.default.locale()]
                };
                var _core = (e = __webpack_require__( /*! ./core */ 84109), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                const LANGUAGE_CODES = {
                    ar: 1,
                    bg: 2,
                    ca: 3,
                    "zh-Hans": 4,
                    cs: 5,
                    da: 6,
                    de: 7,
                    el: 8,
                    en: 9,
                    es: 10,
                    fi: 11,
                    fr: 12,
                    he: 13,
                    hu: 14,
                    is: 15,
                    it: 16,
                    ja: 17,
                    ko: 18,
                    nl: 19,
                    no: 20,
                    pl: 21,
                    pt: 22,
                    rm: 23,
                    ro: 24,
                    ru: 25,
                    hr: 26,
                    sk: 27,
                    sq: 28,
                    sv: 29,
                    th: 30,
                    tr: 31,
                    ur: 32,
                    id: 33,
                    uk: 34,
                    be: 35,
                    sl: 36,
                    et: 37,
                    lv: 38,
                    lt: 39,
                    tg: 40,
                    fa: 41,
                    vi: 42,
                    hy: 43,
                    az: 44,
                    eu: 45,
                    hsb: 46,
                    mk: 47,
                    tn: 50,
                    xh: 52,
                    zu: 53,
                    af: 54,
                    ka: 55,
                    fo: 56,
                    hi: 57,
                    mt: 58,
                    se: 59,
                    ga: 60,
                    ms: 62,
                    kk: 63,
                    ky: 64,
                    sw: 65,
                    tk: 66,
                    uz: 67,
                    tt: 68,
                    bn: 69,
                    pa: 70,
                    gu: 71,
                    or: 72,
                    ta: 73,
                    te: 74,
                    kn: 75,
                    ml: 76,
                    as: 77,
                    mr: 78,
                    sa: 79,
                    mn: 80,
                    bo: 81,
                    cy: 82,
                    km: 83,
                    lo: 84,
                    gl: 86,
                    kok: 87,
                    syr: 90,
                    si: 91,
                    iu: 93,
                    am: 94,
                    tzm: 95,
                    ne: 97,
                    fy: 98,
                    ps: 99,
                    fil: 100,
                    dv: 101,
                    ha: 104,
                    yo: 106,
                    quz: 107,
                    nso: 108,
                    ba: 109,
                    lb: 110,
                    kl: 111,
                    ig: 112,
                    ii: 120,
                    arn: 122,
                    moh: 124,
                    br: 126,
                    ug: 128,
                    mi: 129,
                    oc: 130,
                    co: 131,
                    gsw: 132,
                    sah: 133,
                    qut: 134,
                    rw: 135,
                    wo: 136,
                    prs: 140,
                    gd: 145,
                    "ar-SA": 1025,
                    "bg-BG": 1026,
                    "ca-ES": 1027,
                    "zh-TW": 1028,
                    "cs-CZ": 1029,
                    "da-DK": 1030,
                    "de-DE": 1031,
                    "el-GR": 1032,
                    "en-US": 1033,
                    "fi-FI": 1035,
                    "fr-FR": 1036,
                    "he-IL": 1037,
                    "hu-HU": 1038,
                    "is-IS": 1039,
                    "it-IT": 1040,
                    "ja-JP": 1041,
                    "ko-KR": 1042,
                    "nl-NL": 1043,
                    "nb-NO": 1044,
                    "pl-PL": 1045,
                    "pt-BR": 1046,
                    "rm-CH": 1047,
                    "ro-RO": 1048,
                    "ru-RU": 1049,
                    "hr-HR": 1050,
                    "sk-SK": 1051,
                    "sq-AL": 1052,
                    "sv-SE": 1053,
                    "th-TH": 1054,
                    "tr-TR": 1055,
                    "ur-PK": 1056,
                    "id-ID": 1057,
                    "uk-UA": 1058,
                    "be-BY": 1059,
                    "sl-SI": 1060,
                    "et-EE": 1061,
                    "lv-LV": 1062,
                    "lt-LT": 1063,
                    "tg-Cyrl-TJ": 1064,
                    "fa-IR": 1065,
                    "vi-VN": 1066,
                    "hy-AM": 1067,
                    "az-Latn-AZ": 1068,
                    "eu-ES": 1069,
                    "hsb-DE": 1070,
                    "mk-MK": 1071,
                    "tn-ZA": 1074,
                    "xh-ZA": 1076,
                    "zu-ZA": 1077,
                    "af-ZA": 1078,
                    "ka-GE": 1079,
                    "fo-FO": 1080,
                    "hi-IN": 1081,
                    "mt-MT": 1082,
                    "se-NO": 1083,
                    "ms-MY": 1086,
                    "kk-KZ": 1087,
                    "ky-KG": 1088,
                    "sw-KE": 1089,
                    "tk-TM": 1090,
                    "uz-Latn-UZ": 1091,
                    "tt-RU": 1092,
                    "bn-IN": 1093,
                    "pa-IN": 1094,
                    "gu-IN": 1095,
                    "or-IN": 1096,
                    "ta-IN": 1097,
                    "te-IN": 1098,
                    "kn-IN": 1099,
                    "ml-IN": 1100,
                    "as-IN": 1101,
                    "mr-IN": 1102,
                    "sa-IN": 1103,
                    "mn-MN": 1104,
                    "bo-CN": 1105,
                    "cy-GB": 1106,
                    "km-KH": 1107,
                    "lo-LA": 1108,
                    "gl-ES": 1110,
                    "kok-IN": 1111,
                    "syr-SY": 1114,
                    "si-LK": 1115,
                    "iu-Cans-CA": 1117,
                    "am-ET": 1118,
                    "ne-NP": 1121,
                    "fy-NL": 1122,
                    "ps-AF": 1123,
                    "fil-PH": 1124,
                    "dv-MV": 1125,
                    "ha-Latn-NG": 1128,
                    "yo-NG": 1130,
                    "quz-BO": 1131,
                    "nso-ZA": 1132,
                    "ba-RU": 1133,
                    "lb-LU": 1134,
                    "kl-GL": 1135,
                    "ig-NG": 1136,
                    "ii-CN": 1144,
                    "arn-CL": 1146,
                    "moh-CA": 1148,
                    "br-FR": 1150,
                    "ug-CN": 1152,
                    "mi-NZ": 1153,
                    "oc-FR": 1154,
                    "co-FR": 1155,
                    "gsw-FR": 1156,
                    "sah-RU": 1157,
                    "qut-GT": 1158,
                    "rw-RW": 1159,
                    "wo-SN": 1160,
                    "prs-AF": 1164,
                    "gd-GB": 1169,
                    "ar-IQ": 2049,
                    "zh-CN": 2052,
                    "de-CH": 2055,
                    "en-GB": 2057,
                    "es-MX": 2058,
                    "fr-BE": 2060,
                    "it-CH": 2064,
                    "nl-BE": 2067,
                    "nn-NO": 2068,
                    "pt-PT": 2070,
                    "sr-Latn-CS": 2074,
                    "sv-FI": 2077,
                    "az-Cyrl-AZ": 2092,
                    "dsb-DE": 2094,
                    "se-SE": 2107,
                    "ga-IE": 2108,
                    "ms-BN": 2110,
                    "uz-Cyrl-UZ": 2115,
                    "bn-BD": 2117,
                    "mn-Mong-CN": 2128,
                    "iu-Latn-CA": 2141,
                    "tzm-Latn-DZ": 2143,
                    "quz-EC": 2155,
                    "ar-EG": 3073,
                    "zh-HK": 3076,
                    "de-AT": 3079,
                    "en-AU": 3081,
                    "es-ES": 3082,
                    "fr-CA": 3084,
                    "sr-Cyrl-CS": 3098,
                    "se-FI": 3131,
                    "quz-PE": 3179,
                    "ar-LY": 4097,
                    "zh-SG": 4100,
                    "de-LU": 4103,
                    "en-CA": 4105,
                    "es-GT": 4106,
                    "fr-CH": 4108,
                    "hr-BA": 4122,
                    "smj-NO": 4155,
                    "ar-DZ": 5121,
                    "zh-MO": 5124,
                    "de-LI": 5127,
                    "en-NZ": 5129,
                    "es-CR": 5130,
                    "fr-LU": 5132,
                    "bs-Latn-BA": 5146,
                    "smj-SE": 5179,
                    "ar-MA": 6145,
                    "en-IE": 6153,
                    "es-PA": 6154,
                    "fr-MC": 6156,
                    "sr-Latn-BA": 6170,
                    "sma-NO": 6203,
                    "ar-TN": 7169,
                    "en-ZA": 7177,
                    "es-DO": 7178,
                    "sr-Cyrl-BA": 7194,
                    "sma-SE": 7227,
                    "ar-OM": 8193,
                    "en-JM": 8201,
                    "es-VE": 8202,
                    "bs-Cyrl-BA": 8218,
                    "sms-FI": 8251,
                    "ar-YE": 9217,
                    "en-029": 9225,
                    "es-CO": 9226,
                    "sr-Latn-RS": 9242,
                    "smn-FI": 9275,
                    "ar-SY": 10241,
                    "en-BZ": 10249,
                    "es-PE": 10250,
                    "sr-Cyrl-RS": 10266,
                    "ar-JO": 11265,
                    "en-TT": 11273,
                    "es-AR": 11274,
                    "sr-Latn-ME": 11290,
                    "ar-LB": 12289,
                    "en-ZW": 12297,
                    "es-EC": 12298,
                    "sr-Cyrl-ME": 12314,
                    "ar-KW": 13313,
                    "en-PH": 13321,
                    "es-CL": 13322,
                    "ar-AE": 14337,
                    "es-UY": 14346,
                    "ar-BH": 15361,
                    "es-PY": 15370,
                    "ar-QA": 16385,
                    "en-IN": 16393,
                    "es-BO": 16394,
                    "en-MY": 17417,
                    "es-SV": 17418,
                    "en-SG": 18441,
                    "es-HN": 18442,
                    "es-NI": 19466,
                    "es-PR": 20490,
                    "es-US": 21514,
                    "bs-Cyrl": 25626,
                    "bs-Latn": 26650,
                    "sr-Cyrl": 27674,
                    "sr-Latn": 28698,
                    smn: 28731,
                    "az-Cyrl": 29740,
                    sms: 29755,
                    zh: 30724,
                    nn: 30740,
                    bs: 30746,
                    "az-Latn": 30764,
                    sma: 30779,
                    "uz-Cyrl": 30787,
                    "mn-Cyrl": 30800,
                    "iu-Cans": 30813,
                    "zh-Hant": 31748,
                    nb: 31764,
                    sr: 31770,
                    "tg-Cyrl": 31784,
                    dsb: 31790,
                    smj: 31803,
                    "uz-Latn": 31811,
                    "mn-Mong": 31824,
                    "iu-Latn": 31837,
                    "tzm-Latn": 31839,
                    "ha-Latn": 31848
                }
            },
        83445:
            /*!******************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/core/localization/ldml/date.format.js ***!
              \******************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.getFormat = void 0;
                var _number = (e = __webpack_require__( /*! ../number */ 52771), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                const FORMAT_SEPARATORS = " .,:;/\\<>()-[]\u060c";
                const checkDigit = function(char) {
                    const code = char && _number.default.convertDigits(char, false).charCodeAt(0);
                    const zeroCode = _number.default.convertDigits("0", false).charCodeAt(0);
                    return zeroCode <= code && code < zeroCode + 10
                };
                const checkPatternContinue = function(text, patterns, index, isDigit) {
                    const char = text[index];
                    const nextChar = text[index + 1];
                    if (!isDigit) {
                        if ("." === char || " " === char && ". m." === text.slice(index - 1, index + 3)) {
                            return true
                        }
                        if ("-" === char && !checkDigit(nextChar)) {
                            return true
                        }
                    }
                    const isDigitChanged = isDigit && patterns.some((pattern => text[index] !== pattern[index]));
                    return FORMAT_SEPARATORS.indexOf(char) < 0 && isDigit === checkDigit(char) && (!isDigit || isDigitChanged)
                };
                const getPatternStartIndex = function(defaultPattern, index) {
                    if (!checkDigit(defaultPattern[index])) {
                        while (index > 0 && !checkDigit(defaultPattern[index - 1]) && ("." === defaultPattern[index - 1] || FORMAT_SEPARATORS.indexOf(defaultPattern[index - 1]) < 0)) {
                            index--
                        }
                    }
                    return index
                };
                const formatValue = function(value, formatter) {
                    if (Array.isArray(value)) {
                        return value.map((function(value) {
                            return (formatter(value) || "").toString()
                        }))
                    }
                    return (formatter(value) || "").toString()
                };
                const ESCAPE_CHARS_REGEXP = /[a-zA-Z]/g;
                exports.getFormat = function(formatter) {
                    const processedIndexes = [];
                    const defaultPattern = formatValue(new Date(2009, 8, 8, 6, 5, 4), formatter);
                    const patternPositions = defaultPattern.split("").map((function(_, index) {
                        return index
                    }));
                    let result = defaultPattern;
                    const replacedPatterns = {};
                    const datePatterns = [{
                        date: new Date(2009, 8, 8, 6, 5, 4, 111),
                        pattern: "S"
                    }, {
                        date: new Date(2009, 8, 8, 6, 5, 2),
                        pattern: "s"
                    }, {
                        date: new Date(2009, 8, 8, 6, 2, 4),
                        pattern: "m"
                    }, {
                        date: new Date(2009, 8, 8, 18, 5, 4),
                        pattern: "H",
                        isDigit: true
                    }, {
                        date: new Date(2009, 8, 8, 2, 5, 4),
                        pattern: "h",
                        isDigit: true
                    }, {
                        date: new Date(2009, 8, 8, 18, 5, 4),
                        pattern: "a",
                        isDigit: false
                    }, {
                        date: new Date(2009, 8, 1, 6, 5, 4),
                        pattern: "d"
                    }, {
                        date: [new Date(2009, 8, 2, 6, 5, 4), new Date(2009, 8, 3, 6, 5, 4), new Date(2009, 8, 4, 6, 5, 4)],
                        pattern: "E"
                    }, {
                        date: new Date(2009, 9, 6, 6, 5, 4),
                        pattern: "M"
                    }, {
                        date: new Date(1998, 8, 8, 6, 5, 4),
                        pattern: "y"
                    }];
                    if (!result) {
                        return
                    }
                    datePatterns.forEach((function(test) {
                        const diff = function(defaultPattern, patterns, processedIndexes, isDigit) {
                            let i = 0;
                            const result = [];
                            const patternsFilter = function(pattern) {
                                return defaultPattern[i] !== pattern[i] && (void 0 === isDigit || checkDigit(defaultPattern[i]) === isDigit)
                            };
                            if (!Array.isArray(patterns)) {
                                patterns = [patterns]
                            }
                            for (i = 0; i < defaultPattern.length; i++) {
                                if (processedIndexes.indexOf(i) < 0 && patterns.filter(patternsFilter).length) {
                                    i = getPatternStartIndex(defaultPattern, i);
                                    do {
                                        isDigit = checkDigit(defaultPattern[i]);
                                        if (!result.length && !isDigit && checkDigit(patterns[0][i])) {
                                            break
                                        }
                                        result.push(i);
                                        processedIndexes.unshift(i);
                                        i++
                                    } while (defaultPattern[i] && checkPatternContinue(defaultPattern, patterns, i, isDigit));
                                    break
                                }
                            }
                            if (1 === result.length && ("0" === defaultPattern[processedIndexes[0] - 1] || "\u0660" === defaultPattern[processedIndexes[0] - 1])) {
                                processedIndexes.unshift(processedIndexes[0] - 1)
                            }
                            return result
                        }(defaultPattern, formatValue(test.date, formatter), processedIndexes, test.isDigit);
                        const pattern = "M" === test.pattern && !replacedPatterns.d ? "L" : test.pattern;
                        result = function(pattern, indexes, char, patternPositions) {
                            let i;
                            let index;
                            let patternIndex;
                            if (!checkDigit(pattern[indexes[0]] || "0")) {
                                const letterCount = Math.max(indexes.length <= 3 ? 3 : 4, char.length);
                                while (indexes.length > letterCount) {
                                    index = indexes.pop();
                                    patternIndex = patternPositions[index];
                                    patternPositions[index] = -1;
                                    for (i = index + 1; i < patternPositions.length; i++) {
                                        patternPositions[i]--
                                    }
                                    pattern = pattern.substr(0, patternIndex) + pattern.substr(patternIndex + 1)
                                }
                                index = indexes[indexes.length - 1] + 1, patternIndex = index < patternPositions.length ? patternPositions[index] : index;
                                while (indexes.length < letterCount) {
                                    indexes.push(indexes[indexes.length - 1] + 1);
                                    for (i = index; i < patternPositions.length; i++) {
                                        patternPositions[i]++
                                    }
                                    pattern = pattern.substr(0, patternIndex) + " " + pattern.substr(patternIndex)
                                }
                            }
                            pattern = function(pattern, indexes, char, patternPositions) {
                                const baseCharIndex = indexes[0];
                                const patternIndex = baseCharIndex < patternPositions.length ? patternPositions[baseCharIndex] : baseCharIndex;
                                indexes.forEach((function(_, index) {
                                    pattern = pattern.substr(0, patternIndex + index) + (char.length > 1 ? char[index] : char) + pattern.substr(patternIndex + index + 1)
                                }));
                                if (1 === indexes.length) {
                                    pattern = pattern.replace("0" + char, char + char);
                                    pattern = pattern.replace("\u0660" + char, char + char)
                                }
                                return pattern
                            }(pattern, indexes, char, patternPositions);
                            return pattern
                        }(result, diff, pattern, patternPositions);
                        replacedPatterns[pattern] = diff.length
                    }));
                    result = function(pattern, defaultPattern, processedIndexes, patternPositions) {
                        const escapeIndexes = defaultPattern.split("").map((function(char, index) {
                            if (processedIndexes.indexOf(index) < 0 && (char.match(ESCAPE_CHARS_REGEXP) || "'" === char)) {
                                return patternPositions[index]
                            }
                            return -1
                        }));
                        pattern = pattern.split("").map((function(char, index) {
                            let result = char;
                            const isCurrentCharEscaped = escapeIndexes.indexOf(index) >= 0;
                            const isPrevCharEscaped = index > 0 && escapeIndexes.indexOf(index - 1) >= 0;
                            const isNextCharEscaped = escapeIndexes.indexOf(index + 1) >= 0;
                            if (isCurrentCharEscaped) {
                                if (!isPrevCharEscaped) {
                                    result = "'" + result
                                }
                                if (!isNextCharEscaped) {
                                    result += "'"
                                }
                            }
                            return result
                        })).join("");
                        return pattern
                    }(result, defaultPattern, processedIndexes, patternPositions);
                    if (processedIndexes.length) {
                        return result
                    }
                }
            },
        86670:
            /*!*********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/core/localization/ldml/date.formatter.js ***!
              \*********************************************************************************************/
            function(__unused_webpack_module, exports) {
                exports.getFormatter = void 0;

                function leftPad(text, length) {
                    while (text.length < length) {
                        text = "0" + text
                    }
                    return text
                }
                const FORMAT_TYPES = {
                    3: "abbreviated",
                    4: "wide",
                    5: "narrow"
                };
                const LDML_FORMATTERS = {
                    y: function(date, count, useUtc) {
                        let year = date[useUtc ? "getUTCFullYear" : "getFullYear"]();
                        if (2 === count) {
                            year %= 100
                        }
                        return leftPad(year.toString(), count)
                    },
                    M: function(date, count, useUtc, dateParts) {
                        const month = date[useUtc ? "getUTCMonth" : "getMonth"]();
                        const formatType = FORMAT_TYPES[count];
                        if (formatType) {
                            return dateParts.getMonthNames(formatType, "format")[month]
                        }
                        return leftPad((month + 1).toString(), Math.min(count, 2))
                    },
                    L: function(date, count, useUtc, dateParts) {
                        const month = date[useUtc ? "getUTCMonth" : "getMonth"]();
                        const formatType = FORMAT_TYPES[count];
                        if (formatType) {
                            return dateParts.getMonthNames(formatType, "standalone")[month]
                        }
                        return leftPad((month + 1).toString(), Math.min(count, 2))
                    },
                    Q: function(date, count, useUtc, dateParts) {
                        const month = date[useUtc ? "getUTCMonth" : "getMonth"]();
                        const quarter = Math.floor(month / 3);
                        const formatType = FORMAT_TYPES[count];
                        if (formatType) {
                            return dateParts.getQuarterNames(formatType)[quarter]
                        }
                        return leftPad((quarter + 1).toString(), Math.min(count, 2))
                    },
                    E: function(date, count, useUtc, dateParts) {
                        const day = date[useUtc ? "getUTCDay" : "getDay"]();
                        const formatType = FORMAT_TYPES[count < 3 ? 3 : count];
                        return dateParts.getDayNames(formatType)[day]
                    },
                    a: function(date, count, useUtc, dateParts) {
                        const hours = date[useUtc ? "getUTCHours" : "getHours"]();
                        const period = hours < 12 ? 0 : 1;
                        const formatType = FORMAT_TYPES[count];
                        return dateParts.getPeriodNames(formatType)[period]
                    },
                    d: function(date, count, useUtc) {
                        return leftPad(date[useUtc ? "getUTCDate" : "getDate"]().toString(), Math.min(count, 2))
                    },
                    H: function(date, count, useUtc) {
                        return leftPad(date[useUtc ? "getUTCHours" : "getHours"]().toString(), Math.min(count, 2))
                    },
                    h: function(date, count, useUtc) {
                        const hours = date[useUtc ? "getUTCHours" : "getHours"]();
                        return leftPad((hours % 12 || 12).toString(), Math.min(count, 2))
                    },
                    m: function(date, count, useUtc) {
                        return leftPad(date[useUtc ? "getUTCMinutes" : "getMinutes"]().toString(), Math.min(count, 2))
                    },
                    s: function(date, count, useUtc) {
                        return leftPad(date[useUtc ? "getUTCSeconds" : "getSeconds"]().toString(), Math.min(count, 2))
                    },
                    S: function(date, count, useUtc) {
                        return leftPad(date[useUtc ? "getUTCMilliseconds" : "getMilliseconds"]().toString(), 3).substr(0, count)
                    },
                    x: function(date, count, useUtc) {
                        const timezoneOffset = useUtc ? 0 : date.getTimezoneOffset();
                        const signPart = timezoneOffset > 0 ? "-" : "+";
                        const timezoneOffsetAbs = Math.abs(timezoneOffset);
                        const hours = Math.floor(timezoneOffsetAbs / 60);
                        const minutes = timezoneOffsetAbs % 60;
                        const hoursPart = leftPad(hours.toString(), 2);
                        const minutesPart = leftPad(minutes.toString(), 2);
                        return signPart + hoursPart + (count >= 3 ? ":" : "") + (count > 1 || minutes ? minutesPart : "")
                    },
                    X: function(date, count, useUtc) {
                        if (useUtc || !date.getTimezoneOffset()) {
                            return "Z"
                        }
                        return LDML_FORMATTERS.x(date, count, useUtc)
                    },
                    Z: function(date, count, useUtc) {
                        return LDML_FORMATTERS.X(date, count >= 5 ? 3 : 2, useUtc)
                    }
                };
                exports.getFormatter = function(format, dateParts) {
                    return function(date) {
                        let charIndex;
                        let formatter;
                        let char;
                        let charCount = 0;
                        let isEscaping = false;
                        let isCurrentCharEqualsNext;
                        let result = "";
                        if (!date) {
                            return null
                        }
                        if (!format) {
                            return date
                        }
                        const useUtc = "Z" === format[format.length - 1] || "'Z'" === format.slice(-3);
                        for (charIndex = 0; charIndex < format.length; charIndex++) {
                            char = format[charIndex];
                            formatter = LDML_FORMATTERS[char];
                            isCurrentCharEqualsNext = char === format[charIndex + 1];
                            charCount++;
                            if (!isCurrentCharEqualsNext) {
                                if (formatter && !isEscaping) {
                                    result += formatter(date, charCount, useUtc, dateParts)
                                }
                                charCount = 0
                            }
                            if ("'" === char && !isCurrentCharEqualsNext) {
                                isEscaping = !isEscaping
                            } else if (isEscaping || !formatter) {
                                result += char
                            }
                            if ("'" === char && isCurrentCharEqualsNext) {
                                charIndex++
                            }
                        }
                        return result
                    }
                }
            },
        46981:
            /*!******************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/core/localization/ldml/date.parser.js ***!
              \******************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.isPossibleForParsingFormat = exports.getRegExpInfo = exports.getPatternSetters = exports.getParser = void 0;
                var _common = __webpack_require__( /*! ../../../../core/utils/common */ 17781);
                var _console = __webpack_require__( /*! ../../../../core/utils/console */ 31951);
                const FORMAT_TYPES = {
                    3: "abbreviated",
                    4: "wide",
                    5: "narrow"
                };
                const monthRegExpGenerator = function(count, dateParts) {
                    if (count > 2) {
                        return Object.keys(FORMAT_TYPES).map((function(count) {
                            return ["format", "standalone"].map((function(type) {
                                return dateParts.getMonthNames(FORMAT_TYPES[count], type).join("|")
                            })).join("|")
                        })).join("|")
                    }
                    return 2 === count ? "1[012]|0?[1-9]" : "0??[1-9]|1[012]"
                };
                const PATTERN_REGEXPS = {
                    ":": function(count, dateParts) {
                        const countSuffix = count > 1 ? `{${count}}` : "";
                        let timeSeparator = (0, _common.escapeRegExp)(dateParts.getTimeSeparator());
                        ":" !== timeSeparator && (timeSeparator = `${timeSeparator}|:`);
                        return `${timeSeparator}${countSuffix}`
                    },
                    y: function(count) {
                        return 2 === count ? `[0-9]{${count}}` : "[0-9]+?"
                    },
                    M: monthRegExpGenerator,
                    L: monthRegExpGenerator,
                    Q: function(count, dateParts) {
                        if (count > 2) {
                            return dateParts.getQuarterNames(FORMAT_TYPES[count], "format").join("|")
                        }
                        return "0?[1-4]"
                    },
                    E: function(count, dateParts) {
                        return "\\D*"
                    },
                    a: function(count, dateParts) {
                        return dateParts.getPeriodNames(FORMAT_TYPES[count < 3 ? 3 : count], "format").join("|")
                    },
                    d: function(count) {
                        return 2 === count ? "3[01]|[12][0-9]|0?[1-9]" : "0??[1-9]|[12][0-9]|3[01]"
                    },
                    H: function(count) {
                        return 2 === count ? "2[0-3]|1[0-9]|0?[0-9]" : "0??[0-9]|1[0-9]|2[0-3]"
                    },
                    h: function(count) {
                        return 2 === count ? "1[012]|0?[1-9]" : "0??[1-9]|1[012]"
                    },
                    m: function(count) {
                        return 2 === count ? "[1-5][0-9]|0?[0-9]" : "0??[0-9]|[1-5][0-9]"
                    },
                    s: function(count) {
                        return 2 === count ? "[1-5][0-9]|0?[0-9]" : "0??[0-9]|[1-5][0-9]"
                    },
                    S: function(count) {
                        return `[0-9]{1,${count}}`
                    },
                    w: function(count) {
                        return 2 === count ? "[1-5][0-9]|0?[0-9]" : "0??[0-9]|[1-5][0-9]"
                    },
                    x: function(count) {
                        return 3 === count ? "[+-](?:2[0-3]|[01][0-9]):(?:[0-5][0-9])|Z" : "[+-](?:2[0-3]|[01][0-9])(?:[0-5][0-9])|Z"
                    }
                };
                const parseNumber = Number;
                const caseInsensitiveIndexOf = function(array, value) {
                    return array.map((item => item.toLowerCase())).indexOf(value.toLowerCase())
                };
                const monthPatternParser = function(text, count, dateParts) {
                    if (count > 2) {
                        return ["format", "standalone"].map((function(type) {
                            return Object.keys(FORMAT_TYPES).map((function(count) {
                                const monthNames = dateParts.getMonthNames(FORMAT_TYPES[count], type);
                                return caseInsensitiveIndexOf(monthNames, text)
                            }))
                        })).reduce((function(a, b) {
                            return a.concat(b)
                        })).filter((function(index) {
                            return index >= 0
                        }))[0]
                    }
                    return parseNumber(text) - 1
                };
                const PATTERN_PARSERS = {
                    y: function(text, count) {
                        const year = parseNumber(text);
                        if (2 === count) {
                            return year < 30 ? 2e3 + year : 1900 + year
                        }
                        return year
                    },
                    M: monthPatternParser,
                    L: monthPatternParser,
                    Q: function(text, count, dateParts) {
                        if (count > 2) {
                            return dateParts.getQuarterNames(FORMAT_TYPES[count], "format").indexOf(text)
                        }
                        return parseNumber(text) - 1
                    },
                    E: function(text, count, dateParts) {
                        const dayNames = dateParts.getDayNames(FORMAT_TYPES[count < 3 ? 3 : count], "format");
                        return caseInsensitiveIndexOf(dayNames, text)
                    },
                    a: function(text, count, dateParts) {
                        const periodNames = dateParts.getPeriodNames(FORMAT_TYPES[count < 3 ? 3 : count], "format");
                        return caseInsensitiveIndexOf(periodNames, text)
                    },
                    d: parseNumber,
                    H: parseNumber,
                    h: parseNumber,
                    m: parseNumber,
                    s: parseNumber,
                    S: function(text, count) {
                        count = Math.max(count, 3);
                        text = text.slice(0, 3);
                        while (count < 3) {
                            text += "0";
                            count++
                        }
                        return parseNumber(text)
                    }
                };
                const ORDERED_PATTERNS = ["y", "M", "d", "h", "m", "s", "S"];
                const PATTERN_SETTERS = {
                    y: "setFullYear",
                    M: "setMonth",
                    L: "setMonth",
                    a: function(date, value, datePartValues) {
                        let hours = date.getHours();
                        const hourPartValue = datePartValues.h;
                        if (void 0 !== hourPartValue && hourPartValue !== hours) {
                            hours--
                        }
                        if (!value && 12 === hours) {
                            hours = 0
                        } else if (value && 12 !== hours) {
                            hours += 12
                        }
                        date.setHours(hours)
                    },
                    d: "setDate",
                    H: "setHours",
                    h: "setHours",
                    m: "setMinutes",
                    s: "setSeconds",
                    S: "setMilliseconds"
                };
                const getSameCharCount = function(text, index) {
                    const char = text[index];
                    if (!char) {
                        return 0
                    }
                    let count = 0;
                    do {
                        index++;
                        count++
                    } while (text[index] === char);
                    return count
                };
                const createPattern = function(char, count) {
                    let result = "";
                    for (let i = 0; i < count; i++) {
                        result += char
                    }
                    return result
                };
                const getRegExpInfo = function(format, dateParts) {
                    let regexpText = "";
                    let stubText = "";
                    let isEscaping;
                    const patterns = [];
                    const addPreviousStub = function() {
                        if (stubText) {
                            patterns.push(`'${stubText}'`);
                            regexpText += `${(0,_common.escapeRegExp)(stubText)})`;
                            stubText = ""
                        }
                    };
                    for (let i = 0; i < format.length; i++) {
                        const char = format[i];
                        const isEscapeChar = "'" === char;
                        const regexpPart = PATTERN_REGEXPS[char];
                        if (isEscapeChar) {
                            isEscaping = !isEscaping;
                            if ("'" !== format[i - 1]) {
                                continue
                            }
                        }
                        if (regexpPart && !isEscaping) {
                            const count = getSameCharCount(format, i);
                            const pattern = createPattern(char, count);
                            addPreviousStub();
                            patterns.push(pattern);
                            regexpText += `(${regexpPart(count,dateParts)})`;
                            i += count - 1
                        } else {
                            if (!stubText) {
                                regexpText += "("
                            }
                            stubText += char
                        }
                    }
                    addPreviousStub();
                    if (!isPossibleForParsingFormat(patterns)) {
                        _console.logger.warn(`The following format may be parsed incorrectly: ${format}.`)
                    }
                    return {
                        patterns: patterns,
                        regexp: new RegExp(`^${regexpText}$`, "i")
                    }
                };
                exports.getRegExpInfo = getRegExpInfo;
                const digitFieldSymbols = ["d", "H", "h", "m", "s", "w", "M", "L", "Q"];
                const isPossibleForParsingFormat = function(patterns) {
                    const isDigitPattern = pattern => {
                        if (!pattern) {
                            return false
                        }
                        const char = pattern[0];
                        return ["y", "S"].includes(char) || digitFieldSymbols.includes(char) && pattern.length < 3
                    };
                    let possibleForParsing = true;
                    let ambiguousDigitPatternsCount = 0;
                    return patterns.every(((pattern, index, patterns) => {
                        if (isDigitPattern(pattern)) {
                            if ((pattern => "S" !== pattern[0] && 2 !== pattern.length)(pattern)) {
                                possibleForParsing = ++ambiguousDigitPatternsCount < 2
                            }
                            if (!isDigitPattern(patterns[index + 1])) {
                                ambiguousDigitPatternsCount = 0
                            }
                        }
                        return possibleForParsing
                    }))
                };
                exports.isPossibleForParsingFormat = isPossibleForParsingFormat;
                exports.getPatternSetters = function() {
                    return PATTERN_SETTERS
                };
                exports.getParser = function(format, dateParts) {
                    const regExpInfo = getRegExpInfo(format, dateParts);
                    return function(text) {
                        const regExpResult = regExpInfo.regexp.exec(text);
                        if (regExpResult) {
                            const now = new Date;
                            const date = new Date(now.getFullYear(), 0, 1);
                            const formatPatterns = (fullPatterns = regExpInfo.patterns, fullPatterns.map((function(pattern) {
                                if ("'" === pattern[0]) {
                                    return ""
                                } else {
                                    return "H" === pattern[0] ? "h" : pattern[0]
                                }
                            })));
                            const maxPatternIndex = function(patterns) {
                                const indexes = patterns.map((function(pattern) {
                                    return ORDERED_PATTERNS.indexOf(pattern)
                                }));
                                return Math.max.apply(Math, indexes)
                            }(formatPatterns);
                            const orderedFormatPatterns = function(formatPatterns) {
                                const otherPatterns = formatPatterns.filter((function(pattern) {
                                    return ORDERED_PATTERNS.indexOf(pattern) < 0
                                }));
                                return ORDERED_PATTERNS.concat(otherPatterns)
                            }(formatPatterns);
                            const datePartValues = {};
                            orderedFormatPatterns.forEach((function(pattern, index) {
                                if (!pattern || index < ORDERED_PATTERNS.length && index > maxPatternIndex) {
                                    return
                                }
                                const patternIndex = formatPatterns.indexOf(pattern);
                                if (patternIndex >= 0) {
                                    const regExpPattern = regExpInfo.patterns[patternIndex];
                                    const regExpText = regExpResult[patternIndex + 1];
                                    ! function(date, pattern, text, dateParts, datePartValues) {
                                        const patternChar = pattern[0];
                                        const partSetter = PATTERN_SETTERS[patternChar];
                                        const partParser = PATTERN_PARSERS[patternChar];
                                        if (partSetter && partParser) {
                                            const value = partParser(text, pattern.length, dateParts);
                                            datePartValues[pattern] = value;
                                            if (date[partSetter]) {
                                                date[partSetter](value)
                                            } else {
                                                partSetter(date, value, datePartValues)
                                            }
                                        }
                                    }(date, regExpPattern, regExpText, dateParts, datePartValues)
                                } else {
                                    ! function(date, pattern, now) {
                                        const setterName = PATTERN_SETTERS[pattern];
                                        const getterName = "g" + setterName.substr(1);
                                        const value = now[getterName]();
                                        date[setterName](value)
                                    }(date, pattern, now)
                                }
                            }));
                            return date
                        }
                        var fullPatterns;
                        return null
                    }
                }
            },
        33687:
            /*!*************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/core/localization/ldml/number.js ***!
              \*************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.getFormat = function(formatter) {
                    let valueText = ".";
                    const isPercent = formatter(1).indexOf("100") >= 0;
                    valueText = prepareValueText(valueText, formatter, isPercent, true);
                    valueText = prepareValueText(valueText, formatter, isPercent, false);
                    const positiveFormat = getFormatByValueText(valueText, formatter, isPercent, false);
                    const negativeFormat = getFormatByValueText(valueText, formatter, isPercent, true);
                    return negativeFormat === "-" + positiveFormat ? positiveFormat : positiveFormat + ";" + negativeFormat
                };
                exports.getFormatter = function(format, config) {
                    config = config || DEFAULT_CONFIG;
                    return function(value) {
                        if ("number" !== typeof value || isNaN(value)) {
                            return ""
                        }
                        const signFormatParts = function(format) {
                            const signParts = function(format) {
                                let separatorChar = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : ";";
                                let escapingChar = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : ESCAPING_CHAR;
                                const parts = [];
                                let currentPart = "";
                                let state = "searchingSeparator";
                                for (let i = 0; i < format.length; i++) {
                                    const char = format[i];
                                    if ("searchingSeparator" === state && char === escapingChar) {
                                        state = "skippingSeparationInsideEscaping"
                                    } else if ("skippingSeparationInsideEscaping" === state && char === escapingChar) {
                                        state = "searchingSeparator"
                                    } else if ("searchingSeparator" === state && char === separatorChar) {
                                        state = "separating";
                                        parts.push(currentPart);
                                        currentPart = ""
                                    }
                                    if ("separating" !== state) {
                                        currentPart += char
                                    } else {
                                        state = "searchingSeparator"
                                    }
                                }
                                parts.push(currentPart);
                                return parts
                            }(format);
                            if (1 === signParts.length) {
                                signParts.push("-" + signParts[0])
                            }
                            return signParts
                        }(format);
                        const isPositiveZero = 1 / value === 1 / 0;
                        const isPositive = value > 0 || isPositiveZero;
                        const numberFormat = signFormatParts[isPositive ? 0 : 1];
                        const floatPointIndex = function(format) {
                            let isEscape = false;
                            for (let index = 0; index < format.length; index++) {
                                if ("'" === format[index]) {
                                    isEscape = !isEscape
                                }
                                if ("." === format[index] && !isEscape) {
                                    return index
                                }
                            }
                            return format.length
                        }(numberFormat);
                        const floatFormatParts = [numberFormat.substr(0, floatPointIndex), numberFormat.substr(floatPointIndex + 1)];
                        const minFloatPrecision = getRequiredDigitCount(floatFormatParts[1]);
                        const maxFloatPrecision = minFloatPrecision + getNonRequiredDigitCount(floatFormatParts[1]);
                        if (function(format) {
                                return -1 !== format.indexOf("%") && !format.match(/'[^']*%[^']*'/g)
                            }(numberFormat)) {
                            value = (0, _math.multiplyInExponentialForm)(value, PERCENT_EXPONENT_SHIFT)
                        }
                        if (!isPositive) {
                            value = -value
                        }
                        const minIntegerPrecision = getRequiredDigitCount(floatFormatParts[0]);
                        const maxIntegerPrecision = getNonRequiredDigitCount(floatFormatParts[0]) || config.unlimitedIntegerDigits ? void 0 : minIntegerPrecision;
                        const integerLength = Math.floor(value).toString().length;
                        const floatPrecision = (0, _math.fitIntoRange)(maxFloatPrecision, 0, MAXIMUM_NUMBER_LENGTH - integerLength);
                        const groupSizes = (formatString = floatFormatParts[0], formatString.split(",").slice(1).map((function(str) {
                            let singleQuotesLeft = 0;
                            return str.split("").filter((function(char, index) {
                                singleQuotesLeft += "'" === char;
                                const isDigit = "#" === char || "0" === char;
                                const isInStub = singleQuotesLeft % 2;
                                return isDigit && !isInStub
                            })).length
                        }))).reverse();
                        var formatString;
                        const valueParts = (0, _utils.toFixed)(value, floatPrecision < 0 ? 0 : floatPrecision).split(".");
                        let valueIntegerPart = normalizeValueString(reverseString(valueParts[0]), minIntegerPrecision, maxIntegerPrecision);
                        const valueFloatPart = normalizeValueString(valueParts[1], minFloatPrecision, maxFloatPrecision);
                        valueIntegerPart = function(valueString, groupSizes, thousandsSeparator) {
                            if (!groupSizes.length) {
                                return valueString
                            }
                            const groups = [];
                            let index = 0;
                            while (valueString) {
                                const groupSize = groupSizes[index];
                                if (!groupSize) {
                                    break
                                }
                                groups.push(valueString.slice(0, groupSize));
                                valueString = valueString.slice(groupSize);
                                if (index < groupSizes.length - 1) {
                                    index++
                                }
                            }
                            return groups.join(thousandsSeparator)
                        }(valueIntegerPart, groupSizes, config.thousandsSeparator);
                        const integerString = reverseString(formatNumberPart(reverseString(floatFormatParts[0]), valueIntegerPart));
                        const floatString = maxFloatPrecision ? formatNumberPart(floatFormatParts[1], valueFloatPart) : "";
                        const result = integerString + (floatString.match(/\d/) ? config.decimalSeparator : "") + floatString;
                        return result
                    }
                };
                var _math = __webpack_require__( /*! ../../../../core/utils/math */ 50254);
                var _utils = __webpack_require__( /*! ../utils */ 57181);
                const DEFAULT_CONFIG = {
                    thousandsSeparator: ",",
                    decimalSeparator: "."
                };
                const ESCAPING_CHAR = "'";
                const MAXIMUM_NUMBER_LENGTH = 15;
                const PERCENT_EXPONENT_SHIFT = 2;

                function reverseString(str) {
                    return str.toString().split("").reverse().join("")
                }

                function removeStubs(str) {
                    return str.replace(/'[^']*'/g, "")
                }

                function getNonRequiredDigitCount(floatFormat) {
                    if (!floatFormat) {
                        return 0
                    }
                    const format = removeStubs(floatFormat);
                    return format.length - format.replace(/[#]/g, "").length
                }

                function getRequiredDigitCount(floatFormat) {
                    if (!floatFormat) {
                        return 0
                    }
                    const format = removeStubs(floatFormat);
                    return format.length - format.replace(/[0]/g, "").length
                }

                function normalizeValueString(valuePart, minDigitCount, maxDigitCount) {
                    if (!valuePart) {
                        return ""
                    }
                    if (valuePart.length > maxDigitCount) {
                        valuePart = valuePart.substr(0, maxDigitCount)
                    }
                    while (valuePart.length > minDigitCount && "0" === valuePart.slice(-1)) {
                        valuePart = valuePart.substr(0, valuePart.length - 1)
                    }
                    while (valuePart.length < minDigitCount) {
                        valuePart += "0"
                    }
                    return valuePart
                }

                function formatNumberPart(format, valueString) {
                    return format.split(ESCAPING_CHAR).map((function(formatPart, escapeIndex) {
                        const isEscape = escapeIndex % 2;
                        if (!formatPart && isEscape) {
                            return ESCAPING_CHAR
                        }
                        return isEscape ? formatPart : formatPart.replace(/[,#0]+/, valueString)
                    })).join("")
                }

                function parseValue(text, isPercent, isNegative) {
                    const value = (isPercent ? .01 : 1) * parseFloat(text) || 0;
                    return isNegative ? -value : value
                }

                function prepareValueText(valueText, formatter, isPercent, isIntegerPart) {
                    let nextValueText = valueText;
                    let char;
                    let text;
                    let nextText;
                    do {
                        if (nextText) {
                            char = text.length === nextText.length ? "0" : "1";
                            valueText = isIntegerPart ? char + valueText : valueText + char
                        }
                        text = nextText || formatter(parseValue(nextValueText, isPercent));
                        nextValueText = isIntegerPart ? "1" + nextValueText : nextValueText + "1";
                        nextText = formatter(parseValue(nextValueText, isPercent))
                    } while (text !== nextText && (isIntegerPart ? text.length === nextText.length : text.length <= nextText.length));
                    if (isIntegerPart && nextText.length > text.length) {
                        const hasGroups = -1 === formatter(12345).indexOf("12345");
                        do {
                            valueText = "1" + valueText
                        } while (hasGroups && parseValue(valueText, isPercent) < 1e5)
                    }
                    return valueText
                }

                function getFormatByValueText(valueText, formatter, isPercent, isNegative) {
                    let format = formatter(parseValue(valueText, isPercent, isNegative));
                    const valueTextParts = valueText.split(".");
                    const valueTextWithModifiedFloat = valueTextParts[0] + ".3" + valueTextParts[1].slice(1);
                    const valueWithModifiedFloat = parseValue(valueTextWithModifiedFloat, isPercent, isNegative);
                    const decimalSeparatorIndex = formatter(valueWithModifiedFloat).indexOf("3") - 1;
                    format = format.replace(/(\d)\D(\d)/g, "$1,$2");
                    if (decimalSeparatorIndex >= 0) {
                        format = format.slice(0, decimalSeparatorIndex) + "." + format.slice(decimalSeparatorIndex + 1)
                    }
                    format = format.replace(/1+/, "1").replace(/1/g, "#");
                    if (!isPercent) {
                        format = format.replace(/%/g, "'%'")
                    }
                    return format
                }
            },
        4671:
            /*!*********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/core/localization/message.js ***!
              \*********************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _dependency_injector = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/dependency_injector */ 89656));
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576);
                var _string = __webpack_require__( /*! ../../../core/utils/string */ 54497);
                var _inflector = __webpack_require__( /*! ../../../core/utils/inflector */ 53124);
                var _core = _interopRequireDefault(__webpack_require__( /*! ./core */ 84109));
                var _default_messages = __webpack_require__( /*! ./default_messages */ 62788);

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const baseDictionary = (0, _extend.extend)(true, {}, _default_messages.defaultMessages);
                const newMessages = {};
                const messageLocalization = (0, _dependency_injector.default)({
                    engine: function() {
                        return "base"
                    },
                    _dictionary: baseDictionary,
                    load: function(messages) {
                        (0, _extend.extend)(true, this._dictionary, messages)
                    },
                    _localizablePrefix: "@",
                    setup: function(localizablePrefix) {
                        this._localizablePrefix = localizablePrefix
                    },
                    localizeString: function(text) {
                        const that = this;
                        const regex = new RegExp("(^|[^a-zA-Z_0-9" + that._localizablePrefix + "-]+)(" + that._localizablePrefix + "{1,2})([a-zA-Z_0-9-]+)", "g");
                        const escapeString = that._localizablePrefix + that._localizablePrefix;
                        return text.replace(regex, ((str, prefix, escape, localizationKey) => {
                            const defaultResult = that._localizablePrefix + localizationKey;
                            let result;
                            if (escape !== escapeString) {
                                result = that.format(localizationKey)
                            }
                            if (!result) {
                                newMessages[localizationKey] = (0, _inflector.humanize)(localizationKey)
                            }
                            return prefix + (result || defaultResult)
                        }))
                    },
                    getMessagesByLocales: function() {
                        return this._dictionary
                    },
                    getDictionary: function(onlyNew) {
                        if (onlyNew) {
                            return newMessages
                        }
                        return (0, _extend.extend)({}, newMessages, this.getMessagesByLocales()[_core.default.locale()])
                    },
                    getFormatter: function(key) {
                        return this._getFormatterBase(key) || this._getFormatterBase(key, "en")
                    },
                    _getFormatterBase: function(key, locale) {
                        const message = _core.default.getValueByClosestLocale((locale => ((localeData, locale) => {
                            var _Object$entries$find;
                            return localeData[locale] || (null === locale || void 0 === locale ? void 0 : locale.toLowerCase) && (null === (_Object$entries$find = Object.entries(localeData).find((_ref => {
                                let [key] = _ref;
                                return key.toLowerCase() === locale.toLowerCase()
                            }))) || void 0 === _Object$entries$find ? void 0 : _Object$entries$find[1]) || {}
                        })(this._dictionary, locale)[key]));
                        if (message) {
                            return function() {
                                const args = 1 === arguments.length && Array.isArray(arguments[0]) ? arguments[0].slice(0) : Array.prototype.slice.call(arguments, 0);
                                args.unshift(message);
                                return _string.format.apply(this, args)
                            }
                        }
                    },
                    format: function(key) {
                        const formatter = this.getFormatter(key);
                        const values = Array.prototype.slice.call(arguments, 1);
                        return formatter && formatter.apply(this, values) || ""
                    }
                });
                exports.default = messageLocalization;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        52771:
            /*!********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/core/localization/number.js ***!
              \********************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _dependency_injector = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/dependency_injector */ 89656));
                var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781);
                var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274);
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528);
                var _number = __webpack_require__( /*! ./ldml/number */ 33687);
                var _config = _interopRequireDefault(__webpack_require__( /*! ../../../core/config */ 66636));
                var _errors = _interopRequireDefault(__webpack_require__( /*! ../../../core/errors */ 87129));
                var _utils = __webpack_require__( /*! ./utils */ 57181);
                var _currency = _interopRequireDefault(__webpack_require__( /*! ./currency */ 17333));
                var _number2 = _interopRequireDefault(__webpack_require__( /*! ./intl/number */ 63265));

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const hasIntl = "undefined" !== typeof Intl;
                const NUMERIC_FORMATS = ["currency", "fixedpoint", "exponential", "percent", "decimal"];
                const LargeNumberFormatPostfixes = {
                    1: "K",
                    2: "M",
                    3: "B",
                    4: "T"
                };
                const LargeNumberFormatPowers = {
                    largenumber: "auto",
                    thousands: 1,
                    millions: 2,
                    billions: 3,
                    trillions: 4
                };
                const numberLocalization = (0, _dependency_injector.default)({
                    engine: function() {
                        return "base"
                    },
                    numericFormats: NUMERIC_FORMATS,
                    defaultLargeNumberFormatPostfixes: LargeNumberFormatPostfixes,
                    _parseNumberFormatString: function(formatType) {
                        const formatObject = {};
                        if (!formatType || "string" !== typeof formatType) {
                            return
                        }
                        const formatList = formatType.toLowerCase().split(" ");
                        (0, _iterator.each)(formatList, ((index, value) => {
                            if (NUMERIC_FORMATS.includes(value)) {
                                formatObject.formatType = value
                            } else if (value in LargeNumberFormatPowers) {
                                formatObject.power = LargeNumberFormatPowers[value]
                            }
                        }));
                        if (formatObject.power && !formatObject.formatType) {
                            formatObject.formatType = "fixedpoint"
                        }
                        if (formatObject.formatType) {
                            return formatObject
                        }
                    },
                    _calculateNumberPower: function(value, base, minPower, maxPower) {
                        let number = Math.abs(value);
                        let power = 0;
                        if (number > 1) {
                            while (number && number >= base && (void 0 === maxPower || power < maxPower)) {
                                power++;
                                number /= base
                            }
                        } else if (number > 0 && number < 1) {
                            while (number < 1 && (void 0 === minPower || power > minPower)) {
                                power--;
                                number *= base
                            }
                        }
                        return power
                    },
                    _getNumberByPower: function(number, power, base) {
                        let result = number;
                        while (power > 0) {
                            result /= base;
                            power--
                        }
                        while (power < 0) {
                            result *= base;
                            power++
                        }
                        return result
                    },
                    _formatNumber: function(value, formatObject, formatConfig) {
                        if ("auto" === formatObject.power) {
                            formatObject.power = this._calculateNumberPower(value, 1e3, 0, 4)
                        }
                        if (formatObject.power) {
                            value = this._getNumberByPower(value, formatObject.power, 1e3)
                        }
                        const powerPostfix = this.defaultLargeNumberFormatPostfixes[formatObject.power] || "";
                        let result = this._formatNumberCore(value, formatObject.formatType, formatConfig);
                        result = result.replace(/(\d|.$)(\D*)$/, "$1" + powerPostfix + "$2");
                        return result
                    },
                    _formatNumberExponential: function(value, formatConfig) {
                        let power = this._calculateNumberPower(value, 10);
                        let number = this._getNumberByPower(value, power, 10);
                        if (void 0 === formatConfig.precision) {
                            formatConfig.precision = 1
                        }
                        if (number.toFixed(formatConfig.precision || 0) >= 10) {
                            power++;
                            number /= 10
                        }
                        const powString = (power >= 0 ? "+" : "") + power.toString();
                        return this._formatNumberCore(number, "fixedpoint", formatConfig) + "E" + powString
                    },
                    _addZeroes: function(value, precision) {
                        const multiplier = Math.pow(10, precision);
                        const sign = value < 0 ? "-" : "";
                        value = (Math.abs(value) * multiplier >>> 0) / multiplier;
                        let result = value.toString();
                        while (result.length < precision) {
                            result = "0" + result
                        }
                        return sign + result
                    },
                    _addGroupSeparators: function(value) {
                        const parts = value.toString().split(".");
                        return parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, (0, _config.default)().thousandsSeparator) + (parts[1] ? (0, _config.default)().decimalSeparator + parts[1] : "")
                    },
                    _formatNumberCore: function(value, format, formatConfig) {
                        if ("exponential" === format) {
                            return this._formatNumberExponential(value, formatConfig)
                        }
                        if ("decimal" !== format && null !== formatConfig.precision) {
                            formatConfig.precision = formatConfig.precision || 0
                        }
                        if ("percent" === format) {
                            value *= 100
                        }
                        if (void 0 !== formatConfig.precision) {
                            if ("decimal" === format) {
                                value = this._addZeroes(value, formatConfig.precision)
                            } else {
                                value = null === formatConfig.precision ? value.toPrecision() : (0, _utils.toFixed)(value, formatConfig.precision)
                            }
                        }
                        if ("decimal" !== format) {
                            value = this._addGroupSeparators(value)
                        } else {
                            value = value.toString().replace(".", (0, _config.default)().decimalSeparator)
                        }
                        if ("percent" === format) {
                            value += "%"
                        }
                        return value
                    },
                    _normalizeFormat: function(format) {
                        if (!format) {
                            return {}
                        }
                        if ("function" === typeof format) {
                            return format
                        }
                        if (!(0, _type.isPlainObject)(format)) {
                            format = {
                                type: format
                            }
                        }
                        return format
                    },
                    _getSeparators: function() {
                        return {
                            decimalSeparator: this.getDecimalSeparator(),
                            thousandsSeparator: this.getThousandsSeparator()
                        }
                    },
                    getThousandsSeparator: function() {
                        return this.format(1e4, "fixedPoint")[2]
                    },
                    getDecimalSeparator: function() {
                        return this.format(1.2, {
                            type: "fixedPoint",
                            precision: 1
                        })[1]
                    },
                    convertDigits: function(value, toStandard) {
                        const digits = this.format(90, "decimal");
                        if ("string" !== typeof value || "0" === digits[1]) {
                            return value
                        }
                        const fromFirstDigit = toStandard ? digits[1] : "0";
                        const toFirstDigit = toStandard ? "0" : digits[1];
                        const fromLastDigit = toStandard ? digits[0] : "9";
                        const regExp = new RegExp("[" + fromFirstDigit + "-" + fromLastDigit + "]", "g");
                        return value.replace(regExp, (char => String.fromCharCode(char.charCodeAt(0) + (toFirstDigit.charCodeAt(0) - fromFirstDigit.charCodeAt(0)))))
                    },
                    getNegativeEtalonRegExp: function(format) {
                        const separators = this._getSeparators();
                        const digitalRegExp = new RegExp("[0-9" + (0, _common.escapeRegExp)(separators.decimalSeparator + separators.thousandsSeparator) + "]+", "g");
                        let negativeEtalon = this.format(-1, format).replace(digitalRegExp, "1");
                        ["\\", "(", ")", "[", "]", "*", "+", "$", "^", "?", "|", "{", "}"].forEach((char => {
                            negativeEtalon = negativeEtalon.replace(new RegExp(`\\${char}`, "g"), `\\${char}`)
                        }));
                        negativeEtalon = negativeEtalon.replace(/ /g, "\\s");
                        negativeEtalon = negativeEtalon.replace(/1/g, ".*");
                        return new RegExp(negativeEtalon, "g")
                    },
                    getSign: function(text, format) {
                        if (!format) {
                            if ("-" === text.replace(/[^0-9-]/g, "").charAt(0)) {
                                return -1
                            }
                            return 1
                        }
                        const negativeEtalon = this.getNegativeEtalonRegExp(format);
                        return text.match(negativeEtalon) ? -1 : 1
                    },
                    format: function(value, format) {
                        if ("number" !== typeof value) {
                            return value
                        }
                        if ("number" === typeof format) {
                            return value
                        }
                        format = format && format.formatter || format;
                        if ("function" === typeof format) {
                            return format(value)
                        }
                        format = this._normalizeFormat(format);
                        if (!format.type) {
                            format.type = "decimal"
                        }
                        const numberConfig = this._parseNumberFormatString(format.type);
                        if (!numberConfig) {
                            const formatterConfig = this._getSeparators();
                            formatterConfig.unlimitedIntegerDigits = format.unlimitedIntegerDigits;
                            const formatter = (0, _number.getFormatter)(format.type, formatterConfig)(value);
                            const result = this.convertDigits(formatter);
                            return result
                        }
                        return this._formatNumber(value, numberConfig, format)
                    },
                    parse: function(text, format) {
                        if (!text) {
                            return
                        }
                        if (format && format.parser) {
                            return format.parser(text)
                        }
                        text = this.convertDigits(text, true);
                        if (format && "string" !== typeof format) {
                            _errors.default.log("W0011")
                        }
                        const decimalSeparator = this.getDecimalSeparator();
                        const regExp = new RegExp("[^0-9" + (0, _common.escapeRegExp)(decimalSeparator) + "]", "g");
                        const cleanedText = text.replace(regExp, "").replace(decimalSeparator, ".").replace(/\.$/g, "");
                        if ("." === cleanedText || "" === cleanedText) {
                            return null
                        }
                        if (this._calcSignificantDigits(cleanedText) > 15) {
                            return NaN
                        }
                        let parsed = +cleanedText * this.getSign(text, format);
                        format = this._normalizeFormat(format);
                        const formatConfig = this._parseNumberFormatString(format.type);
                        let power = null === formatConfig || void 0 === formatConfig ? void 0 : formatConfig.power;
                        if (power) {
                            if ("auto" === power) {
                                const match = text.match(/\d(K|M|B|T)/);
                                if (match) {
                                    power = Object.keys(LargeNumberFormatPostfixes).find((power => LargeNumberFormatPostfixes[power] === match[1]))
                                }
                            }
                            parsed *= Math.pow(10, 3 * power)
                        }
                        if ("percent" === (null === formatConfig || void 0 === formatConfig ? void 0 : formatConfig.formatType)) {
                            parsed /= 100
                        }
                        return parsed
                    },
                    _calcSignificantDigits: function(text) {
                        const [integer, fractional] = text.split(".");
                        const calcDigitsAfterLeadingZeros = digits => {
                            let index = -1;
                            for (let i = 0; i < digits.length; i++) {
                                if ("0" !== digits[i]) {
                                    index = i;
                                    break
                                }
                            }
                            return index > -1 ? digits.length - index : 0
                        };
                        let result = 0;
                        if (integer) {
                            result += calcDigitsAfterLeadingZeros(integer.split(""))
                        }
                        if (fractional) {
                            result += calcDigitsAfterLeadingZeros(fractional.split("").reverse())
                        }
                        return result
                    }
                });
                numberLocalization.inject(_currency.default);
                if (hasIntl) {
                    numberLocalization.inject(_number2.default)
                }
                exports.default = numberLocalization;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        70832:
            /*!**************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/core/localization/open_xml_currency_format.js ***!
              \**************************************************************************************************/
            function(module, exports) {
                exports.default = void 0;
                exports.default = (currencySymbol, accountingFormat) => {
                    if (!accountingFormat) {
                        return
                    }
                    let encodedCurrencySymbol = currencySymbol;
                    if ("string" === typeof currencySymbol) {
                        encodedCurrencySymbol = "";
                        for (let i = 0; i < currencySymbol.length; i++) {
                            if ("$" !== currencySymbol[i]) {
                                encodedCurrencySymbol += "\\"
                            }
                            encodedCurrencySymbol += currencySymbol[i]
                        }
                    }
                    const encodeSymbols = {
                        ".00": "{0}",
                        "'": "\\'",
                        "\\(": "\\(",
                        "\\)": "\\)",
                        " ": "\\ ",
                        '"': "&quot;",
                        "\\\xa4": encodedCurrencySymbol
                    };
                    const result = accountingFormat.split(";");
                    for (let i = 0; i < result.length; i++) {
                        for (const symbol in encodeSymbols) {
                            if (Object.prototype.hasOwnProperty.call(encodeSymbols, symbol)) {
                                result[i] = result[i].replace(new RegExp(symbol, "g"), encodeSymbols[symbol])
                            }
                        }
                    }
                    return 2 === result.length ? result[0] + "_);" + result[1] : result[0]
                };
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        55088:
            /*!**************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/core/localization/parentLocale.js ***!
              \**************************************************************************************/
            function(module, exports) {
                exports.default = void 0;
                exports.default = (parentLocales, locale) => {
                    const parentLocale = parentLocales[locale];
                    if (parentLocale) {
                        return "root" !== parentLocale && parentLocale
                    }
                    return locale.substr(0, locale.lastIndexOf("-"))
                };
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        57181:
            /*!*******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/core/localization/utils.js ***!
              \*******************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.toFixed = function(value, precision) {
                    const valuePrecision = precision || 0;
                    const adjustedValue = valuePrecision > 0 ? function(value, precision) {
                        const precisionMultiplier = Math.pow(DECIMAL_BASE, precision);
                        const intermediateValue = (0, _math.multiplyInExponentialForm)(value, precision);
                        return function(value) {
                            const valueSign = (0, _math.sign)(value);
                            return valueSign * Math.round(Math.abs(value))
                        }(intermediateValue) / precisionMultiplier
                    }(...arguments) : value;
                    return adjustedValue.toFixed(valuePrecision)
                };
                var _math = __webpack_require__( /*! ../../../core/utils/math */ 50254);
                const DECIMAL_BASE = 10
            },
        11036:
            /*!************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/data.js ***!
              \************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "ArrayStore", {
                    enumerable: true,
                    get: function() {
                        return _array_store.default
                    }
                });
                Object.defineProperty(exports, "CustomStore", {
                    enumerable: true,
                    get: function() {
                        return _custom_store.CustomStore
                    }
                });
                Object.defineProperty(exports, "DataHelperMixin", {
                    enumerable: true,
                    get: function() {
                        return _m_data_helper.default
                    }
                });
                Object.defineProperty(exports, "DataSource", {
                    enumerable: true,
                    get: function() {
                        return _data_source.default
                    }
                });
                Object.defineProperty(exports, "EdmLiteral", {
                    enumerable: true,
                    get: function() {
                        return _utils2.EdmLiteral
                    }
                });
                Object.defineProperty(exports, "EndpointSelector", {
                    enumerable: true,
                    get: function() {
                        return _endpoint_selector.default
                    }
                });
                Object.defineProperty(exports, "LocalStore", {
                    enumerable: true,
                    get: function() {
                        return _local_store.default
                    }
                });
                Object.defineProperty(exports, "ODataContext", {
                    enumerable: true,
                    get: function() {
                        return _context.default
                    }
                });
                Object.defineProperty(exports, "ODataStore", {
                    enumerable: true,
                    get: function() {
                        return _store.default
                    }
                });
                Object.defineProperty(exports, "applyChanges", {
                    enumerable: true,
                    get: function() {
                        return _apply_changes.default
                    }
                });
                Object.defineProperty(exports, "base64_encode", {
                    enumerable: true,
                    get: function() {
                        return _utils.base64_encode
                    }
                });
                Object.defineProperty(exports, "compileGetter", {
                    enumerable: true,
                    get: function() {
                        return _utils.compileGetter
                    }
                });
                Object.defineProperty(exports, "compileSetter", {
                    enumerable: true,
                    get: function() {
                        return _utils.compileSetter
                    }
                });
                Object.defineProperty(exports, "errorHandler", {
                    enumerable: true,
                    get: function() {
                        return _errors.errorHandler
                    }
                });
                Object.defineProperty(exports, "isGroupItemsArray", {
                    enumerable: true,
                    get: function() {
                        return _custom_store.isGroupItemsArray
                    }
                });
                Object.defineProperty(exports, "isItemsArray", {
                    enumerable: true,
                    get: function() {
                        return _custom_store.isItemsArray
                    }
                });
                Object.defineProperty(exports, "isLoadResultObject", {
                    enumerable: true,
                    get: function() {
                        return _custom_store.isLoadResultObject
                    }
                });
                Object.defineProperty(exports, "keyConverters", {
                    enumerable: true,
                    get: function() {
                        return _utils2.keyConverters
                    }
                });
                Object.defineProperty(exports, "query", {
                    enumerable: true,
                    get: function() {
                        return _query.default
                    }
                });
                Object.defineProperty(exports, "setErrorHandler", {
                    enumerable: true,
                    get: function() {
                        return _errors.setErrorHandler
                    }
                });
                var _apply_changes = _interopRequireDefault(__webpack_require__( /*! ./data/apply_changes */ 99745));
                var _array_store = _interopRequireDefault(__webpack_require__( /*! ./data/array_store */ 80556));
                var _custom_store = __webpack_require__( /*! ./data/custom_store */ 63326);
                var _data_source = _interopRequireDefault(__webpack_require__( /*! ./data/data_source */ 14479));
                var _endpoint_selector = _interopRequireDefault(__webpack_require__( /*! ./data/endpoint_selector */ 44180));
                var _errors = __webpack_require__( /*! ./data/errors */ 82812);
                var _local_store = _interopRequireDefault(__webpack_require__( /*! ./data/local_store */ 71790));
                var _query = _interopRequireDefault(__webpack_require__( /*! ./data/query */ 30771));
                var _utils = __webpack_require__( /*! ./data/utils */ 89358);
                var _m_data_helper = _interopRequireDefault(__webpack_require__( /*! ../__internal/data/m_data_helper */ 16780));
                var _context = _interopRequireDefault(__webpack_require__( /*! ./data/odata/context */ 34170));
                var _store = _interopRequireDefault(__webpack_require__( /*! ./data/odata/store */ 29284));
                var _utils2 = __webpack_require__( /*! ./data/odata/utils */ 8056);

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
            },
        5995:
            /*!***************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/data/abstract_store.js ***!
              \***************************************************************************/
            function(module, exports, __webpack_require__) {
                Object.defineProperty(exports, "default", {
                    enumerable: true,
                    get: function() {
                        return _m_abstract_store.default
                    }
                });
                var _m_abstract_store = (e = __webpack_require__( /*! ../../__internal/data/m_abstract_store */ 1773), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        99745:
            /*!**************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/data/apply_changes.js ***!
              \**************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _array_utils = __webpack_require__( /*! ./array_utils */ 43792);
                exports.default = _array_utils.applyChanges;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        65517:
            /*!************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/data/array_query.js ***!
              \************************************************************************/
            function(module, exports, __webpack_require__) {
                Object.defineProperty(exports, "default", {
                    enumerable: true,
                    get: function() {
                        return _m_array_query.default
                    }
                });
                var _m_array_query = (e = __webpack_require__( /*! ../../__internal/data/m_array_query */ 79587), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        80556:
            /*!************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/data/array_store.js ***!
              \************************************************************************/
            function(module, exports, __webpack_require__) {
                Object.defineProperty(exports, "default", {
                    enumerable: true,
                    get: function() {
                        return _m_array_store.default
                    }
                });
                var _m_array_store = (e = __webpack_require__( /*! ../../__internal/data/m_array_store */ 11338), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        43792:
            /*!************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/data/array_utils.js ***!
              \************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                var _m_array_utils = __webpack_require__( /*! ../../__internal/data/m_array_utils */ 3198);
                Object.keys(_m_array_utils).forEach((function(key) {
                    if ("default" === key || "__esModule" === key) {
                        return
                    }
                    if (key in exports && exports[key] === _m_array_utils[key]) {
                        return
                    }
                    Object.defineProperty(exports, key, {
                        enumerable: true,
                        get: function() {
                            return _m_array_utils[key]
                        }
                    })
                }))
            },
        63326:
            /*!*************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/data/custom_store.js ***!
              \*************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "CustomStore", {
                    enumerable: true,
                    get: function() {
                        return _m_custom_store.default
                    }
                });
                exports.isGroupItemsArray = function(res) {
                    return Array.isArray(res) && !!res.length && isGroupItem(res[0])
                };
                exports.isItemsArray = function(res) {
                    return Array.isArray(res) && !isGroupItem(res[0])
                };
                exports.isLoadResultObject = function(res) {
                    return !Array.isArray(res) && "data" in res
                };
                var _m_custom_store = (e = __webpack_require__( /*! ../../__internal/data/m_custom_store */ 12764), e && e.__esModule ? e : {
                    default: e
                });
                var e;

                function isGroupItem(item) {
                    if (void 0 === item || null === item || "object" !== typeof item) {
                        return false
                    }
                    return "key" in item && "items" in item
                }
            },
        14479:
            /*!************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/data/data_source.js ***!
              \************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _data_source = __webpack_require__( /*! ./data_source/data_source */ 68216);
                exports.default = _data_source.DataSource;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        68216:
            /*!************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/data/data_source/data_source.js ***!
              \************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                var _m_data_source = __webpack_require__( /*! ../../../__internal/data/data_source/m_data_source */ 79562);
                Object.keys(_m_data_source).forEach((function(key) {
                    if ("default" === key || "__esModule" === key) {
                        return
                    }
                    if (key in exports && exports[key] === _m_data_source[key]) {
                        return
                    }
                    Object.defineProperty(exports, key, {
                        enumerable: true,
                        get: function() {
                            return _m_data_source[key]
                        }
                    })
                }))
            },
        95853:
            /*!******************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/data/data_source/operation_manager.js ***!
              \******************************************************************************************/
            function(module, exports, __webpack_require__) {
                Object.defineProperty(exports, "default", {
                    enumerable: true,
                    get: function() {
                        return _m_operation_manager.default
                    }
                });
                var _m_operation_manager = (e = __webpack_require__( /*! ../../../__internal/data/data_source/m_operation_manager */ 9427), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        97169:
            /*!******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/data/data_source/utils.js ***!
              \******************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                var _m_utils = __webpack_require__( /*! ../../../__internal/data/data_source/m_utils */ 23923);
                Object.keys(_m_utils).forEach((function(key) {
                    if ("default" === key || "__esModule" === key) {
                        return
                    }
                    if (key in exports && exports[key] === _m_utils[key]) {
                        return
                    }
                    Object.defineProperty(exports, key, {
                        enumerable: true,
                        get: function() {
                            return _m_utils[key]
                        }
                    })
                }))
            },
        44180:
            /*!******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/data/endpoint_selector.js ***!
              \******************************************************************************/
            function(module, exports, __webpack_require__) {
                Object.defineProperty(exports, "default", {
                    enumerable: true,
                    get: function() {
                        return _m_endpoint_selector.default
                    }
                });
                var _m_endpoint_selector = (e = __webpack_require__( /*! ../../__internal/data/m_endpoint_selector */ 17410), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        82812:
            /*!*******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/data/errors.js ***!
              \*******************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                var _m_errors = __webpack_require__( /*! ../../__internal/data/m_errors */ 5930);
                Object.keys(_m_errors).forEach((function(key) {
                    if ("default" === key || "__esModule" === key) {
                        return
                    }
                    if (key in exports && exports[key] === _m_errors[key]) {
                        return
                    }
                    Object.defineProperty(exports, key, {
                        enumerable: true,
                        get: function() {
                            return _m_errors[key]
                        }
                    })
                }))
            },
        71790:
            /*!************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/data/local_store.js ***!
              \************************************************************************/
            function(module, exports, __webpack_require__) {
                Object.defineProperty(exports, "default", {
                    enumerable: true,
                    get: function() {
                        return _m_local_store.default
                    }
                });
                var _m_local_store = (e = __webpack_require__( /*! ../../__internal/data/m_local_store */ 33260), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        34170:
            /*!**************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/data/odata/context.js ***!
              \**************************************************************************/
            function(module, exports, __webpack_require__) {
                Object.defineProperty(exports, "default", {
                    enumerable: true,
                    get: function() {
                        return _m_context.default
                    }
                });
                var _m_context = (e = __webpack_require__( /*! ../../../__internal/data/odata/m_context */ 58824), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        65001:
            /*!********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/data/odata/query_adapter.js ***!
              \********************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                var _m_query_adapter = __webpack_require__( /*! ../../../__internal/data/odata/m_query_adapter */ 61575);
                Object.keys(_m_query_adapter).forEach((function(key) {
                    if ("default" === key || "__esModule" === key) {
                        return
                    }
                    if (key in exports && exports[key] === _m_query_adapter[key]) {
                        return
                    }
                    Object.defineProperty(exports, key, {
                        enumerable: true,
                        get: function() {
                            return _m_query_adapter[key]
                        }
                    })
                }))
            },
        26098:
            /*!*************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/data/odata/request_dispatcher.js ***!
              \*************************************************************************************/
            function(module, exports, __webpack_require__) {
                Object.defineProperty(exports, "default", {
                    enumerable: true,
                    get: function() {
                        return _m_request_dispatcher.default
                    }
                });
                var _m_request_dispatcher = (e = __webpack_require__( /*! ../../../__internal/data/odata/m_request_dispatcher */ 8920), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        29284:
            /*!************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/data/odata/store.js ***!
              \************************************************************************/
            function(module, exports, __webpack_require__) {
                Object.defineProperty(exports, "default", {
                    enumerable: true,
                    get: function() {
                        return _m_store.default
                    }
                });
                var _m_store = (e = __webpack_require__( /*! ../../../__internal/data/odata/m_store */ 17594), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        8056:
            /*!************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/data/odata/utils.js ***!
              \************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                var _m_utils = __webpack_require__( /*! ../../../__internal/data/odata/m_utils */ 14606);
                Object.keys(_m_utils).forEach((function(key) {
                    if ("default" === key || "__esModule" === key) {
                        return
                    }
                    if (key in exports && exports[key] === _m_utils[key]) {
                        return
                    }
                    Object.defineProperty(exports, key, {
                        enumerable: true,
                        get: function() {
                            return _m_utils[key]
                        }
                    })
                }))
            },
        30771:
            /*!******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/data/query.js ***!
              \******************************************************************/
            function(module, exports, __webpack_require__) {
                Object.defineProperty(exports, "default", {
                    enumerable: true,
                    get: function() {
                        return _m_query.default
                    }
                });
                var _m_query = (e = __webpack_require__( /*! ../../__internal/data/m_query */ 45149), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        5842:
            /*!***************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/data/query_adapters.js ***!
              \***************************************************************************/
            function(module, exports) {
                exports.default = void 0;
                exports.default = {};
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        84816:
            /*!*********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/data/query_implementation.js ***!
              \*********************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.queryImpl = void 0;
                var _array_query = _interopRequireDefault(__webpack_require__( /*! ./array_query */ 65517));
                var _remote_query = _interopRequireDefault(__webpack_require__( /*! ./remote_query */ 80882));

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                exports.queryImpl = {
                    array: _array_query.default,
                    remote: _remote_query.default
                }
            },
        80882:
            /*!*************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/data/remote_query.js ***!
              \*************************************************************************/
            function(module, exports, __webpack_require__) {
                Object.defineProperty(exports, "default", {
                    enumerable: true,
                    get: function() {
                        return _m_remote_query.default
                    }
                });
                var _m_remote_query = (e = __webpack_require__( /*! ../../__internal/data/m_remote_query */ 51324), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        66177:
            /*!*************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/data/store_helper.js ***!
              \*************************************************************************/
            function(module, exports, __webpack_require__) {
                Object.defineProperty(exports, "default", {
                    enumerable: true,
                    get: function() {
                        return _m_store_helper.default
                    }
                });
                var _m_store_helper = (e = __webpack_require__( /*! ../../__internal/data/m_store_helper */ 41943), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        89358:
            /*!******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/data/utils.js ***!
              \******************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                var _exportNames = {
                    compileGetter: true,
                    compileSetter: true
                };
                Object.defineProperty(exports, "compileGetter", {
                    enumerable: true,
                    get: function() {
                        return _data.compileGetter
                    }
                });
                Object.defineProperty(exports, "compileSetter", {
                    enumerable: true,
                    get: function() {
                        return _data.compileSetter
                    }
                });
                var _data = __webpack_require__( /*! ../../core/utils/data */ 31e3);
                var _m_utils = __webpack_require__( /*! ../../__internal/data/m_utils */ 30912);
                Object.keys(_m_utils).forEach((function(key) {
                    if ("default" === key || "__esModule" === key) {
                        return
                    }
                    if (Object.prototype.hasOwnProperty.call(_exportNames, key)) {
                        return
                    }
                    if (key in exports && exports[key] === _m_utils[key]) {
                        return
                    }
                    Object.defineProperty(exports, key, {
                        enumerable: true,
                        get: function() {
                            return _m_utils[key]
                        }
                    })
                }))
            },
        54594:
            /*!********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/export/excel.js ***!
              \********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "exportDataGrid", {
                    enumerable: true,
                    get: function() {
                        return _export_data_grid.exportDataGrid
                    }
                });
                Object.defineProperty(exports, "exportPivotGrid", {
                    enumerable: true,
                    get: function() {
                        return _export_pivot_grid.exportPivotGrid
                    }
                });
                var _export_data_grid = __webpack_require__( /*! ../../exporter/exceljs/export_data_grid */ 55921);
                var _export_pivot_grid = __webpack_require__( /*! ../../exporter/exceljs/export_pivot_grid */ 44295)
            },
        92731:
            /*!******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/export/pdf.js ***!
              \******************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "exportDataGrid", {
                    enumerable: true,
                    get: function() {
                        return _export_data_grid.exportDataGrid
                    }
                });
                Object.defineProperty(exports, "exportDataGridWithAutoTable", {
                    enumerable: true,
                    get: function() {
                        return _export_data_grid2.exportDataGrid
                    }
                });
                Object.defineProperty(exports, "exportGantt", {
                    enumerable: true,
                    get: function() {
                        return _export_gantt.exportGantt
                    }
                });
                var _export_data_grid = __webpack_require__( /*! ../../exporter/jspdf/export_data_grid */ 93932);
                var _export_data_grid2 = __webpack_require__( /*! ../../exporter/jspdf/autotable/export_data_grid */ 89222);
                var _export_gantt = __webpack_require__( /*! ../../exporter/jspdf/export_gantt */ 81863)
            },
        71037:
            /*!************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/guid.js ***!
              \************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _m_guid = __webpack_require__( /*! ../__internal/core/m_guid */ 7201);
                exports.default = _m_guid.Guid;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        32480:
            /*!***************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/set_template_engine.js ***!
              \***************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _m_set_template_engine = __webpack_require__( /*! ../__internal/core/m_set_template_engine */ 61644);
                exports.default = _m_set_template_engine.setTemplateEngine;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        88412:
            /*!************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/action.js ***!
              \************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _m_action = __webpack_require__( /*! ../__internal/core/m_action */ 3226);
                exports.default = _m_action.Action;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        55620:
            /*!***********************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/class.js ***!
              \***********************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _m_class = (e = __webpack_require__( /*! ../__internal/core/m_class */ 40958), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                exports.default = _m_class.default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        17863:
            /*!***************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/component.js ***!
              \***************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                var _component = __webpack_require__( /*! ../__internal/core/widget/component */ 65020);
                Object.keys(_component).forEach((function(key) {
                    if ("default" === key || "__esModule" === key) {
                        return
                    }
                    if (key in exports && exports[key] === _component[key]) {
                        return
                    }
                    Object.defineProperty(exports, key, {
                        enumerable: true,
                        get: function() {
                            return _component[key]
                        }
                    })
                }))
            },
        92848:
            /*!***************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/component_registrator.js ***!
              \***************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _m_component_registrator = __webpack_require__( /*! ../__internal/core/m_component_registrator */ 10718);
                exports.default = _m_component_registrator.registerComponent;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        55771:
            /*!*************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/component_registrator_callbacks.js ***!
              \*************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _m_component_registrator_callbacks = __webpack_require__( /*! ../__internal/core/m_component_registrator_callbacks */ 21233);
                exports.default = _m_component_registrator_callbacks.componentRegistratorCallbacks;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        66636:
            /*!************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/config.js ***!
              \************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _common = __webpack_require__( /*! ../common */ 83077);
                exports.default = _common.config;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        65951:
            /*!*************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/devices.js ***!
              \*************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _environment = __webpack_require__( /*! ../common/core/environment */ 63705);
                exports.default = _environment.devices;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        64960:
            /*!*****************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/dom_adapter.js ***!
              \*****************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _m_dom_adapter = __webpack_require__( /*! ../__internal/core/m_dom_adapter */ 62018);
                exports.default = _m_dom_adapter.domAdapter;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        97832:
            /*!*******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/dom_component.js ***!
              \*******************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _dom_component = (e = __webpack_require__( /*! ../__internal/core/widget/dom_component */ 22331), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                exports.default = _dom_component.default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        61404:
            /*!*************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/element.js ***!
              \*************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "getPublicElement", {
                    enumerable: true,
                    get: function() {
                        return _m_element.getPublicElement
                    }
                });
                Object.defineProperty(exports, "getPublicElementNonJquery", {
                    enumerable: true,
                    get: function() {
                        return _m_element.getPublicElementNonJquery
                    }
                });
                Object.defineProperty(exports, "setPublicElementWrapper", {
                    enumerable: true,
                    get: function() {
                        return _m_element.setPublicElementWrapper
                    }
                });
                var _m_element = __webpack_require__( /*! ../__internal/core/m_element */ 93630)
            },
        74663:
            /*!******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/element_data.js ***!
              \******************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "afterCleanData", {
                    enumerable: true,
                    get: function() {
                        return _m_element_data.afterCleanData
                    }
                });
                Object.defineProperty(exports, "beforeCleanData", {
                    enumerable: true,
                    get: function() {
                        return _m_element_data.beforeCleanData
                    }
                });
                Object.defineProperty(exports, "cleanData", {
                    enumerable: true,
                    get: function() {
                        return _m_element_data.cleanData
                    }
                });
                Object.defineProperty(exports, "cleanDataRecursive", {
                    enumerable: true,
                    get: function() {
                        return _m_element_data.cleanDataRecursive
                    }
                });
                Object.defineProperty(exports, "data", {
                    enumerable: true,
                    get: function() {
                        return _m_element_data.data
                    }
                });
                Object.defineProperty(exports, "getDataStrategy", {
                    enumerable: true,
                    get: function() {
                        return _m_element_data.getDataStrategy
                    }
                });
                Object.defineProperty(exports, "removeData", {
                    enumerable: true,
                    get: function() {
                        return _m_element_data.removeData
                    }
                });
                Object.defineProperty(exports, "setDataStrategy", {
                    enumerable: true,
                    get: function() {
                        return _m_element_data.setDataStrategy
                    }
                });
                Object.defineProperty(exports, "strategyChanging", {
                    enumerable: true,
                    get: function() {
                        return _m_element_data.strategyChanging
                    }
                });
                var _m_element_data = __webpack_require__( /*! ../__internal/core/m_element_data */ 29489)
            },
        87129:
            /*!************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/errors.js ***!
              \************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _m_errors = (e = __webpack_require__( /*! ../__internal/core/m_errors */ 5583), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                exports.default = _m_errors.default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        2607:
            /*!*********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/events_strategy.js ***!
              \*********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "EventsStrategy", {
                    enumerable: true,
                    get: function() {
                        return _m_events_strategy.EventsStrategy
                    }
                });
                var _m_events_strategy = __webpack_require__( /*! ../__internal/core/m_events_strategy */ 14201)
            },
        19427:
            /*!**********************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/guid.js ***!
              \**********************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _common = __webpack_require__( /*! ../common */ 83077);
                exports.default = _common.Guid;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        35688:
            /*!******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/http_request.js ***!
              \******************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _m_http_request = __webpack_require__( /*! ../__internal/core/m_http_request */ 58670);
                exports.default = _m_http_request.httpRequest;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        16965:
            /*!**********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/inferno_renderer.js ***!
              \**********************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _m_inferno_renderer = __webpack_require__( /*! ../__internal/core/m_inferno_renderer */ 21327);
                exports.default = _m_inferno_renderer.infernoRenderer;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        35329:
            /*!*************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/memorized_callbacks.js ***!
              \*************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _m_memorized_callbacks = __webpack_require__( /*! ../__internal/core/m_memorized_callbacks */ 87107);
                exports.default = _m_memorized_callbacks.MemorizedCallbacks;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        74453:
            /*!*******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/options/index.js ***!
              \*******************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "Options", {
                    enumerable: true,
                    get: function() {
                        return _m_index.Options
                    }
                });
                var _m_index = __webpack_require__( /*! ../../__internal/core/options/m_index */ 43399)
            },
        1896:
            /*!****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/options/option_manager.js ***!
              \****************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "OptionManager", {
                    enumerable: true,
                    get: function() {
                        return _m_option_manager.OptionManager
                    }
                });
                var _m_option_manager = __webpack_require__( /*! ../../__internal/core/options/m_option_manager */ 59830)
            },
        53904:
            /*!*******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/options/utils.js ***!
              \*******************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "convertRulesToOptions", {
                    enumerable: true,
                    get: function() {
                        return _m_utils.convertRulesToOptions
                    }
                });
                Object.defineProperty(exports, "createDefaultOptionRules", {
                    enumerable: true,
                    get: function() {
                        return _m_utils.createDefaultOptionRules
                    }
                });
                Object.defineProperty(exports, "deviceMatch", {
                    enumerable: true,
                    get: function() {
                        return _m_utils.deviceMatch
                    }
                });
                Object.defineProperty(exports, "getFieldName", {
                    enumerable: true,
                    get: function() {
                        return _m_utils.getFieldName
                    }
                });
                Object.defineProperty(exports, "getNestedOptionValue", {
                    enumerable: true,
                    get: function() {
                        return _m_utils.getNestedOptionValue
                    }
                });
                Object.defineProperty(exports, "getParentName", {
                    enumerable: true,
                    get: function() {
                        return _m_utils.getParentName
                    }
                });
                Object.defineProperty(exports, "normalizeOptions", {
                    enumerable: true,
                    get: function() {
                        return _m_utils.normalizeOptions
                    }
                });
                var _m_utils = __webpack_require__( /*! ../../__internal/core/options/m_utils */ 33810)
            },
        21971:
            /*!**************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/postponed_operations.js ***!
              \**************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "PostponedOperations", {
                    enumerable: true,
                    get: function() {
                        return _m_postponed_operations.PostponedOperations
                    }
                });
                var _m_postponed_operations = __webpack_require__( /*! ../__internal/core/m_postponed_operations */ 45693)
            },
        64553:
            /*!**************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/renderer.js ***!
              \**************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _m_renderer = __webpack_require__( /*! ../__internal/core/m_renderer */ 95539);
                exports.default = _m_renderer.renderer;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        21681:
            /*!*******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/renderer_base.js ***!
              \*******************************************************************/
            function(module, exports, __webpack_require__) {
                Object.defineProperty(exports, "default", {
                    enumerable: true,
                    get: function() {
                        return _m_renderer_base.default
                    }
                });
                var _m_renderer_base = (e = __webpack_require__( /*! ../__internal/core/m_renderer_base */ 1811), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        11787:
            /*!*********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/resize_observer.js ***!
              \*********************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _m_resize_observer = __webpack_require__( /*! ../__internal/core/m_resize_observer */ 57785);
                exports.default = _m_resize_observer.resizeObserverSingleton;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        91366:
            /*!*************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/set_template_engine.js ***!
              \*************************************************************************/
            function(module, exports, __webpack_require__) {
                Object.defineProperty(exports, "default", {
                    enumerable: true,
                    get: function() {
                        return _common.setTemplateEngine
                    }
                });
                var _common = __webpack_require__( /*! ../common */ 83077);
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        91585:
            /*!**************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/templates/child_default_template.js ***!
              \**************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "ChildDefaultTemplate", {
                    enumerable: true,
                    get: function() {
                        return _m_child_default_template.ChildDefaultTemplate
                    }
                });
                var _m_child_default_template = __webpack_require__( /*! ../../__internal/core/templates/m_child_default_template */ 93971)
            },
        48650:
            /*!******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/templates/empty_template.js ***!
              \******************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "EmptyTemplate", {
                    enumerable: true,
                    get: function() {
                        return _m_empty_template.EmptyTemplate
                    }
                });
                var _m_empty_template = __webpack_require__( /*! ../../__internal/core/templates/m_empty_template */ 11768)
            },
        38699:
            /*!*********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/templates/function_template.js ***!
              \*********************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "FunctionTemplate", {
                    enumerable: true,
                    get: function() {
                        return _m_function_template.FunctionTemplate
                    }
                });
                var _m_function_template = __webpack_require__( /*! ../../__internal/core/templates/m_function_template */ 88969)
            },
        67872:
            /*!************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/templates/template.js ***!
              \************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "Template", {
                    enumerable: true,
                    get: function() {
                        return _m_template.Template
                    }
                });
                var _m_template = __webpack_require__( /*! ../../__internal/core/templates/m_template */ 52538)
            },
        42186:
            /*!*****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/templates/template_base.js ***!
              \*****************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "TemplateBase", {
                    enumerable: true,
                    get: function() {
                        return _m_template_base.TemplateBase
                    }
                });
                Object.defineProperty(exports, "renderedCallbacks", {
                    enumerable: true,
                    get: function() {
                        return _m_template_base.renderedCallbacks
                    }
                });
                var _m_template_base = __webpack_require__( /*! ../../__internal/core/templates/m_template_base */ 31292)
            },
        35155:
            /*!****************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/templates/template_engine_registry.js ***!
              \****************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "getCurrentTemplateEngine", {
                    enumerable: true,
                    get: function() {
                        return _m_template_engine_registry.getCurrentTemplateEngine
                    }
                });
                Object.defineProperty(exports, "registerTemplateEngine", {
                    enumerable: true,
                    get: function() {
                        return _m_template_engine_registry.registerTemplateEngine
                    }
                });
                Object.defineProperty(exports, "setTemplateEngine", {
                    enumerable: true,
                    get: function() {
                        return _m_template_engine_registry.setTemplateEngine
                    }
                });
                var _m_template_engine_registry = __webpack_require__( /*! ../../__internal/core/templates/m_template_engine_registry */ 70785)
            },
        71669:
            /*!*****************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/trial_panel.js ***!
              \*****************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _trial_panel = __webpack_require__( /*! ../__internal/core/license/trial_panel */ 99671);
                exports.default = {
                    registerTrialPanelComponents: _trial_panel.registerTrialPanelComponents,
                    showTrialPanel: _trial_panel.showTrialPanel
                };
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        78670:
            /*!****************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/utils/ajax.js ***!
              \****************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _m_ajax = __webpack_require__( /*! ../../__internal/core/utils/m_ajax */ 14136);
                exports.default = _m_ajax.Ajax;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        28248:
            /*!**********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/utils/ajax_utils.js ***!
              \**********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "evalCrossDomainScript", {
                    enumerable: true,
                    get: function() {
                        return _m_ajax_utils.evalCrossDomainScript
                    }
                });
                Object.defineProperty(exports, "evalScript", {
                    enumerable: true,
                    get: function() {
                        return _m_ajax_utils.evalScript
                    }
                });
                Object.defineProperty(exports, "getAcceptHeader", {
                    enumerable: true,
                    get: function() {
                        return _m_ajax_utils.getAcceptHeader
                    }
                });
                Object.defineProperty(exports, "getJsonpCallbackName", {
                    enumerable: true,
                    get: function() {
                        return _m_ajax_utils.getJsonpCallbackName
                    }
                });
                Object.defineProperty(exports, "getMethod", {
                    enumerable: true,
                    get: function() {
                        return _m_ajax_utils.getMethod
                    }
                });
                Object.defineProperty(exports, "getRequestHeaders", {
                    enumerable: true,
                    get: function() {
                        return _m_ajax_utils.getRequestHeaders
                    }
                });
                Object.defineProperty(exports, "getRequestOptions", {
                    enumerable: true,
                    get: function() {
                        return _m_ajax_utils.getRequestOptions
                    }
                });
                Object.defineProperty(exports, "isCrossDomain", {
                    enumerable: true,
                    get: function() {
                        return _m_ajax_utils.isCrossDomain
                    }
                });
                var _m_ajax_utils = __webpack_require__( /*! ../../__internal/core/utils/m_ajax_utils */ 42202)
            },
        94487:
            /*!*****************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/utils/array.js ***!
              \*****************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "getIntersection", {
                    enumerable: true,
                    get: function() {
                        return _m_array.getIntersection
                    }
                });
                Object.defineProperty(exports, "getUniqueValues", {
                    enumerable: true,
                    get: function() {
                        return _m_array.getUniqueValues
                    }
                });
                Object.defineProperty(exports, "groupBy", {
                    enumerable: true,
                    get: function() {
                        return _m_array.groupBy
                    }
                });
                Object.defineProperty(exports, "normalizeIndexes", {
                    enumerable: true,
                    get: function() {
                        return _m_array.normalizeIndexes
                    }
                });
                Object.defineProperty(exports, "removeDuplicates", {
                    enumerable: true,
                    get: function() {
                        return _m_array.removeDuplicates
                    }
                });
                Object.defineProperty(exports, "wrapToArray", {
                    enumerable: true,
                    get: function() {
                        return _m_array.wrapToArray
                    }
                });
                var _m_array = __webpack_require__( /*! ../../__internal/core/utils/m_array */ 28601)
            },
        48314:
            /*!*******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/utils/browser.js ***!
              \*******************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _m_browser = __webpack_require__( /*! ../../__internal/core/utils/m_browser */ 33436);
                exports.default = _m_browser.browser;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        13630:
            /*!*********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/utils/call_once.js ***!
              \*********************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _m_call_once = __webpack_require__( /*! ../../__internal/core/utils/m_call_once */ 58060);
                exports.default = _m_call_once.callOnce;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        84718:
            /*!*********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/utils/callbacks.js ***!
              \*********************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _m_callbacks = __webpack_require__( /*! ../../__internal/core/utils/m_callbacks */ 63172);
                exports.default = _m_callbacks.Callbacks;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        17781:
            /*!******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/utils/common.js ***!
              \******************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "applyServerDecimalSeparator", {
                    enumerable: true,
                    get: function() {
                        return _m_common.applyServerDecimalSeparator
                    }
                });
                Object.defineProperty(exports, "asyncNoop", {
                    enumerable: true,
                    get: function() {
                        return _m_common.asyncNoop
                    }
                });
                Object.defineProperty(exports, "deferRender", {
                    enumerable: true,
                    get: function() {
                        return _m_common.deferRender
                    }
                });
                Object.defineProperty(exports, "deferRenderer", {
                    enumerable: true,
                    get: function() {
                        return _m_common.deferRenderer
                    }
                });
                Object.defineProperty(exports, "deferUpdate", {
                    enumerable: true,
                    get: function() {
                        return _m_common.deferUpdate
                    }
                });
                Object.defineProperty(exports, "deferUpdater", {
                    enumerable: true,
                    get: function() {
                        return _m_common.deferUpdater
                    }
                });
                Object.defineProperty(exports, "denormalizeKey", {
                    enumerable: true,
                    get: function() {
                        return _m_common.denormalizeKey
                    }
                });
                Object.defineProperty(exports, "ensureDefined", {
                    enumerable: true,
                    get: function() {
                        return _m_common.ensureDefined
                    }
                });
                Object.defineProperty(exports, "equalByValue", {
                    enumerable: true,
                    get: function() {
                        return _m_common.equalByValue
                    }
                });
                Object.defineProperty(exports, "escapeRegExp", {
                    enumerable: true,
                    get: function() {
                        return _m_common.escapeRegExp
                    }
                });
                Object.defineProperty(exports, "executeAsync", {
                    enumerable: true,
                    get: function() {
                        return _m_common.executeAsync
                    }
                });
                Object.defineProperty(exports, "findBestMatches", {
                    enumerable: true,
                    get: function() {
                        return _m_common.findBestMatches
                    }
                });
                Object.defineProperty(exports, "getKeyHash", {
                    enumerable: true,
                    get: function() {
                        return _m_common.getKeyHash
                    }
                });
                Object.defineProperty(exports, "grep", {
                    enumerable: true,
                    get: function() {
                        return _m_common.grep
                    }
                });
                Object.defineProperty(exports, "noop", {
                    enumerable: true,
                    get: function() {
                        return _m_common.noop
                    }
                });
                Object.defineProperty(exports, "normalizeKey", {
                    enumerable: true,
                    get: function() {
                        return _m_common.normalizeKey
                    }
                });
                Object.defineProperty(exports, "pairToObject", {
                    enumerable: true,
                    get: function() {
                        return _m_common.pairToObject
                    }
                });
                Object.defineProperty(exports, "splitPair", {
                    enumerable: true,
                    get: function() {
                        return _m_common.splitPair
                    }
                });
                var _m_common = __webpack_require__( /*! ../../__internal/core/utils/m_common */ 39315)
            },
        60648:
            /*!**********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/utils/comparator.js ***!
              \**********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "equals", {
                    enumerable: true,
                    get: function() {
                        return _m_comparator.equals
                    }
                });
                var _m_comparator = __webpack_require__( /*! ../../__internal/core/utils/m_comparator */ 90834)
            },
        31951:
            /*!*******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/utils/console.js ***!
              \*******************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "debug", {
                    enumerable: true,
                    get: function() {
                        return _m_console.debug
                    }
                });
                Object.defineProperty(exports, "logger", {
                    enumerable: true,
                    get: function() {
                        return _m_console.logger
                    }
                });
                var _m_console = __webpack_require__( /*! ../../__internal/core/utils/m_console */ 35005)
            },
        31e3:
            /*!****************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/utils/data.js ***!
              \****************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "compileGetter", {
                    enumerable: true,
                    get: function() {
                        return _m_data.compileGetter
                    }
                });
                Object.defineProperty(exports, "compileSetter", {
                    enumerable: true,
                    get: function() {
                        return _m_data.compileSetter
                    }
                });
                Object.defineProperty(exports, "getPathParts", {
                    enumerable: true,
                    get: function() {
                        return _m_data.getPathParts
                    }
                });
                Object.defineProperty(exports, "toComparable", {
                    enumerable: true,
                    get: function() {
                        return _m_data.toComparable
                    }
                });
                var _m_data = __webpack_require__( /*! ../../__internal/core/utils/m_data */ 93142)
            },
        41380:
            /*!****************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/utils/date.js ***!
              \****************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _m_date = __webpack_require__( /*! ../../__internal/core/utils/m_date */ 66570);
                exports.default = _m_date.dateUtils;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        71051:
            /*!******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/utils/date_serialization.js ***!
              \******************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _m_date_serialization = __webpack_require__( /*! ../../__internal/core/utils/m_date_serialization */ 62897);
                exports.default = _m_date_serialization.dateSerialization;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        87739:
            /*!********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/utils/deferred.js ***!
              \********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "Deferred", {
                    enumerable: true,
                    get: function() {
                        return _m_deferred.Deferred
                    }
                });
                Object.defineProperty(exports, "fromPromise", {
                    enumerable: true,
                    get: function() {
                        return _m_deferred.fromPromise
                    }
                });
                Object.defineProperty(exports, "setStrategy", {
                    enumerable: true,
                    get: function() {
                        return _m_deferred.setStrategy
                    }
                });
                Object.defineProperty(exports, "when", {
                    enumerable: true,
                    get: function() {
                        return _m_deferred.when
                    }
                });
                var _m_deferred = __webpack_require__( /*! ../../__internal/core/utils/m_deferred */ 77117)
            },
        89656:
            /*!*******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/utils/dependency_injector.js ***!
              \*******************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _m_dependency_injector = __webpack_require__( /*! ../../__internal/core/utils/m_dependency_injector */ 62142);
                exports.default = _m_dependency_injector.injector;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        86858:
            /*!***************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/utils/dom.js ***!
              \***************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "clearSelection", {
                    enumerable: true,
                    get: function() {
                        return _m_dom.clearSelection
                    }
                });
                Object.defineProperty(exports, "clipboardText", {
                    enumerable: true,
                    get: function() {
                        return _m_dom.clipboardText
                    }
                });
                Object.defineProperty(exports, "closestCommonParent", {
                    enumerable: true,
                    get: function() {
                        return _m_dom.closestCommonParent
                    }
                });
                Object.defineProperty(exports, "contains", {
                    enumerable: true,
                    get: function() {
                        return _m_dom.contains
                    }
                });
                Object.defineProperty(exports, "createTextElementHiddenCopy", {
                    enumerable: true,
                    get: function() {
                        return _m_dom.createTextElementHiddenCopy
                    }
                });
                Object.defineProperty(exports, "extractTemplateMarkup", {
                    enumerable: true,
                    get: function() {
                        return _m_dom.extractTemplateMarkup
                    }
                });
                Object.defineProperty(exports, "insertBefore", {
                    enumerable: true,
                    get: function() {
                        return _m_dom.insertBefore
                    }
                });
                Object.defineProperty(exports, "isElementInDom", {
                    enumerable: true,
                    get: function() {
                        return _m_dom.isElementInDom
                    }
                });
                Object.defineProperty(exports, "normalizeTemplateElement", {
                    enumerable: true,
                    get: function() {
                        return _m_dom.normalizeTemplateElement
                    }
                });
                Object.defineProperty(exports, "replaceWith", {
                    enumerable: true,
                    get: function() {
                        return _m_dom.replaceWith
                    }
                });
                Object.defineProperty(exports, "resetActiveElement", {
                    enumerable: true,
                    get: function() {
                        return _m_dom.resetActiveElement
                    }
                });
                var _m_dom = __webpack_require__( /*! ../../__internal/core/utils/m_dom */ 76400)
            },
        67264:
            /*!*****************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/utils/error.js ***!
              \*****************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _m_error = __webpack_require__( /*! ../../__internal/core/utils/m_error */ 40818);
                exports.default = _m_error.error;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        52576:
            /*!******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/utils/extend.js ***!
              \******************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "extend", {
                    enumerable: true,
                    get: function() {
                        return _m_extend.extend
                    }
                });
                Object.defineProperty(exports, "extendFromObject", {
                    enumerable: true,
                    get: function() {
                        return _m_extend.extendFromObject
                    }
                });
                var _m_extend = __webpack_require__( /*! ../../__internal/core/utils/m_extend */ 96298)
            },
        23563:
            /*!***********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/utils/html_parser.js ***!
              \***********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "isTablePart", {
                    enumerable: true,
                    get: function() {
                        return _m_html_parser.isTablePart
                    }
                });
                Object.defineProperty(exports, "parseHTML", {
                    enumerable: true,
                    get: function() {
                        return _m_html_parser.parseHTML
                    }
                });
                var _m_html_parser = __webpack_require__( /*! ../../__internal/core/utils/m_html_parser */ 25317)
            },
        69629:
            /*!****************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/utils/icon.js ***!
              \****************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "getImageContainer", {
                    enumerable: true,
                    get: function() {
                        return _m_icon.getImageContainer
                    }
                });
                Object.defineProperty(exports, "getImageSourceType", {
                    enumerable: true,
                    get: function() {
                        return _m_icon.getImageSourceType
                    }
                });
                var _m_icon = __webpack_require__( /*! ../../__internal/core/utils/m_icon */ 42463)
            },
        53124:
            /*!*********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/utils/inflector.js ***!
              \*********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "camelize", {
                    enumerable: true,
                    get: function() {
                        return _m_inflector.camelize
                    }
                });
                Object.defineProperty(exports, "captionize", {
                    enumerable: true,
                    get: function() {
                        return _m_inflector.captionize
                    }
                });
                Object.defineProperty(exports, "dasherize", {
                    enumerable: true,
                    get: function() {
                        return _m_inflector.dasherize
                    }
                });
                Object.defineProperty(exports, "humanize", {
                    enumerable: true,
                    get: function() {
                        return _m_inflector.humanize
                    }
                });
                Object.defineProperty(exports, "titleize", {
                    enumerable: true,
                    get: function() {
                        return _m_inflector.titleize
                    }
                });
                Object.defineProperty(exports, "underscore", {
                    enumerable: true,
                    get: function() {
                        return _m_inflector.underscore
                    }
                });
                var _m_inflector = __webpack_require__( /*! ../../__internal/core/utils/m_inflector */ 66122)
            },
        21274:
            /*!********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/utils/iterator.js ***!
              \********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "each", {
                    enumerable: true,
                    get: function() {
                        return _m_iterator.each
                    }
                });
                Object.defineProperty(exports, "map", {
                    enumerable: true,
                    get: function() {
                        return _m_iterator.map
                    }
                });
                Object.defineProperty(exports, "reverseEach", {
                    enumerable: true,
                    get: function() {
                        return _m_iterator.reverseEach
                    }
                });
                var _m_iterator = __webpack_require__( /*! ../../__internal/core/utils/m_iterator */ 26044)
            },
        50512:
            /*!******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/utils/locker.js ***!
              \******************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _m_locker = __webpack_require__( /*! ../../__internal/core/utils/m_locker */ 24574);
                exports.default = _m_locker.Locker;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        50254:
            /*!****************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/utils/math.js ***!
              \****************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "adjust", {
                    enumerable: true,
                    get: function() {
                        return _m_math.adjust
                    }
                });
                Object.defineProperty(exports, "fitIntoRange", {
                    enumerable: true,
                    get: function() {
                        return _m_math.fitIntoRange
                    }
                });
                Object.defineProperty(exports, "getExponent", {
                    enumerable: true,
                    get: function() {
                        return _m_math.getExponent
                    }
                });
                Object.defineProperty(exports, "getExponentLength", {
                    enumerable: true,
                    get: function() {
                        return _m_math.getExponentLength
                    }
                });
                Object.defineProperty(exports, "getPrecision", {
                    enumerable: true,
                    get: function() {
                        return _m_math.getPrecision
                    }
                });
                Object.defineProperty(exports, "getRemainderByDivision", {
                    enumerable: true,
                    get: function() {
                        return _m_math.getRemainderByDivision
                    }
                });
                Object.defineProperty(exports, "getRoot", {
                    enumerable: true,
                    get: function() {
                        return _m_math.getRoot
                    }
                });
                Object.defineProperty(exports, "inRange", {
                    enumerable: true,
                    get: function() {
                        return _m_math.inRange
                    }
                });
                Object.defineProperty(exports, "multiplyInExponentialForm", {
                    enumerable: true,
                    get: function() {
                        return _m_math.multiplyInExponentialForm
                    }
                });
                Object.defineProperty(exports, "roundFloatPart", {
                    enumerable: true,
                    get: function() {
                        return _m_math.roundFloatPart
                    }
                });
                Object.defineProperty(exports, "sign", {
                    enumerable: true,
                    get: function() {
                        return _m_math.sign
                    }
                });
                Object.defineProperty(exports, "solveCubicEquation", {
                    enumerable: true,
                    get: function() {
                        return _m_math.solveCubicEquation
                    }
                });
                Object.defineProperty(exports, "trunc", {
                    enumerable: true,
                    get: function() {
                        return _m_math.trunc
                    }
                });
                var _m_math = __webpack_require__( /*! ../../__internal/core/utils/m_math */ 80764)
            },
        22263:
            /*!******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/utils/object.js ***!
              \******************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "clone", {
                    enumerable: true,
                    get: function() {
                        return _m_object.clone
                    }
                });
                Object.defineProperty(exports, "deepExtendArraySafe", {
                    enumerable: true,
                    get: function() {
                        return _m_object.deepExtendArraySafe
                    }
                });
                Object.defineProperty(exports, "legacyAssign", {
                    enumerable: true,
                    get: function() {
                        return _m_object.legacyAssign
                    }
                });
                Object.defineProperty(exports, "newAssign", {
                    enumerable: true,
                    get: function() {
                        return _m_object.newAssign
                    }
                });
                Object.defineProperty(exports, "orderEach", {
                    enumerable: true,
                    get: function() {
                        return _m_object.orderEach
                    }
                });
                var _m_object = __webpack_require__( /*! ../../__internal/core/utils/m_object */ 86005)
            },
        41639:
            /*!********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/utils/position.js ***!
              \********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "getBoundingRect", {
                    enumerable: true,
                    get: function() {
                        return _m_position.getBoundingRect
                    }
                });
                Object.defineProperty(exports, "getDefaultAlignment", {
                    enumerable: true,
                    get: function() {
                        return _m_position.getDefaultAlignment
                    }
                });
                var _m_position = __webpack_require__( /*! ../../__internal/core/utils/m_position */ 80125)
            },
        85521:
            /*!****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/utils/public_component.js ***!
              \****************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "attachInstanceToElement", {
                    enumerable: true,
                    get: function() {
                        return _m_public_component.attachInstanceToElement
                    }
                });
                Object.defineProperty(exports, "getInstanceByElement", {
                    enumerable: true,
                    get: function() {
                        return _m_public_component.getInstanceByElement
                    }
                });
                Object.defineProperty(exports, "name", {
                    enumerable: true,
                    get: function() {
                        return _m_public_component.name
                    }
                });
                var _m_public_component = __webpack_require__( /*! ../../__internal/core/utils/m_public_component */ 871)
            },
        65221:
            /*!*****************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/utils/queue.js ***!
              \*****************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "create", {
                    enumerable: true,
                    get: function() {
                        return _m_queue.create
                    }
                });
                Object.defineProperty(exports, "enqueue", {
                    enumerable: true,
                    get: function() {
                        return _m_queue.enqueue
                    }
                });
                var _m_queue = __webpack_require__( /*! ../../__internal/core/utils/m_queue */ 52799)
            },
        3122:
            /*!***************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/utils/ready_callbacks.js ***!
              \***************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _m_ready_callbacks = __webpack_require__( /*! ../../__internal/core/utils/m_ready_callbacks */ 18344);
                exports.default = _m_ready_callbacks.readyCallbacksModule;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        63283:
            /*!****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/utils/resize_callbacks.js ***!
              \****************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _m_resize_callbacks = __webpack_require__( /*! ../../__internal/core/utils/m_resize_callbacks */ 33717);
                exports.default = _m_resize_callbacks.resizeCallbacks;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        93631:
            /*!**********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/utils/shadow_dom.js ***!
              \**********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "addShadowDomStyles", {
                    enumerable: true,
                    get: function() {
                        return _m_shadow_dom.addShadowDomStyles
                    }
                });
                Object.defineProperty(exports, "getShadowElementsFromPoint", {
                    enumerable: true,
                    get: function() {
                        return _m_shadow_dom.getShadowElementsFromPoint
                    }
                });
                var _m_shadow_dom = __webpack_require__( /*! ../../__internal/core/utils/m_shadow_dom */ 17113)
            },
        57653:
            /*!****************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/utils/size.js ***!
              \****************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "addOffsetToMaxHeight", {
                    enumerable: true,
                    get: function() {
                        return _m_size.addOffsetToMaxHeight
                    }
                });
                Object.defineProperty(exports, "addOffsetToMinHeight", {
                    enumerable: true,
                    get: function() {
                        return _m_size.addOffsetToMinHeight
                    }
                });
                Object.defineProperty(exports, "getElementBoxParams", {
                    enumerable: true,
                    get: function() {
                        return _m_size.getElementBoxParams
                    }
                });
                Object.defineProperty(exports, "getHeight", {
                    enumerable: true,
                    get: function() {
                        return _m_size.getHeight
                    }
                });
                Object.defineProperty(exports, "getInnerHeight", {
                    enumerable: true,
                    get: function() {
                        return _m_size.getInnerHeight
                    }
                });
                Object.defineProperty(exports, "getInnerWidth", {
                    enumerable: true,
                    get: function() {
                        return _m_size.getInnerWidth
                    }
                });
                Object.defineProperty(exports, "getOffset", {
                    enumerable: true,
                    get: function() {
                        return _m_size.getOffset
                    }
                });
                Object.defineProperty(exports, "getOuterHeight", {
                    enumerable: true,
                    get: function() {
                        return _m_size.getOuterHeight
                    }
                });
                Object.defineProperty(exports, "getOuterWidth", {
                    enumerable: true,
                    get: function() {
                        return _m_size.getOuterWidth
                    }
                });
                Object.defineProperty(exports, "getSize", {
                    enumerable: true,
                    get: function() {
                        return _m_size.getSize
                    }
                });
                Object.defineProperty(exports, "getVerticalOffsets", {
                    enumerable: true,
                    get: function() {
                        return _m_size.getVerticalOffsets
                    }
                });
                Object.defineProperty(exports, "getVisibleHeight", {
                    enumerable: true,
                    get: function() {
                        return _m_size.getVisibleHeight
                    }
                });
                Object.defineProperty(exports, "getWidth", {
                    enumerable: true,
                    get: function() {
                        return _m_size.getWidth
                    }
                });
                Object.defineProperty(exports, "getWindowByElement", {
                    enumerable: true,
                    get: function() {
                        return _m_size.getWindowByElement
                    }
                });
                Object.defineProperty(exports, "implementationsMap", {
                    enumerable: true,
                    get: function() {
                        return _m_size.implementationsMap
                    }
                });
                Object.defineProperty(exports, "parseHeight", {
                    enumerable: true,
                    get: function() {
                        return _m_size.parseHeight
                    }
                });
                Object.defineProperty(exports, "setHeight", {
                    enumerable: true,
                    get: function() {
                        return _m_size.setHeight
                    }
                });
                Object.defineProperty(exports, "setInnerHeight", {
                    enumerable: true,
                    get: function() {
                        return _m_size.setInnerHeight
                    }
                });
                Object.defineProperty(exports, "setInnerWidth", {
                    enumerable: true,
                    get: function() {
                        return _m_size.setInnerWidth
                    }
                });
                Object.defineProperty(exports, "setOuterHeight", {
                    enumerable: true,
                    get: function() {
                        return _m_size.setOuterHeight
                    }
                });
                Object.defineProperty(exports, "setOuterWidth", {
                    enumerable: true,
                    get: function() {
                        return _m_size.setOuterWidth
                    }
                });
                Object.defineProperty(exports, "setWidth", {
                    enumerable: true,
                    get: function() {
                        return _m_size.setWidth
                    }
                });
                var _m_size = __webpack_require__( /*! ../../__internal/core/utils/m_size */ 64587)
            },
        98479:
            /*!*******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/utils/storage.js ***!
              \*******************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "sessionStorage", {
                    enumerable: true,
                    get: function() {
                        return _m_storage.sessionStorage
                    }
                });
                var _m_storage = __webpack_require__( /*! ../../__internal/core/utils/m_storage */ 47865)
            },
        54497:
            /*!******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/utils/string.js ***!
              \******************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "encodeHtml", {
                    enumerable: true,
                    get: function() {
                        return _m_string.encodeHtml
                    }
                });
                Object.defineProperty(exports, "format", {
                    enumerable: true,
                    get: function() {
                        return _m_string.format
                    }
                });
                Object.defineProperty(exports, "isEmpty", {
                    enumerable: true,
                    get: function() {
                        return _m_string.isEmpty
                    }
                });
                Object.defineProperty(exports, "quadToObject", {
                    enumerable: true,
                    get: function() {
                        return _m_string.quadToObject
                    }
                });
                var _m_string = __webpack_require__( /*! ../../__internal/core/utils/m_string */ 32527)
            },
        58515:
            /*!*****************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/utils/style.js ***!
              \*****************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "normalizeStyleProp", {
                    enumerable: true,
                    get: function() {
                        return _m_style.normalizeStyleProp
                    }
                });
                Object.defineProperty(exports, "parsePixelValue", {
                    enumerable: true,
                    get: function() {
                        return _m_style.parsePixelValue
                    }
                });
                Object.defineProperty(exports, "setHeight", {
                    enumerable: true,
                    get: function() {
                        return _m_style.setHeight
                    }
                });
                Object.defineProperty(exports, "setStyle", {
                    enumerable: true,
                    get: function() {
                        return _m_style.setStyle
                    }
                });
                Object.defineProperty(exports, "setWidth", {
                    enumerable: true,
                    get: function() {
                        return _m_style.setWidth
                    }
                });
                Object.defineProperty(exports, "styleProp", {
                    enumerable: true,
                    get: function() {
                        return _m_style.styleProp
                    }
                });
                Object.defineProperty(exports, "stylePropPrefix", {
                    enumerable: true,
                    get: function() {
                        return _m_style.stylePropPrefix
                    }
                });
                var _m_style = __webpack_require__( /*! ../../__internal/core/utils/m_style */ 11953)
            },
        4785:
            /*!*******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/utils/support.js ***!
              \*******************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "animation", {
                    enumerable: true,
                    get: function() {
                        return _m_support.animation
                    }
                });
                Object.defineProperty(exports, "inputType", {
                    enumerable: true,
                    get: function() {
                        return _m_support.inputType
                    }
                });
                Object.defineProperty(exports, "nativeScrolling", {
                    enumerable: true,
                    get: function() {
                        return _m_support.nativeScrolling
                    }
                });
                Object.defineProperty(exports, "pointerEvents", {
                    enumerable: true,
                    get: function() {
                        return _m_support.pointerEvents
                    }
                });
                Object.defineProperty(exports, "styleProp", {
                    enumerable: true,
                    get: function() {
                        return _m_support.styleProp
                    }
                });
                Object.defineProperty(exports, "stylePropPrefix", {
                    enumerable: true,
                    get: function() {
                        return _m_support.stylePropPrefix
                    }
                });
                Object.defineProperty(exports, "supportProp", {
                    enumerable: true,
                    get: function() {
                        return _m_support.supportProp
                    }
                });
                Object.defineProperty(exports, "touch", {
                    enumerable: true,
                    get: function() {
                        return _m_support.touch
                    }
                });
                Object.defineProperty(exports, "touchEvents", {
                    enumerable: true,
                    get: function() {
                        return _m_support.touchEvents
                    }
                });
                Object.defineProperty(exports, "transition", {
                    enumerable: true,
                    get: function() {
                        return _m_support.transition
                    }
                });
                Object.defineProperty(exports, "transitionEndEventName", {
                    enumerable: true,
                    get: function() {
                        return _m_support.transitionEndEventName
                    }
                });
                var _m_support = __webpack_require__( /*! ../../__internal/core/utils/m_support */ 85991)
            },
        47420:
            /*!***************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/utils/svg.js ***!
              \***************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "HIDDEN_FOR_EXPORT", {
                    enumerable: true,
                    get: function() {
                        return _m_svg.HIDDEN_FOR_EXPORT
                    }
                });
                Object.defineProperty(exports, "getSvgElement", {
                    enumerable: true,
                    get: function() {
                        return _m_svg.getSvgElement
                    }
                });
                Object.defineProperty(exports, "getSvgMarkup", {
                    enumerable: true,
                    get: function() {
                        return _m_svg.getSvgMarkup
                    }
                });
                var _m_svg = __webpack_require__( /*! ../../__internal/core/utils/m_svg */ 89650)
            },
        49194:
            /*!****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/utils/template_manager.js ***!
              \****************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "acquireIntegrationTemplate", {
                    enumerable: true,
                    get: function() {
                        return _m_template_manager.acquireIntegrationTemplate
                    }
                });
                Object.defineProperty(exports, "acquireTemplate", {
                    enumerable: true,
                    get: function() {
                        return _m_template_manager.acquireTemplate
                    }
                });
                Object.defineProperty(exports, "addOneRenderedCall", {
                    enumerable: true,
                    get: function() {
                        return _m_template_manager.addOneRenderedCall
                    }
                });
                Object.defineProperty(exports, "addPublicElementNormalization", {
                    enumerable: true,
                    get: function() {
                        return _m_template_manager.addPublicElementNormalization
                    }
                });
                Object.defineProperty(exports, "defaultCreateElement", {
                    enumerable: true,
                    get: function() {
                        return _m_template_manager.defaultCreateElement
                    }
                });
                Object.defineProperty(exports, "findTemplates", {
                    enumerable: true,
                    get: function() {
                        return _m_template_manager.findTemplates
                    }
                });
                Object.defineProperty(exports, "getNormalizedTemplateArgs", {
                    enumerable: true,
                    get: function() {
                        return _m_template_manager.getNormalizedTemplateArgs
                    }
                });
                Object.defineProperty(exports, "suitableTemplatesByName", {
                    enumerable: true,
                    get: function() {
                        return _m_template_manager.suitableTemplatesByName
                    }
                });
                Object.defineProperty(exports, "templateKey", {
                    enumerable: true,
                    get: function() {
                        return _m_template_manager.templateKey
                    }
                });
                Object.defineProperty(exports, "validateTemplateSource", {
                    enumerable: true,
                    get: function() {
                        return _m_template_manager.validateTemplateSource
                    }
                });
                var _m_template_manager = __webpack_require__( /*! ../../__internal/core/utils/m_template_manager */ 91008)
            },
        11528:
            /*!****************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/utils/type.js ***!
              \****************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "isBoolean", {
                    enumerable: true,
                    get: function() {
                        return _m_type.isBoolean
                    }
                });
                Object.defineProperty(exports, "isDate", {
                    enumerable: true,
                    get: function() {
                        return _m_type.isDate
                    }
                });
                Object.defineProperty(exports, "isDeferred", {
                    enumerable: true,
                    get: function() {
                        return _m_type.isDeferred
                    }
                });
                Object.defineProperty(exports, "isDefined", {
                    enumerable: true,
                    get: function() {
                        return _m_type.isDefined
                    }
                });
                Object.defineProperty(exports, "isEmptyObject", {
                    enumerable: true,
                    get: function() {
                        return _m_type.isEmptyObject
                    }
                });
                Object.defineProperty(exports, "isEvent", {
                    enumerable: true,
                    get: function() {
                        return _m_type.isEvent
                    }
                });
                Object.defineProperty(exports, "isExponential", {
                    enumerable: true,
                    get: function() {
                        return _m_type.isExponential
                    }
                });
                Object.defineProperty(exports, "isFunction", {
                    enumerable: true,
                    get: function() {
                        return _m_type.isFunction
                    }
                });
                Object.defineProperty(exports, "isNumeric", {
                    enumerable: true,
                    get: function() {
                        return _m_type.isNumeric
                    }
                });
                Object.defineProperty(exports, "isObject", {
                    enumerable: true,
                    get: function() {
                        return _m_type.isObject
                    }
                });
                Object.defineProperty(exports, "isPlainObject", {
                    enumerable: true,
                    get: function() {
                        return _m_type.isPlainObject
                    }
                });
                Object.defineProperty(exports, "isPrimitive", {
                    enumerable: true,
                    get: function() {
                        return _m_type.isPrimitive
                    }
                });
                Object.defineProperty(exports, "isPromise", {
                    enumerable: true,
                    get: function() {
                        return _m_type.isPromise
                    }
                });
                Object.defineProperty(exports, "isRenderer", {
                    enumerable: true,
                    get: function() {
                        return _m_type.isRenderer
                    }
                });
                Object.defineProperty(exports, "isString", {
                    enumerable: true,
                    get: function() {
                        return _m_type.isString
                    }
                });
                Object.defineProperty(exports, "isWindow", {
                    enumerable: true,
                    get: function() {
                        return _m_type.isWindow
                    }
                });
                Object.defineProperty(exports, "type", {
                    enumerable: true,
                    get: function() {
                        return _m_type.type
                    }
                });
                var _m_type = __webpack_require__( /*! ../../__internal/core/utils/m_type */ 39918)
            },
        40216:
            /*!****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/utils/variable_wrapper.js ***!
              \****************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _m_variable_wrapper = __webpack_require__( /*! ../../__internal/core/utils/m_variable_wrapper */ 66082);
                exports.default = _m_variable_wrapper.variableWrapper;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        20142:
            /*!*******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/utils/version.js ***!
              \*******************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "compare", {
                    enumerable: true,
                    get: function() {
                        return _m_version.compare
                    }
                });
                var _m_version = __webpack_require__( /*! ../../__internal/core/utils/m_version */ 5388)
            },
        55355:
            /*!*********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/utils/view_port.js ***!
              \*********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "changeCallback", {
                    enumerable: true,
                    get: function() {
                        return _m_view_port.changeCallback
                    }
                });
                Object.defineProperty(exports, "originalViewPort", {
                    enumerable: true,
                    get: function() {
                        return _m_view_port.originalViewPort
                    }
                });
                Object.defineProperty(exports, "value", {
                    enumerable: true,
                    get: function() {
                        return _m_view_port.value
                    }
                });
                var _m_view_port = __webpack_require__( /*! ../../__internal/core/utils/m_view_port */ 65913)
            },
        3104:
            /*!******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/utils/window.js ***!
              \******************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "defaultScreenFactorFunc", {
                    enumerable: true,
                    get: function() {
                        return _m_window.defaultScreenFactorFunc
                    }
                });
                Object.defineProperty(exports, "getCurrentScreenFactor", {
                    enumerable: true,
                    get: function() {
                        return _m_window.getCurrentScreenFactor
                    }
                });
                Object.defineProperty(exports, "getNavigator", {
                    enumerable: true,
                    get: function() {
                        return _m_window.getNavigator
                    }
                });
                Object.defineProperty(exports, "getWindow", {
                    enumerable: true,
                    get: function() {
                        return _m_window.getWindow
                    }
                });
                Object.defineProperty(exports, "hasProperty", {
                    enumerable: true,
                    get: function() {
                        return _m_window.hasProperty
                    }
                });
                Object.defineProperty(exports, "hasWindow", {
                    enumerable: true,
                    get: function() {
                        return _m_window.hasWindow
                    }
                });
                Object.defineProperty(exports, "setWindow", {
                    enumerable: true,
                    get: function() {
                        return _m_window.setWindow
                    }
                });
                var _m_window = __webpack_require__( /*! ../../__internal/core/utils/m_window */ 14470)
            },
        1956:
            /*!*************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/version.js ***!
              \*************************************************************/
            function(__unused_webpack_module, exports) {
                exports.version = exports.fullVersion = void 0;
                exports.version = "25.1.3";
                exports.fullVersion = "25.1.3"
            },
        48367:
            /*!*******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/version_check.js ***!
              \*******************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "c", {
                    enumerable: true,
                    get: function() {
                        return _version.assertDevExtremeVersion
                    }
                });
                var _version = __webpack_require__( /*! ../__internal/utils/version */ 20258)
            },
        77735:
            /*!********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/data/abstract_store.js ***!
              \********************************************************************/
            function(module, exports, __webpack_require__) {
                Object.defineProperty(exports, "default", {
                    enumerable: true,
                    get: function() {
                        return _abstract_store.default
                    }
                });
                var _abstract_store = (e = __webpack_require__( /*! ../common/data/abstract_store */ 5995), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        50797:
            /*!*******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/data/apply_changes.js ***!
              \*******************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _data = __webpack_require__( /*! ../common/data */ 11036);
                exports.default = _data.applyChanges;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        67664:
            /*!*****************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/data/array_store.js ***!
              \*****************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _array_store = (e = __webpack_require__( /*! ../common/data/array_store */ 80556), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                exports.default = _array_store.default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        37754:
            /*!******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/data/custom_store.js ***!
              \******************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _custom_store = __webpack_require__( /*! ../common/data/custom_store */ 63326);
                exports.default = _custom_store.CustomStore;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        47283:
            /*!*****************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/data/data_source.js ***!
              \*****************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _data_source = (e = __webpack_require__( /*! ../common/data/data_source */ 14479), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                exports.default = _data_source.default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        73192:
            /*!***********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/data/endpoint_selector.js ***!
              \***********************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _endpoint_selector = (e = __webpack_require__( /*! ../common/data/endpoint_selector */ 44180), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                exports.default = _endpoint_selector.default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        74760:
            /*!************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/data/errors.js ***!
              \************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "errorHandler", {
                    enumerable: true,
                    get: function() {
                        return _errors.errorHandler
                    }
                });
                Object.defineProperty(exports, "setErrorHandler", {
                    enumerable: true,
                    get: function() {
                        return _data.setErrorHandler
                    }
                });
                var _data = __webpack_require__( /*! ../common/data */ 11036);
                var _errors = __webpack_require__( /*! ../common/data/errors */ 82812)
            },
        1242:
            /*!*****************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/data/local_store.js ***!
              \*****************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _local_store = (e = __webpack_require__( /*! ../common/data/local_store */ 71790), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                exports.default = _local_store.default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        87062:
            /*!*******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/data/odata/context.js ***!
              \*******************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _context = (e = __webpack_require__( /*! ../../common/data/odata/context */ 34170), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                exports.default = _context.default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        25184:
            /*!*****************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/data/odata/store.js ***!
              \*****************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _store = (e = __webpack_require__( /*! ../../common/data/odata/store */ 29284), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                exports.default = _store.default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        57076:
            /*!*****************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/data/odata/utils.js ***!
              \*****************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                var _utils = __webpack_require__( /*! ../../common/data/odata/utils */ 8056);
                Object.keys(_utils).forEach((function(key) {
                    if ("default" === key || "__esModule" === key) {
                        return
                    }
                    if (key in exports && exports[key] === _utils[key]) {
                        return
                    }
                    Object.defineProperty(exports, key, {
                        enumerable: true,
                        get: function() {
                            return _utils[key]
                        }
                    })
                }))
            },
        22567:
            /*!***********************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/data/query.js ***!
              \***********************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _data = __webpack_require__( /*! ../common/data */ 11036);
                exports.default = _data.query;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        99354:
            /*!***********************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/data/utils.js ***!
              \***********************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                var _utils = __webpack_require__( /*! ../common/data/utils */ 89358);
                Object.keys(_utils).forEach((function(key) {
                    if ("default" === key || "__esModule" === key) {
                        return
                    }
                    if (key in exports && exports[key] === _utils[key]) {
                        return
                    }
                    Object.defineProperty(exports, key, {
                        enumerable: true,
                        get: function() {
                            return _utils[key]
                        }
                    })
                }))
            },
        87755:
            /*!************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/data_helper.js ***!
              \************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _m_data_helper = __webpack_require__( /*! ./__internal/data/m_data_helper */ 16780);
                exports.default = _m_data_helper.DataHelperMixin;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        10714:
            /*!********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/events/events.types.js ***!
              \********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.triggerHandler = void 0;
                var _events_engine = (e = __webpack_require__( /*! ../common/core/events/core/events_engine */ 92774), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                exports.triggerHandler = _events_engine.default.triggerHandler
            },
        69786:
            /*!*************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/events/index.js ***!
              \*************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "off", {
                    enumerable: true,
                    get: function() {
                        return _events.off
                    }
                });
                Object.defineProperty(exports, "on", {
                    enumerable: true,
                    get: function() {
                        return _events.on
                    }
                });
                Object.defineProperty(exports, "one", {
                    enumerable: true,
                    get: function() {
                        return _events.one
                    }
                });
                Object.defineProperty(exports, "trigger", {
                    enumerable: true,
                    get: function() {
                        return _events.trigger
                    }
                });
                Object.defineProperty(exports, "triggerHandler", {
                    enumerable: true,
                    get: function() {
                        return _events2.triggerHandler
                    }
                });
                var _events = __webpack_require__( /*! ../common/core/events */ 52391);
                var _events2 = __webpack_require__( /*! ./events.types */ 10714)
            },
        6285:
            /*!***************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/excel_exporter.js ***!
              \***************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "exportDataGrid", {
                    enumerable: true,
                    get: function() {
                        return _excel.exportDataGrid
                    }
                });
                Object.defineProperty(exports, "exportPivotGrid", {
                    enumerable: true,
                    get: function() {
                        return _excel.exportPivotGrid
                    }
                });
                var _excel = __webpack_require__( /*! ./common/export/excel */ 54594)
            },
        73549:
            /*!*********************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/exporter.js ***!
              \*********************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.export = function(data, options, getData) {
                    if (!data) {
                        return (new _deferred.Deferred).resolve()
                    }
                    const exportingAction = options.exportingAction;
                    const exportedAction = options.exportedAction;
                    const fileSavingAction = options.fileSavingAction;
                    const eventArgs = {
                        fileName: options.fileName,
                        format: options.format,
                        cancel: false
                    };
                    if ((0, _type.isBoolean)(options.selectedRowsOnly)) {
                        eventArgs.selectedRowsOnly = options.selectedRowsOnly
                    }(0, _type.isFunction)(exportingAction) && exportingAction(eventArgs);
                    if (!eventArgs.cancel) {
                        return getData(data, options).then((blob => {
                            (0, _type.isFunction)(exportedAction) && exportedAction();
                            if ((0, _type.isFunction)(fileSavingAction)) {
                                eventArgs.data = blob;
                                fileSavingAction(eventArgs)
                            }
                            if (!eventArgs.cancel) {
                                const format = "xlsx" === options.format ? "EXCEL" : options.format;
                                _file_saver.fileSaver.saveAs(eventArgs.fileName, format, blob)
                            }
                        }))
                    }
                    return (new _deferred.Deferred).resolve()
                };
                Object.defineProperty(exports, "fileSaver", {
                    enumerable: true,
                    get: function() {
                        return _file_saver.fileSaver
                    }
                });
                exports.svg = exports.pdf = exports.image = void 0;
                var _file_saver = __webpack_require__( /*! ./exporter/file_saver */ 34924);
                var _image_creator = __webpack_require__( /*! ./exporter/image_creator */ 28456);
                var _svg_creator = __webpack_require__( /*! ./exporter/svg_creator */ 86195);
                var _type = __webpack_require__( /*! ./core/utils/type */ 11528);
                var _deferred = __webpack_require__( /*! ./core/utils/deferred */ 87739);
                var _pdf_creator = __webpack_require__( /*! ./exporter/pdf_creator */ 49343);
                exports.image = {
                    creator: _image_creator.imageCreator,
                    getData: _image_creator.getData,
                    testFormats: _image_creator.testFormats
                };
                exports.pdf = {
                    getData: _pdf_creator.getData
                };
                exports.svg = {
                    creator: _svg_creator.svgCreator,
                    getData: _svg_creator.getData
                }
            },
        55972:
            /*!**********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/exporter/common/export_load_panel.js ***!
              \**********************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.ExportLoadPanel = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576);
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../common/core/localization/message */ 4671));
                var _type = __webpack_require__( /*! ../../core/utils/type */ 11528);
                var _load_panel = _interopRequireDefault(__webpack_require__( /*! ../../ui/load_panel */ 31876));
                var _m_utils = _interopRequireDefault(__webpack_require__( /*! ../../__internal/grids/grid_core/m_utils */ 53226));

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                exports.ExportLoadPanel = class {
                    constructor(component, $targetElement, $container, options) {
                        this._$targetElement = $targetElement;
                        this._$container = $container;
                        this._loadPanel = component._createComponent((0, _renderer.default)("<div>").addClass("dx-export-loadpanel").appendTo(this._$container), _load_panel.default, this.getOptions(options))
                    }
                    getDefaultOptions() {
                        return {
                            animation: null,
                            shading: false,
                            height: 90,
                            width: 200,
                            container: this._$container
                        }
                    }
                    getOptions(options) {
                        if ((0, _type.isDefined)(options.text)) {
                            options.message = options.text
                        } else {
                            options.message = _message.default.format("dxDataGrid-exporting")
                        }
                        return (0, _extend.extend)(this.getDefaultOptions(), options)
                    }
                    show() {
                        this._loadPanel.option("position", _m_utils.default.calculateLoadPanelPosition(this._$targetElement));
                        this._loadPanel.show()
                    }
                    dispose() {
                        (0, _renderer.default)(this._loadPanel.element()).remove();
                        delete this._loadPanel
                    }
                }
            },
        60199:
            /*!************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/exporter/exceljs/export.js ***!
              \************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.Export = void 0;
                var _type = __webpack_require__( /*! ../../core/utils/type */ 11528);
                var _export_format = __webpack_require__( /*! ./export_format */ 18053);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576);
                var _export_load_panel = __webpack_require__( /*! ../common/export_load_panel */ 55972);
                var _window = __webpack_require__( /*! ../../core/utils/window */ 3104);
                exports.Export = {
                    getFullOptions(options) {
                        const fullOptions = (0, _extend.extend)({}, options);
                        if (!((0, _type.isDefined)(fullOptions.worksheet) && (0, _type.isObject)(fullOptions.worksheet))) {
                            throw Error('The "worksheet" field must contain an object.')
                        }
                        if (!(0, _type.isDefined)(fullOptions.topLeftCell)) {
                            fullOptions.topLeftCell = {
                                row: 1,
                                column: 1
                            }
                        } else if ((0, _type.isString)(fullOptions.topLeftCell)) {
                            const {
                                row: row,
                                col: col
                            } = fullOptions.worksheet.getCell(fullOptions.topLeftCell);
                            fullOptions.topLeftCell = {
                                row: row,
                                column: col
                            }
                        }
                        if (!(0, _type.isDefined)(fullOptions.keepColumnWidths)) {
                            fullOptions.keepColumnWidths = true
                        }
                        if (!(0, _type.isDefined)(fullOptions.loadPanel)) {
                            fullOptions.loadPanel = {}
                        }
                        if (!(0, _type.isDefined)(fullOptions.loadPanel.enabled)) {
                            fullOptions.loadPanel.enabled = true
                        }
                        if (!(0, _type.isDefined)(fullOptions.encodeExecutableContent)) {
                            fullOptions.encodeExecutableContent = false
                        }
                        return fullOptions
                    },
                    convertDateForExcelJS: date => new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds())),
                    setNumberFormat(excelCell, numberFormat) {
                        excelCell.numFmt = numberFormat
                    },
                    getCellStyles(dataProvider) {
                        const styles = dataProvider.getStyles();
                        styles.forEach((style => {
                            let numberFormat = this.tryConvertToExcelNumberFormat(style.format, style.dataType);
                            if ((0, _type.isDefined)(numberFormat)) {
                                numberFormat = numberFormat.replace(/&quot;/g, '"')
                            }
                            style.numberFormat = numberFormat
                        }));
                        return styles
                    },
                    tryConvertToExcelNumberFormat(format, dataType) {
                        const newFormat = _export_format.ExportFormat.formatObjectConverter(format, dataType);
                        const currency = newFormat.currency;
                        format = newFormat.format;
                        dataType = newFormat.dataType;
                        return _export_format.ExportFormat.convertFormat(format, newFormat.precision, dataType, currency)
                    },
                    setAlignment(excelCell, wrapText, horizontalAlignment) {
                        excelCell.alignment = excelCell.alignment ?? {};
                        if ((0, _type.isDefined)(wrapText)) {
                            excelCell.alignment.wrapText = wrapText
                        }
                        if ((0, _type.isDefined)(horizontalAlignment)) {
                            excelCell.alignment.horizontal = horizontalAlignment
                        }
                        excelCell.alignment.vertical = "top"
                    },
                    setColumnsWidth(worksheet, widths, startColumnIndex) {
                        if (!(0, _type.isDefined)(widths)) {
                            return
                        }
                        for (let i = 0; i < widths.length; i++) {
                            const columnWidth = widths[i];
                            if ("number" === typeof columnWidth && isFinite(columnWidth)) {
                                worksheet.getColumn(startColumnIndex + i).width = Math.min(255, Math.floor(columnWidth / 7 * 100) / 100)
                            }
                        }
                    },
                    export (options, Helpers, getLoadPanelTargetElement, getLoadPanelContainer) {
                        var _component$_getIntern;
                        const {
                            component: component,
                            worksheet: worksheet,
                            topLeftCell: topLeftCell,
                            keepColumnWidths: keepColumnWidths,
                            selectedRowsOnly: selectedRowsOnly,
                            loadPanel: loadPanel,
                            encodeExecutableContent: encodeExecutableContent
                        } = options;
                        const dataProvider = component.getDataProvider(selectedRowsOnly);
                        const internalComponent = (null === (_component$_getIntern = component._getInternalInstance) || void 0 === _component$_getIntern ? void 0 : _component$_getIntern.call(component)) || component;
                        const initialLoadPanelEnabledOption = internalComponent.option("loadPanel") && internalComponent.option("loadPanel").enabled;
                        if (initialLoadPanelEnabledOption) {
                            component.option("loadPanel.enabled", false)
                        }
                        let exportLoadPanel;
                        if (loadPanel.enabled && (0, _window.hasWindow)()) {
                            const $targetElement = getLoadPanelTargetElement(component);
                            const $container = getLoadPanelContainer(component);
                            exportLoadPanel = new _export_load_panel.ExportLoadPanel(component, $targetElement, $container, loadPanel);
                            exportLoadPanel.show()
                        }
                        const wrapText = !!component.option("wordWrapEnabled");
                        worksheet.properties.outlineProperties = {
                            summaryBelow: false,
                            summaryRight: false
                        };
                        const cellRange = {
                            from: {
                                row: topLeftCell.row,
                                column: topLeftCell.column
                            },
                            to: {
                                row: topLeftCell.row,
                                column: topLeftCell.column
                            }
                        };
                        return new Promise((resolve => {
                            dataProvider.ready().done((() => {
                                const columns = dataProvider.getColumns();
                                const dataRowsCount = dataProvider.getRowsCount();
                                const helpers = new Helpers(component, dataProvider, worksheet, options);
                                if (keepColumnWidths) {
                                    this.setColumnsWidth(worksheet, dataProvider.getColumnsWidths(), cellRange.from.column)
                                }
                                helpers._exportAllFieldHeaders(columns, this.setAlignment);
                                const fieldHeaderRowsCount = helpers._getFieldHeaderRowsCount();
                                cellRange.to.row = cellRange.from.row + fieldHeaderRowsCount;
                                const styles = this.getCellStyles(dataProvider);
                                for (let rowIndex = 0; rowIndex < dataRowsCount; rowIndex++) {
                                    const currentRowIndex = cellRange.from.row + fieldHeaderRowsCount + rowIndex;
                                    const row = worksheet.getRow(currentRowIndex);
                                    let startColumnIndex = 0;
                                    if (helpers._isRowFieldHeadersRow(rowIndex)) {
                                        startColumnIndex = dataProvider.getRowAreaColCount();
                                        helpers._exportFieldHeaders("row", currentRowIndex, 0, startColumnIndex, this.setAlignment)
                                    }
                                    helpers._trySetOutlineLevel(row, rowIndex);
                                    this.exportRow(dataProvider, helpers, row, rowIndex, startColumnIndex, columns.length, wrapText, styles, encodeExecutableContent);
                                    cellRange.to.row = currentRowIndex
                                }
                                helpers.mergedRangesManager.applyMergedRages();
                                cellRange.to.column += columns.length > 0 ? columns.length - 1 : 0;
                                const worksheetViewSettings = worksheet.views[0] || {};
                                if (component.option("rtlEnabled")) {
                                    worksheetViewSettings.rightToLeft = true
                                }
                                if (helpers._isFrozenZone(dataProvider)) {
                                    if (-1 === Object.keys(worksheetViewSettings).indexOf("state")) {
                                        (0, _extend.extend)(worksheetViewSettings, helpers._getWorksheetFrozenState(cellRange))
                                    }
                                    helpers._trySetAutoFilter(cellRange)
                                }
                                if (Object.keys(worksheetViewSettings).length > 0) {
                                    worksheet.views = [worksheetViewSettings]
                                }
                                resolve(cellRange)
                            })).always((() => {
                                if (initialLoadPanelEnabledOption) {
                                    component.option("loadPanel.enabled", initialLoadPanelEnabledOption)
                                }
                                if (loadPanel.enabled && (0, _window.hasWindow)()) {
                                    exportLoadPanel.dispose()
                                }
                            }))
                        }))
                    },
                    exportRow(dataProvider, helpers, row, rowIndex, startColumnIndex, columnsCount, wrapText, styles, encodeExecutableContent) {
                        for (let cellIndex = startColumnIndex; cellIndex < columnsCount; cellIndex++) {
                            const cellData = dataProvider.getCellData(rowIndex, cellIndex, true);
                            const excelCell = row.getCell(helpers._getFirstColumnIndex() + cellIndex);
                            helpers.mergedRangesManager.updateMergedRanges(excelCell, rowIndex, cellIndex, helpers);
                            const cellInfo = helpers.mergedRangesManager.findMergedCellInfo(rowIndex, cellIndex, helpers._isHeaderCell(rowIndex, cellIndex));
                            if ((0, _type.isDefined)(cellInfo) && excelCell !== cellInfo.masterCell) {
                                excelCell.style = cellInfo.masterCell.style;
                                excelCell.value = cellInfo.masterCell.value
                            } else {
                                if ((0, _type.isDate)(cellData.value)) {
                                    excelCell.value = this.convertDateForExcelJS(cellData.value)
                                } else {
                                    excelCell.value = cellData.value
                                }
                                if ((0, _type.isDefined)(excelCell.value)) {
                                    const {
                                        bold: bold,
                                        alignment: horizontalAlignment,
                                        numberFormat: numberFormat
                                    } = styles[dataProvider.getStyleId(rowIndex, cellIndex)];
                                    if ((0, _type.isDefined)(numberFormat)) {
                                        this.setNumberFormat(excelCell, numberFormat)
                                    } else if ((0, _type.isString)(excelCell.value) && /^[@=+-]/.test(excelCell.value)) {
                                        this.setNumberFormat(excelCell, "@")
                                    }
                                    helpers._trySetFont(excelCell, bold);
                                    this.setAlignment(excelCell, wrapText, horizontalAlignment)
                                }
                            }
                            helpers._customizeCell(excelCell, cellData.cellSourceData);
                            if (encodeExecutableContent) {
                                excelCell.value = _export_format.ExportFormat.encode(excelCell.value)
                            }
                        }
                    }
                }
            },
        55921:
            /*!**********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/exporter/exceljs/export_data_grid.js ***!
              \**********************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.exportDataGrid = function(options) {
                    return _export.Export.export(function(options) {
                        if (!((0, _type.isDefined)(options) && (0, _type.isObject)(options))) {
                            throw Error('The "exportDataGrid" method requires a configuration object.')
                        }
                        if (!((0, _type.isDefined)(options.component) && (0, _type.isObject)(options.component) && "dxDataGrid" === options.component.NAME)) {
                            throw Error('The "component" field must contain a DataGrid instance.')
                        }
                        if (!(0, _type.isDefined)(options.selectedRowsOnly)) {
                            options.selectedRowsOnly = false
                        }
                        if (!(0, _type.isDefined)(options.autoFilterEnabled)) {
                            options.autoFilterEnabled = false
                        }
                        return _export.Export.getFullOptions(options)
                    }(options), DataGridHelpers, _getLoadPanelTargetElement, _getLoadPanelContainer)
                };
                var _type = __webpack_require__( /*! ../../core/utils/type */ 11528);
                var _export = __webpack_require__( /*! ./export */ 60199);
                var _export_merged_ranges_manager = __webpack_require__( /*! ./export_merged_ranges_manager */ 6103);
                class DataGridHelpers {
                    constructor(component, dataProvider, worksheet, options) {
                        this.component = component;
                        this.dataProvider = dataProvider;
                        this.worksheet = worksheet;
                        this.mergedRangesManager = new _export_merged_ranges_manager.MergedRangesManager(dataProvider, worksheet);
                        this.topLeftCell = options.topLeftCell;
                        this.customizeCell = options.customizeCell;
                        this.autoFilterEnabled = options.autoFilterEnabled
                    }
                    _getFirstColumnIndex() {
                        return this.topLeftCell.column
                    }
                    _getFieldHeaderRowsCount() {
                        return 0
                    }
                    _trySetAutoFilter(cellRange) {
                        if (this.autoFilterEnabled) {
                            if (!(0, _type.isDefined)(this.worksheet.autoFilter) && this.dataProvider.getRowsCount() > 0) {
                                const dataRange = {
                                    from: {
                                        row: cellRange.from.row + this.dataProvider.getHeaderRowCount() - 1,
                                        column: cellRange.from.column
                                    },
                                    to: cellRange.to
                                };
                                this.worksheet.autoFilter = dataRange
                            }
                        }
                    }
                    _trySetFont(excelCell, bold) {
                        if ((0, _type.isDefined)(bold)) {
                            excelCell.font = excelCell.font || {};
                            excelCell.font.bold = bold
                        }
                    }
                    _getWorksheetFrozenState(cellRange) {
                        return {
                            state: "frozen",
                            ySplit: cellRange.from.row + this.dataProvider.getFrozenArea().y - 1
                        }
                    }
                    _trySetOutlineLevel(row, rowIndex) {
                        if (rowIndex >= this.dataProvider.getHeaderRowCount()) {
                            row.outlineLevel = this.dataProvider.getGroupLevel(rowIndex)
                        }
                    }
                    _isFrozenZone(dataProvider) {
                        return dataProvider.getHeaderRowCount() > 0
                    }
                    _isHeaderCell(rowIndex) {
                        return rowIndex < this.dataProvider.getHeaderRowCount()
                    }
                    _isInfoCell() {
                        return false
                    }
                    _allowToMergeRange() {
                        return true
                    }
                    _getAllFieldHeaders() {
                        return []
                    }
                    _customizeCell(excelCell, gridCell) {
                        if ((0, _type.isFunction)(this.customizeCell)) {
                            this.customizeCell({
                                excelCell: excelCell,
                                gridCell: gridCell
                            })
                        }
                    }
                    _exportFieldHeaders() {}
                    _exportAllFieldHeaders() {}
                    _isRowFieldHeadersRow() {}
                }

                function _getLoadPanelTargetElement(component) {
                    return component.getView("rowsView").element()
                }

                function _getLoadPanelContainer(component) {
                    return component.getView("rowsView").element().parent()
                }
            },
        18053:
            /*!*******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/exporter/exceljs/export_format.js ***!
              \*******************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.ExportFormat = void 0;
                var _string = __webpack_require__( /*! ../../core/utils/string */ 54497);
                var _number = _interopRequireDefault(__webpack_require__( /*! ../../common/core/localization/number */ 52771));
                var _date = _interopRequireDefault(__webpack_require__( /*! ../../common/core/localization/date */ 38662));
                var _type = __webpack_require__( /*! ../../core/utils/type */ 11528);
                var _date2 = __webpack_require__( /*! ../../common/core/localization/ldml/date.format */ 83445);
                var _language_codes = __webpack_require__( /*! ../../common/core/localization/language_codes */ 64333);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576);
                __webpack_require__( /*! ../../common/core/localization/currency */ 17333);

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const DEFINED_NUMBER_FORMTATS = {
                    thousands: "#,##0{0},&quot;K&quot;",
                    millions: "#,##0{0},,&quot;M&quot;",
                    billions: "#,##0{0},,,&quot;B&quot;",
                    trillions: "#,##0{0},,,,&quot;T&quot;",
                    percent: "0{0}%",
                    decimal: "#{0}",
                    fixedpoint: "#,##0{0}",
                    exponential: "0{0}E+00",
                    currency: " "
                };
                const PERIOD_REGEXP = /a+/g;
                const DAY_REGEXP = /E/g;
                const DO_REGEXP = /dE+/g;
                const STANDALONE_MONTH_REGEXP = /L/g;
                const HOUR_REGEXP = /h/g;
                const ANY_REGEXP = /./g;

                function _convertDateFormat(format) {
                    const formattedValue = (_date.default.format(new Date(2009, 8, 8, 6, 5, 4), format) || "").toString();
                    let result = (0, _date2.getFormat)((value => _date.default.format(value, format)));
                    if (result) {
                        result = function(format) {
                            return format.split("/").join("\\/").split("'").map((function(datePart, index) {
                                if (index % 2 === 0) {
                                    return datePart.replace(PERIOD_REGEXP, "AM/PM").replace(DO_REGEXP, "d").replace(DAY_REGEXP, "d").replace(STANDALONE_MONTH_REGEXP, "M").replace(HOUR_REGEXP, "H").split("[").join("\\[").split("]").join("\\]")
                                }
                                if (datePart) {
                                    return datePart.replace(ANY_REGEXP, "\\$&")
                                }
                                return "'"
                            })).join("")
                        }(result);
                        result = function(defaultPattern) {
                            const languageID = (0, _language_codes.getLanguageId)();
                            let languageIDStr = languageID ? languageID.toString(16) : "";
                            let languageInfo = "";
                            if (function(text) {
                                    let code;
                                    for (let i = 0; i < text.length; i++) {
                                        code = text.charCodeAt(i);
                                        if (code >= 1632 && code < 1642) {
                                            return true
                                        }
                                    }
                                    return false
                                }(defaultPattern)) {
                                while (languageIDStr.length < 3) {
                                    languageIDStr = "0" + languageIDStr
                                }
                                languageInfo = "[$-2010" + languageIDStr + "]"
                            } else if (languageIDStr) {
                                languageInfo = "[$-" + languageIDStr + "]"
                            }
                            return languageInfo
                        }(formattedValue) + result
                    }
                    return result
                }

                function _includesCSVExpression(value) {
                    if (!value) {
                        return false
                    }
                    if (/^[@=\t\r]/.test(value)) {
                        return true
                    }
                    if (!/^[+-]/.test(value)) {
                        return false
                    }
                    return !(0, _type.isNumeric)(value)
                }
                exports.ExportFormat = {
                    formatObjectConverter(format, dataType) {
                        const result = {
                            format: format,
                            precision: format && format.precision,
                            dataType: dataType
                        };
                        if ((0, _type.isObject)(format)) {
                            return (0, _extend.extend)(result, format, {
                                format: format.formatter || format.type,
                                currency: format.currency
                            })
                        }
                        return result
                    },
                    convertFormat(format, precision, type, currency) {
                        if ((0, _type.isDefined)(format)) {
                            if ("date" === type) {
                                return _convertDateFormat(format)
                            } else if ((0, _type.isString)(format) && DEFINED_NUMBER_FORMTATS[format.toLowerCase()]) {
                                return function(format, precision, currency) {
                                    let result;
                                    let excelFormat;
                                    if ("currency" === format) {
                                        excelFormat = _number.default.getOpenXmlCurrencyFormat(currency)
                                    } else {
                                        excelFormat = DEFINED_NUMBER_FORMTATS[format.toLowerCase()]
                                    }
                                    if (excelFormat) {
                                        result = (0, _string.format)(excelFormat, function(format, precision) {
                                            let result;
                                            let i;
                                            if (precision > 0) {
                                                result = "decimal" !== format ? "." : "";
                                                for (i = 0; i < precision; i++) {
                                                    result += "0"
                                                }
                                                return result
                                            }
                                            return ""
                                        }(format, precision))
                                    }
                                    return result
                                }(format, precision, currency)
                            }
                        }
                    },
                    encode(value) {
                        let escaped = false;
                        if (function(value) {
                                if (!value || value.length < 2) {
                                    return false
                                }
                                return _includesCSVExpression(value)
                            }(value)) {
                            escaped = true
                        } else if (function(value, textQualifier) {
                                if (!value || value.length < 4 || value[0] !== textQualifier) {
                                    return false
                                }
                                return _includesCSVExpression(value.substring(1, value.length - 1))
                            }(value, '"')) {
                            value = value.substring(1, value.length - 1);
                            escaped = true
                        }
                        if (escaped) {
                            const singleTextQualifier = '"';
                            const escapedTextQualifier = '""';
                            return "\"'" + value.replaceAll(singleTextQualifier, escapedTextQualifier) + '"'
                        }
                        return value
                    }
                }
            },
        6103:
            /*!**********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/exporter/exceljs/export_merged_ranges_manager.js ***!
              \**********************************************************************************************/
            function(__unused_webpack_module, exports) {
                exports.MergedRangesManager = void 0;
                exports.MergedRangesManager = class {
                    constructor(dataProvider, worksheet) {
                        this.dataProvider = dataProvider;
                        this.worksheet = worksheet;
                        this.mergedCells = [];
                        this.mergedRanges = []
                    }
                    updateMergedRanges(excelCell, rowIndex, cellIndex, helpers) {
                        if (helpers._isHeaderCell(rowIndex, cellIndex) && !this.isCellInMergedRanges(rowIndex, cellIndex)) {
                            const {
                                rowspan: rowspan,
                                colspan: colspan
                            } = this.dataProvider.getCellMerging(rowIndex, cellIndex);
                            const isMasterCellOfMergedRange = colspan || rowspan;
                            if (isMasterCellOfMergedRange) {
                                const allowToMergeRange = helpers._allowToMergeRange(rowIndex, cellIndex, rowspan, colspan);
                                this.updateMergedCells(excelCell, rowIndex, cellIndex, rowspan, colspan);
                                if (allowToMergeRange) {
                                    const shouldReduceInfoRange = helpers._isInfoCell(rowIndex, cellIndex) && helpers._allowExportRowFieldHeaders();
                                    this.mergedRanges.push({
                                        masterCell: excelCell,
                                        rowspan: rowspan - (shouldReduceInfoRange && rowspan > 0),
                                        colspan: colspan
                                    })
                                }
                            }
                        }
                    }
                    isCellInMergedRanges(rowIndex, cellIndex) {
                        return this.mergedCells[rowIndex] && this.mergedCells[rowIndex][cellIndex]
                    }
                    findMergedCellInfo(rowIndex, cellIndex, isHeaderCell) {
                        if (isHeaderCell && this.isCellInMergedRanges(rowIndex, cellIndex)) {
                            return this.mergedCells[rowIndex][cellIndex]
                        }
                    }
                    updateMergedCells(excelCell, rowIndex, cellIndex, rowspan, colspan) {
                        for (let i = rowIndex; i <= rowIndex + rowspan; i++) {
                            for (let j = cellIndex; j <= cellIndex + colspan; j++) {
                                if (!this.mergedCells[i]) {
                                    this.mergedCells[i] = []
                                }
                                this.mergedCells[i][j] = {
                                    masterCell: excelCell
                                }
                            }
                        }
                    }
                    addMergedRange(masterCell, rowspan, colspan) {
                        this.mergedRanges.push({
                            masterCell: masterCell,
                            rowspan: rowspan,
                            colspan: colspan
                        })
                    }
                    applyMergedRages() {
                        this.mergedRanges.forEach((range => {
                            const startRowIndex = range.masterCell.fullAddress.row;
                            const startColumnIndex = range.masterCell.fullAddress.col;
                            const endRowIndex = startRowIndex + range.rowspan;
                            const endColumnIndex = startColumnIndex + range.colspan;
                            this.worksheet.mergeCells(startRowIndex, startColumnIndex, endRowIndex, endColumnIndex)
                        }))
                    }
                }
            },
        44295:
            /*!***********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/exporter/exceljs/export_pivot_grid.js ***!
              \***********************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.exportPivotGrid = function(options) {
                    return _export.Export.export(function(options) {
                        if (!((0, _type.isDefined)(options) && (0, _type.isObject)(options))) {
                            throw Error('The "exportPivotGrid" method requires a configuration object.')
                        }
                        if (!((0, _type.isDefined)(options.component) && (0, _type.isObject)(options.component) && "dxPivotGrid" === options.component.NAME)) {
                            throw Error('The "component" field must contain a PivotGrid instance.')
                        }
                        if (!(0, _type.isDefined)(options.mergeRowFieldValues)) {
                            options.mergeRowFieldValues = true
                        }
                        if (!(0, _type.isDefined)(options.mergeColumnFieldValues)) {
                            options.mergeColumnFieldValues = true
                        }
                        if (!(0, _type.isDefined)(options.exportDataFieldHeaders)) {
                            options.exportDataFieldHeaders = false
                        }
                        if (!(0, _type.isDefined)(options.exportRowFieldHeaders)) {
                            options.exportRowFieldHeaders = false
                        }
                        if (!(0, _type.isDefined)(options.exportColumnFieldHeaders)) {
                            options.exportColumnFieldHeaders = false
                        }
                        if (!(0, _type.isDefined)(options.exportFilterFieldHeaders)) {
                            options.exportFilterFieldHeaders = false
                        }
                        return _export.Export.getFullOptions(options)
                    }(options), PivotGridHelpers, _getLoadPanelTargetElement, _getLoadPanelContainer)
                };
                var _type = __webpack_require__( /*! ../../core/utils/type */ 11528);
                var _export = __webpack_require__( /*! ./export */ 60199);
                var _position = __webpack_require__( /*! ../../core/utils/position */ 41639);
                var _inflector = __webpack_require__( /*! ../../core/utils/inflector */ 53124);
                var _export_merged_ranges_manager = __webpack_require__( /*! ./export_merged_ranges_manager */ 6103);

                function _extends() {
                    return _extends = Object.assign ? Object.assign.bind() : function(n) {
                        for (var e = 1; e < arguments.length; e++) {
                            var t = arguments[e];
                            for (var r in t) {
                                ({}).hasOwnProperty.call(t, r) && (n[r] = t[r])
                            }
                        }
                        return n
                    }, _extends.apply(null, arguments)
                }
                class PivotGridHelpers {
                    constructor(component, dataProvider, worksheet, options) {
                        this.component = component;
                        this.dataProvider = dataProvider;
                        this.worksheet = worksheet;
                        this.mergedRangesManager = new _export_merged_ranges_manager.MergedRangesManager(dataProvider, worksheet);
                        this.topLeftCell = options.topLeftCell;
                        this.customizeCell = options.customizeCell;
                        this.mergeColumnFieldValues = options.mergeColumnFieldValues;
                        this.mergeRowFieldValues = options.mergeRowFieldValues;
                        this.exportFilterFieldHeaders = options.exportFilterFieldHeaders;
                        this.exportDataFieldHeaders = options.exportDataFieldHeaders;
                        this.exportColumnFieldHeaders = options.exportColumnFieldHeaders;
                        this.exportRowFieldHeaders = options.exportRowFieldHeaders;
                        this.rtlEnabled = component.option("rtlEnabled");
                        this.rowHeaderLayout = component.option("rowHeaderLayout");
                        this.wrapText = !!component.option("wordWrapEnabled");
                        this.filterFieldHeaders = this._tryGetFieldHeaders("filter");
                        this.dataFieldHeaders = this._tryGetFieldHeaders("data");
                        this.columnFieldHeaders = this._tryGetFieldHeaders("column");
                        this.rowFieldHeaders = this._tryGetFieldHeaders("row")
                    }
                    _getFirstColumnIndex() {
                        return this.topLeftCell.column
                    }
                    _getWorksheetFrozenState(cellRange) {
                        const {
                            x: x,
                            y: y
                        } = this.dataProvider.getFrozenArea();
                        return {
                            state: "frozen",
                            xSplit: cellRange.from.column + x - 1,
                            ySplit: cellRange.from.row + y + this._getFieldHeaderRowsCount() - 1
                        }
                    }
                    _getFieldHeaderRowsCount() {
                        return 0 + this._allowExportFilterFieldHeaders() + (this._allowExportDataFieldHeaders() || this._allowExportColumnFieldHeaders())
                    }
                    _isFrozenZone() {
                        return true
                    }
                    _isHeaderCell(rowIndex, cellIndex) {
                        return rowIndex < this.dataProvider.getColumnAreaRowCount() || cellIndex < this.dataProvider.getRowAreaColCount()
                    }
                    _getDefaultFieldHeaderCellsData(value) {
                        return {
                            text: value,
                            value: value
                        }
                    }
                    _isInfoCell(rowIndex, cellIndex) {
                        return rowIndex < this.dataProvider.getColumnAreaRowCount() && cellIndex < this.dataProvider.getRowAreaColCount()
                    }
                    _allowToMergeRange(rowIndex, cellIndex, rowspan, colspan) {
                        return !(this.dataProvider.isColumnAreaCell(rowIndex, cellIndex) && !this.mergeColumnFieldValues && !!colspan || this.dataProvider.isRowAreaCell(rowIndex, cellIndex) && !this.mergeRowFieldValues && !!rowspan)
                    }
                    _trySetAutoFilter() {}
                    _trySetFont(excelCell, bold) {
                        if ((0, _type.isDefined)(bold)) {
                            excelCell.font = excelCell.font || {};
                            excelCell.font.bold = bold
                        }
                    }
                    _getFieldHeaderStyles() {
                        const borderStyle = {
                            style: "thin",
                            color: {
                                argb: "FF7E7E7E"
                            }
                        };
                        return {
                            alignment: (0, _position.getDefaultAlignment)(this.rtlEnabled),
                            bold: true,
                            border: {
                                bottom: borderStyle,
                                left: borderStyle,
                                right: borderStyle,
                                top: borderStyle
                            }
                        }
                    }
                    _trySetOutlineLevel() {}
                    _getAllFieldHeaders() {
                        return this.dataProvider._exportController.getDataSource()._descriptions
                    }
                    _tryGetFieldHeaders(area) {
                        if (!this[`export${(0,_inflector.camelize)(area,true)}FieldHeaders`]) {
                            return []
                        }
                        const fields = this._getAllFieldHeaders()["data" === area ? "values" : `${area}s`].filter((fieldHeader => fieldHeader.area === area));
                        if ("right" === (0, _position.getDefaultAlignment)(this.rtlEnabled)) {
                            fields.sort(((a, b) => b.areaIndex - a.areaIndex))
                        }
                        return fields.map((field => field.caption))
                    }
                    _customizeCell(excelCell, pivotCell, shouldPreventCall) {
                        if ((0, _type.isFunction)(this.customizeCell) && !shouldPreventCall) {
                            this.customizeCell({
                                excelCell: excelCell,
                                pivotCell: pivotCell
                            })
                        }
                    }
                    _isRowFieldHeadersRow(rowIndex) {
                        const isLastInfoRangeCell = this._isInfoCell(rowIndex, 0) && "row" === this.dataProvider.getCellData(rowIndex + 1, 0, true).cellSourceData.area;
                        return this._allowExportRowFieldHeaders() && isLastInfoRangeCell
                    }
                    _exportAllFieldHeaders(columns, setAlignment) {
                        const totalCellsCount = columns.length;
                        const rowAreaColCount = this.dataProvider.getRowAreaColCount();
                        let rowIndex = this.topLeftCell.row;
                        if (this._allowExportFilterFieldHeaders()) {
                            this._exportFieldHeaders("filter", rowIndex, 0, totalCellsCount, setAlignment);
                            rowIndex++
                        }
                        if (this._allowExportDataFieldHeaders()) {
                            this._exportFieldHeaders("data", rowIndex, 0, rowAreaColCount, setAlignment);
                            if (!this._allowExportColumnFieldHeaders()) {
                                this._exportFieldHeaders("column", rowIndex, rowAreaColCount, totalCellsCount - rowAreaColCount, setAlignment)
                            }
                        }
                        if (this._allowExportColumnFieldHeaders()) {
                            if (!this._allowExportDataFieldHeaders()) {
                                this._exportFieldHeaders("data", rowIndex, 0, rowAreaColCount, setAlignment)
                            }
                            this._exportFieldHeaders("column", rowIndex, rowAreaColCount, totalCellsCount - rowAreaColCount, setAlignment)
                        }
                    }
                    _exportFieldHeaders(area, rowIndex, startColumnIndex, totalColumnsCount, setAlignment) {
                        const fieldHeaders = this[`${area}FieldHeaders`];
                        const row = this.worksheet.getRow(rowIndex);
                        const shouldMergeHeaderField = "row" !== area || "row" === area && "tree" === this.rowHeaderLayout;
                        if (shouldMergeHeaderField) {
                            this.mergedRangesManager.addMergedRange(row.getCell(this.topLeftCell.column + startColumnIndex), 0, totalColumnsCount - 1)
                        }
                        for (let cellIndex = 0; cellIndex < totalColumnsCount; cellIndex++) {
                            const excelCell = row.getCell(this.topLeftCell.column + startColumnIndex + cellIndex);
                            const values = fieldHeaders;
                            let cellData = [];
                            const value = values.length > totalColumnsCount || shouldMergeHeaderField ? values.join(", ") : values[cellIndex];
                            cellData = _extends({}, this._getDefaultFieldHeaderCellsData(value), {
                                headerType: area
                            });
                            excelCell.value = value;
                            this._applyHeaderStyles(excelCell, setAlignment);
                            this._customizeCell(excelCell, cellData)
                        }
                    }
                    _applyHeaderStyles(excelCell, setAlignment) {
                        const {
                            bold: bold,
                            alignment: alignment,
                            border: border
                        } = this._getFieldHeaderStyles();
                        this._trySetFont(excelCell, bold);
                        setAlignment(excelCell, this.wrapText, alignment);
                        excelCell.border = border
                    }
                    _allowExportRowFieldHeaders() {
                        return this.rowFieldHeaders.length > 0
                    }
                    _allowExportFilterFieldHeaders() {
                        return this.filterFieldHeaders.length > 0
                    }
                    _allowExportDataFieldHeaders() {
                        return this.dataFieldHeaders.length > 0
                    }
                    _allowExportColumnFieldHeaders() {
                        return this.columnFieldHeaders.length > 0
                    }
                }

                function _getLoadPanelTargetElement(component) {
                    return component._dataArea.groupElement()
                }

                function _getLoadPanelContainer(component) {
                    return component.$element()
                }
            },
        34924:
            /*!********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/exporter/file_saver.js ***!
              \********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.fileSaver = exports.MIME_TYPES = void 0;
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../core/dom_adapter */ 64960));
                var _window = __webpack_require__( /*! ../core/utils/window */ 3104);
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../ui/widget/ui.errors */ 35185));
                var _type = __webpack_require__( /*! ../core/utils/type */ 11528);
                var _console = __webpack_require__( /*! ../core/utils/console */ 31951);

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const window = (0, _window.getWindow)();
                const navigator = (0, _window.getNavigator)();
                const FILE_EXTESIONS = {
                    EXCEL: "xlsx",
                    CSS: "css",
                    PNG: "png",
                    JPEG: "jpeg",
                    GIF: "gif",
                    SVG: "svg",
                    PDF: "pdf"
                };
                const MIME_TYPES = exports.MIME_TYPES = {
                    CSS: "text/css",
                    EXCEL: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
                    PNG: "image/png",
                    JPEG: "image/jpeg",
                    GIF: "image/gif",
                    SVG: "image/svg+xml",
                    PDF: "application/pdf"
                };
                exports.fileSaver = {
                    _revokeObjectURLTimeout: 3e4,
                    _getDataUri: function(format, data) {
                        const mimeType = this._getMimeType(format);
                        return `data:${mimeType};base64,${data}`
                    },
                    _getMimeType: function(format) {
                        return MIME_TYPES[format] || "application/octet-stream"
                    },
                    _linkDownloader: function(fileName, href) {
                        const exportLinkElement = _dom_adapter.default.createElement("a");
                        exportLinkElement.download = fileName;
                        exportLinkElement.href = href;
                        exportLinkElement.target = "_blank";
                        return exportLinkElement
                    },
                    _winJSBlobSave: function(blob, fileName, format) {
                        const savePicker = new Windows.Storage.Pickers.FileSavePicker;
                        savePicker.suggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.documentsLibrary;
                        const fileExtension = FILE_EXTESIONS[format];
                        if (fileExtension) {
                            const mimeType = this._getMimeType(format);
                            savePicker.fileTypeChoices.insert(mimeType, ["." + fileExtension])
                        }
                        savePicker.suggestedFileName = fileName;
                        savePicker.pickSaveFileAsync().then((function(file) {
                            if (file) {
                                file.openAsync(Windows.Storage.FileAccessMode.readWrite).then((function(outputStream) {
                                    const inputStream = blob.msDetachStream();
                                    Windows.Storage.Streams.RandomAccessStream.copyAsync(inputStream, outputStream).then((function() {
                                        outputStream.flushAsync().done((function() {
                                            inputStream.close();
                                            outputStream.close()
                                        }))
                                    }))
                                }))
                            }
                        }))
                    },
                    _click: function(link) {
                        try {
                            link.dispatchEvent(new MouseEvent("click", {
                                cancelable: true
                            }))
                        } catch (e) {
                            const event = _dom_adapter.default.getDocument().createEvent("MouseEvents");
                            event.initMouseEvent("click", true, true, window, 0, 0, 0, 80, 20, false, false, false, false, 0, null);
                            link.dispatchEvent(event)
                        }
                    },
                    _saveBlobAs: function(fileName, format, data) {
                        this._blobSaved = false;
                        if ((0, _type.isDefined)(navigator.msSaveOrOpenBlob)) {
                            navigator.msSaveOrOpenBlob(data, fileName);
                            this._blobSaved = true
                        } else if ((0, _type.isDefined)(window.WinJS)) {
                            this._winJSBlobSave(data, fileName, format);
                            this._blobSaved = true
                        } else {
                            const URL = window.URL || window.webkitURL || window.mozURL || window.msURL || window.oURL;
                            if ((0, _type.isDefined)(URL)) {
                                const objectURL = URL.createObjectURL(data);
                                const downloadLink = this._linkDownloader(fileName, objectURL);
                                setTimeout((() => {
                                    URL.revokeObjectURL(objectURL);
                                    this._objectUrlRevoked = true
                                }), this._revokeObjectURLTimeout);
                                this._click(downloadLink)
                            } else {
                                _console.logger.warn("window.URL || window.webkitURL || window.mozURL || window.msURL || window.oURL is not defined")
                            }
                        }
                    },
                    saveAs: function(fileName, format, data) {
                        const fileExtension = FILE_EXTESIONS[format];
                        if (fileExtension) {
                            fileName += "." + fileExtension
                        }
                        if ((0, _type.isFunction)(window.Blob)) {
                            this._saveBlobAs(fileName, format, data)
                        } else {
                            if (!(0, _type.isDefined)(navigator.userAgent.match(/iPad/i))) {
                                _ui.default.log("E1034")
                            }
                            const downloadLink = this._linkDownloader(fileName, this._getDataUri(format, data));
                            this._click(downloadLink)
                        }
                    }
                }
            },
        28456:
            /*!***********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/exporter/image_creator.js ***!
              \***********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.calcScaledInfo = calcScaledInfo;
                exports.getData = function(data, options) {
                    return imageCreator.getData(data, options)
                };
                exports.imageCreator = void 0;
                exports.testFormats = function(formats) {
                    const canvas = imageCreator._createCanvas(100, 100, 0);
                    return formats.reduce((function(r, f) {
                        const mimeType = ("image/" + f).toLowerCase();
                        if (-1 !== canvas.toDataURL(mimeType).indexOf(mimeType)) {
                            r.supported.push(f)
                        } else {
                            r.unsupported.push(f)
                        }
                        return r
                    }), {
                        supported: [],
                        unsupported: []
                    })
                };
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../core/renderer */ 64553));
                var _color = _interopRequireDefault(__webpack_require__( /*! ../color */ 43101));
                var _type = __webpack_require__( /*! ../core/utils/type */ 11528);
                var _m_svg = _interopRequireDefault(__webpack_require__( /*! ../__internal/core/utils/m_svg */ 89650));
                var _iterator = __webpack_require__( /*! ../core/utils/iterator */ 21274);
                var _extend = __webpack_require__( /*! ../core/utils/extend */ 52576);
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../core/dom_adapter */ 64960));
                var _dom = __webpack_require__( /*! ../core/utils/dom */ 86858);
                var _window = __webpack_require__( /*! ../core/utils/window */ 3104);
                var _inflector = __webpack_require__( /*! ../core/utils/inflector */ 53124);
                var _deferred = __webpack_require__( /*! ../core/utils/deferred */ 87739);

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const window = (0, _window.getWindow)();
                const _math = Math;
                const PI = _math.PI;
                const _min = _math.min;
                const _abs = _math.abs;
                const _sqrt = _math.sqrt;
                const _pow = _math.pow;
                const _atan2 = _math.atan2;
                const _cos = _math.cos;
                const _sin = _math.sin;
                const _number = Number;
                let parseAttributes;

                function arcTo(x1, y1, x2, y2, radius, largeArcFlag, clockwise, context) {
                    const cBx = (x1 + x2) / 2;
                    const cBy = (y1 + y2) / 2;
                    let aB = _atan2(y1 - y2, x1 - x2);
                    const k = largeArcFlag ? 1 : -1;
                    aB += PI / 180 * 90 * (clockwise ? 1 : -1);
                    const opSide = _sqrt(_pow(x2 - x1, 2) + _pow(y2 - y1, 2)) / 2;
                    const adjSide = _sqrt(_abs(_pow(radius, 2) - _pow(opSide, 2)));
                    const centerX = cBx + k * (adjSide * _cos(aB));
                    const centerY = cBy + k * (adjSide * _sin(aB));
                    const startAngle = _atan2(y1 - centerY, x1 - centerX);
                    const endAngle = _atan2(y2 - centerY, x2 - centerX);
                    context.arc(centerX, centerY, radius, startAngle, endAngle, !clockwise)
                }

                function getElementOptions(element, rootAppended) {
                    const attr = parseAttributes(element.attributes || {});
                    const options = (0, _extend.extend)({}, attr, {
                        text: element.textContent.replace(/\s+/g, " "),
                        textAlign: "middle" === attr["text-anchor"] ? "center" : attr["text-anchor"]
                    });
                    const transform = attr.transform;
                    let coords;
                    if (transform) {
                        coords = transform.match(/translate\(-*\d+([.]\d+)*(,*\s*-*\d+([.]\d+)*)*/);
                        if (coords) {
                            coords = coords[0].match(/-*\d+([.]\d+)*/g);
                            options.translateX = _number(coords[0]);
                            options.translateY = coords[1] ? _number(coords[1]) : 0
                        }
                        coords = transform.match(/rotate\(-*\d+([.]\d+)*(,*\s*-*\d+([.]\d+)*,*\s*-*\d+([.]\d+)*)*/);
                        if (coords) {
                            coords = coords[0].match(/-*\d+([.]\d+)*/g);
                            options.rotationAngle = _number(coords[0]);
                            options.rotationX = coords[1] && _number(coords[1]);
                            options.rotationY = coords[2] && _number(coords[2])
                        }
                        coords = transform.match(/scale\(-*\d+([.]\d+)*(,*\s*-*\d+([.]\d+)*)*/);
                        if (coords) {
                            coords = coords[0].match(/-*\d+([.]\d+)*/g);
                            options.scaleX = _number(coords[0]);
                            if (coords.length > 1) {
                                options.scaleY = _number(coords[1])
                            } else {
                                options.scaleY = options.scaleX
                            }
                        }
                    }! function(element, options, rootAppended) {
                        let style = element.style || {};
                        let field;
                        for (field in style) {
                            if ("" !== style[field]) {
                                options[(0, _inflector.camelize)(field)] = style[field]
                            }
                        }
                        if (rootAppended && _dom_adapter.default.isElementNode(element)) {
                            style = window.getComputedStyle(element);
                            ["fill", "stroke", "stroke-width", "font-family", "font-size", "font-style", "font-weight"].forEach((function(prop) {
                                if (prop in style && "" !== style[prop]) {
                                    options[(0, _inflector.camelize)(prop)] = style[prop]
                                }
                            }));
                            ["opacity", "fill-opacity", "stroke-opacity"].forEach((function(prop) {
                                if (prop in style && "" !== style[prop] && "1" !== style[prop]) {
                                    options[prop] = _number(style[prop])
                                }
                            }))
                        }
                        options.textDecoration = options.textDecoration || options.textDecorationLine;
                        options.globalAlpha = (0, _type.isDefined)(options.opacity) ? options.opacity : options.globalAlpha
                    }(element, options, rootAppended);
                    return options
                }

                function parseUrl(urlString) {
                    const matches = urlString && urlString.match(/url\(.*#(.*?)["']?\)/i);
                    return matches && matches[1]
                }

                function setFontStyle(context, options) {
                    const fontParams = [];
                    options.fontSize = options.fontSize || "10px";
                    options.fontFamily = options.fontFamily || "sans-serif";
                    options.fill = options.fill || "#000";
                    options.fontStyle && fontParams.push(options.fontStyle);
                    options.fontWeight && fontParams.push(options.fontWeight);
                    fontParams.push(options.fontSize);
                    fontParams.push(options.fontFamily);
                    context.font = fontParams.join(" ");
                    context.textAlign = options.textAlign;
                    context.fillStyle = options.fill;
                    context.globalAlpha = options.globalAlpha
                }

                function drawText(context, options, shared) {
                    setFontStyle(context, options);
                    applyFilter(context, options, shared);
                    options.text && context.fillText(options.text, options.x || 0, options.y || 0);
                    strokeElement(context, options, true);
                    ! function(context, options, shared) {
                        if (!options.textDecoration || "none" === options.textDecoration) {
                            return
                        }
                        const x = options.x;
                        const textWidth = context.measureText(options.text).width;
                        const textHeight = parseInt(options.fontSize, 10);
                        const lineHeight = .05 * textHeight < 1 ? 1 : .05 * textHeight;
                        let y = options.y;
                        switch (options.textDecoration) {
                            case "line-through":
                                y -= textHeight / 3 + lineHeight / 2;
                                break;
                            case "overline":
                                y -= textHeight - lineHeight;
                                break;
                            case "underline":
                                y += lineHeight
                        }
                        context.rect(x, y, textWidth, lineHeight);
                        fillElement(context, options, shared);
                        strokeElement(context, options)
                    }(context, options, shared)
                }

                function hasTspan(element) {
                    const nodes = element.childNodes;
                    for (let i = 0; i < nodes.length; i++) {
                        if ("tspan" === nodes[i].tagName) {
                            return true
                        }
                    }
                    return false
                }

                function drawTextElement(childNodes, context, options, shared) {
                    const lines = [];
                    let line;
                    let offset = 0;
                    for (let i = 0; i < childNodes.length; i++) {
                        const element = childNodes[i];
                        if (void 0 === element.tagName) {
                            drawElement(element, context, options, shared)
                        } else if ("tspan" === element.tagName || "text" === element.tagName) {
                            const elementOptions = getElementOptions(element, shared.rootAppended);
                            const mergedOptions = (0, _extend.extend)({}, options, elementOptions);
                            if ("tspan" === element.tagName && hasTspan(element)) {
                                drawTextElement(element.childNodes, context, mergedOptions, shared);
                                continue
                            }
                            mergedOptions.textAlign = "start";
                            if (!line || void 0 !== elementOptions.x) {
                                line = {
                                    elements: [],
                                    options: [],
                                    widths: [],
                                    offsets: []
                                };
                                lines.push(line)
                            }
                            if (void 0 !== elementOptions.y) {
                                offset = 0
                            }
                            if (void 0 !== elementOptions.dy) {
                                offset += parseFloat(elementOptions.dy)
                            }
                            line.elements.push(element);
                            line.options.push(mergedOptions);
                            line.offsets.push(offset);
                            setFontStyle(context, mergedOptions);
                            line.widths.push(context.measureText(mergedOptions.text).width)
                        }
                    }
                    lines.forEach((function(line) {
                        const commonWidth = line.widths.reduce((function(commonWidth, width) {
                            return commonWidth + width
                        }), 0);
                        let xDiff = 0;
                        let currentOffset = 0;
                        if ("center" === options.textAlign) {
                            xDiff = commonWidth / 2
                        }
                        if ("end" === options.textAlign) {
                            xDiff = commonWidth
                        }
                        line.options.forEach((function(o, index) {
                            const width = line.widths[index];
                            o.x = o.x - xDiff + currentOffset;
                            o.y += line.offsets[index];
                            currentOffset += width
                        }));
                        line.elements.forEach((function(element, index) {
                            drawTextElement(element.childNodes, context, line.options[index], shared)
                        }))
                    }))
                }

                function drawElement(element, context, parentOptions, shared) {
                    const tagName = element.tagName;
                    const isText = "text" === tagName || "tspan" === tagName || void 0 === tagName;
                    const isImage = "image" === tagName;
                    const isComment = 8 === element.nodeType;
                    const options = (0, _extend.extend)({}, parentOptions, getElementOptions(element, shared.rootAppended));
                    if ("hidden" === options.visibility || options[_m_svg.default.HIDDEN_FOR_EXPORT] || isComment) {
                        return
                    }
                    context.save();
                    !isImage && transformElement(context, options);
                    clipElement(context, options, shared);
                    ! function(options) {
                        options.strokeOpacity = void 0 !== options["stroke-opacity"] ? options["stroke-opacity"] : 1;
                        options.fillOpacity = void 0 !== options["fill-opacity"] ? options["fill-opacity"] : 1;
                        if (void 0 !== options.opacity) {
                            options.strokeOpacity *= options.opacity;
                            options.fillOpacity *= options.opacity
                        }
                    }(options);
                    let promise;
                    context.beginPath();
                    switch (element.tagName) {
                        case void 0:
                            drawText(context, options, shared);
                            break;
                        case "text":
                        case "tspan":
                            drawTextElement(element.childNodes, context, options, shared);
                            break;
                        case "image":
                            promise = function(context, options, shared) {
                                const d = new _deferred.Deferred;
                                const image = new window.Image;
                                image.onload = function() {
                                    context.save();
                                    context.globalAlpha = options.globalAlpha;
                                    transformElement(context, options);
                                    clipElement(context, options, shared);
                                    context.drawImage(image, options.x || 0, options.y || 0, options.width, options.height);
                                    context.restore();
                                    d.resolve()
                                };
                                image.onerror = function() {
                                    d.resolve()
                                };
                                image.setAttribute("crossOrigin", "anonymous");
                                image.src = options.href || options["xlink:href"];
                                return d
                            }(context, options, shared);
                            break;
                        case "path":
                            ! function(context, dAttr) {
                                const dArray = dAttr.replace(/,/g, " ").split(/([A-Z])/i).filter((item => "" !== item.trim()));
                                let i = 0;
                                let params;
                                let prevParams;
                                let prevParamsLen;
                                do {
                                    params = (dArray[i + 1] || "").trim().split(" ");
                                    switch (dArray[i]) {
                                        case "M":
                                            context.moveTo(_number(params[0]), _number(params[1]));
                                            i += 2;
                                            break;
                                        case "L":
                                            for (let j = 0; j < params.length / 2; j++) {
                                                context.lineTo(_number(params[2 * j]), _number(params[2 * j + 1]))
                                            }
                                            i += 2;
                                            break;
                                        case "C":
                                            context.bezierCurveTo(_number(params[0]), _number(params[1]), _number(params[2]), _number(params[3]), _number(params[4]), _number(params[5]));
                                            i += 2;
                                            break;
                                        case "a":
                                            prevParams = dArray[i - 1].trim().split(" ");
                                            prevParamsLen = prevParams.length - 1;
                                            arcTo(_number(prevParams[prevParamsLen - 1]), _number(prevParams[prevParamsLen]), _number(prevParams[prevParamsLen - 1]) + _number(params[5]), _number(prevParams[prevParamsLen]) + _number(params[6]), _number(params[0]), _number(params[3]), _number(params[4]), context);
                                            i += 2;
                                            break;
                                        case "A":
                                            prevParams = dArray[i - 1].trim().split(" ");
                                            prevParamsLen = prevParams.length - 1;
                                            arcTo(_number(prevParams[prevParamsLen - 1]), _number(prevParams[prevParamsLen]), _number(params[5]), _number(params[6]), _number(params[0]), _number(params[3]), _number(params[4]), context);
                                            i += 2;
                                            break;
                                        case "Z":
                                            context.closePath();
                                            i += 1;
                                            break;
                                        default:
                                            i++
                                    }
                                } while (i < dArray.length)
                            }(context, options.d);
                            break;
                        case "rect":
                            ! function(context, options) {
                                const x = options.x;
                                const y = options.y;
                                const width = options.width;
                                const height = options.height;
                                let cornerRadius = options.rx;
                                if (!cornerRadius) {
                                    context.rect(x, y, width, height)
                                } else {
                                    cornerRadius = _min(cornerRadius, width / 2, height / 2);
                                    context.save();
                                    context.translate(x, y);
                                    context.moveTo(width / 2, 0);
                                    context.arcTo(width, 0, width, height, cornerRadius);
                                    context.arcTo(width, height, 0, height, cornerRadius);
                                    context.arcTo(0, height, 0, 0, cornerRadius);
                                    context.arcTo(0, 0, cornerRadius, 0, cornerRadius);
                                    context.lineTo(width / 2, 0);
                                    context.restore()
                                }
                            }(context, options);
                            context.closePath();
                            break;
                        case "circle":
                            context.arc(options.cx, options.cy, options.r, 0, 2 * PI, 1)
                    }
                    if (!isText) {
                        applyFilter(context, options, shared);
                        if (!isImage) {
                            promise = fillElement(context, options, shared)
                        }
                        strokeElement(context, options)
                    }
                    applyGradient(context, options, shared, element, "linear");
                    applyGradient(context, options, shared, element, "radial");
                    context.restore();
                    return promise
                }

                function applyGradient(context, options, _ref, element, type) {
                    let {
                        linearGradients: linearGradients,
                        radialGradients: radialGradients
                    } = _ref;
                    const gradients = "linear" === type ? linearGradients : radialGradients;
                    if (0 === Object.keys(gradients).length) {
                        return
                    }
                    const id = parseUrl(options.fill);
                    if (id && gradients[id]) {
                        const box = element.getBBox();
                        const horizontalCenter = box.x + box.width / 2;
                        const verticalCenter = box.y + box.height / 2;
                        const maxRadius = Math.max(box.height / 2, box.width / 2);
                        const gradient = "linear" === type ? context.createLinearGradient(box.x, 0, box.x + box.width, 0) : context.createRadialGradient(horizontalCenter, verticalCenter, 0, horizontalCenter, verticalCenter, maxRadius);
                        gradients[id].colors.forEach((opt => {
                            const offset = parseInt(opt.offset.replace(/%/, ""));
                            gradient.addColorStop(offset / 100, opt.stopColor)
                        }));
                        if ("linear" === type) {
                            var _gradients$id$transfo;
                            const angle = ((null === (_gradients$id$transfo = gradients[id].transform) || void 0 === _gradients$id$transfo ? void 0 : _gradients$id$transfo.replace(/\D/g, "")) || 0) * Math.PI / 180;
                            context.translate(horizontalCenter, verticalCenter);
                            context.rotate(angle);
                            context.translate(-horizontalCenter, -verticalCenter)
                        }
                        context.globalAlpha = options.opacity;
                        context.fillStyle = gradient;
                        context.fill()
                    }
                }

                function applyFilter(context, options, shared) {
                    let filterOptions;
                    const id = parseUrl(options.filter);
                    if (id) {
                        filterOptions = shared.filters[id];
                        if (!filterOptions) {
                            filterOptions = {
                                offsetX: 0,
                                offsetY: 0,
                                blur: 0,
                                color: "#000"
                            }
                        }
                        context.shadowOffsetX = filterOptions.offsetX;
                        context.shadowOffsetY = filterOptions.offsetY;
                        context.shadowColor = filterOptions.color;
                        context.shadowBlur = filterOptions.blur
                    }
                }

                function transformElement(context, options) {
                    context.translate(options.translateX || 0, options.translateY || 0);
                    options.translateX = void 0;
                    options.translateY = void 0;
                    if (options.rotationAngle) {
                        context.translate(options.rotationX || 0, options.rotationY || 0);
                        context.rotate(options.rotationAngle * PI / 180);
                        context.translate(-(options.rotationX || 0), -(options.rotationY || 0));
                        options.rotationAngle = void 0;
                        options.rotationX = void 0;
                        options.rotationY = void 0
                    }
                    if (isFinite(options.scaleX)) {
                        context.scale(options.scaleX, options.scaleY);
                        options.scaleX = void 0;
                        options.scaleY = void 0
                    }
                }

                function clipElement(context, options, shared) {
                    if (options["clip-path"]) {
                        drawElement(shared.clipPaths[parseUrl(options["clip-path"])], context, {}, shared);
                        context.clip();
                        options["clip-path"] = void 0
                    }
                }

                function createGradient(element) {
                    var _element$attributes$g;
                    const options = {
                        colors: [],
                        transform: null === (_element$attributes$g = element.attributes.gradientTransform) || void 0 === _element$attributes$g ? void 0 : _element$attributes$g.textContent
                    };
                    (0, _iterator.each)(element.childNodes, ((_, _ref2) => {
                        let {
                            attributes: attributes
                        } = _ref2;
                        options.colors.push({
                            offset: attributes.offset.value,
                            stopColor: attributes["stop-color"].value
                        })
                    }));
                    return options
                }

                function createFilter(element) {
                    let color;
                    let opacity;
                    const filterOptions = {};
                    (0, _iterator.each)(element.childNodes, (function(_, node) {
                        const attr = node.attributes;
                        if (!attr.result) {
                            return
                        }
                        switch (attr.result.value) {
                            case "gaussianBlurResult":
                                filterOptions.blur = _number(attr.stdDeviation.value);
                                break;
                            case "offsetResult":
                                filterOptions.offsetX = _number(attr.dx.value);
                                filterOptions.offsetY = _number(attr.dy.value);
                                break;
                            case "floodResult":
                                color = attr["flood-color"] ? attr["flood-color"].value : "#000";
                                opacity = attr["flood-opacity"] ? attr["flood-opacity"].value : 1;
                                filterOptions.color = function(hexColor, alpha) {
                                    const color = new _color.default(hexColor);
                                    return "rgba(" + color.r + "," + color.g + "," + color.b + "," + alpha + ")"
                                }(color, opacity)
                        }
                    }));
                    return filterOptions
                }

                function asyncEach(array, callback) {
                    let d = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : new _deferred.Deferred;
                    let i = 0;
                    for (; i < array.length; i++) {
                        const result = callback(array[i]);
                        if ((0, _type.isPromise)(result)) {
                            result.then((() => {
                                asyncEach(Array.prototype.slice.call(array, i + 1), callback, d)
                            }));
                            break
                        }
                    }
                    if (i === array.length) {
                        d.resolve()
                    }
                    return d
                }

                function drawCanvasElements(elements, context, parentOptions, shared) {
                    return asyncEach(elements, (function(element) {
                        switch (element.tagName && element.tagName.toLowerCase()) {
                            case "g":
                            case "svg": {
                                const options = (0, _extend.extend)({}, parentOptions, getElementOptions(element, shared.rootAppended));
                                context.save();
                                transformElement(context, options);
                                clipElement(context, options, shared);
                                const onDone = () => {
                                    context.restore()
                                };
                                const promise = drawCanvasElements(element.childNodes, context, options, shared);
                                if ((0, _type.isPromise)(promise)) {
                                    promise.then(onDone)
                                } else {
                                    onDone()
                                }
                                return promise
                            }
                            case "defs":
                                return drawCanvasElements(element.childNodes, context, {}, shared);
                            case "clippath":
                                shared.clipPaths[element.attributes.id.textContent] = element.childNodes[0];
                                break;
                            case "pattern":
                                shared.patterns[element.attributes.id.textContent] = element;
                                break;
                            case "filter":
                                shared.filters[element.id] = createFilter(element);
                                break;
                            case "lineargradient":
                                shared.linearGradients[element.attributes.id.textContent] = createGradient(element);
                                break;
                            case "radialgradient":
                                shared.radialGradients[element.attributes.id.textContent] = createGradient(element);
                                break;
                            default:
                                return drawElement(element, context, parentOptions, shared)
                        }
                    }))
                }

                function strokeElement(context, options, isText) {
                    const stroke = options.stroke;
                    if (stroke && "none" !== stroke && 0 !== options["stroke-width"]) {
                        ! function(context, options) {
                            let matches = options["stroke-dasharray"] && options["stroke-dasharray"].match(/(\d+)/g);
                            if (matches && matches.length) {
                                matches = (0, _iterator.map)(matches, (function(item) {
                                    return _number(item)
                                }));
                                context.setLineDash(matches)
                            }
                        }(context, options);
                        context.lineJoin = options["stroke-linejoin"];
                        context.lineWidth = options["stroke-width"];
                        context.globalAlpha = options.strokeOpacity;
                        context.strokeStyle = stroke;
                        isText ? context.strokeText(options.text, options.x, options.y) : context.stroke();
                        context.globalAlpha = 1
                    }
                }

                function fillElement(context, options, shared) {
                    const fill = options.fill;
                    let promise;
                    if (fill && "none" !== fill) {
                        if (-1 === fill.search(/url/)) {
                            context.fillStyle = fill;
                            context.globalAlpha = options.fillOpacity;
                            context.fill();
                            context.globalAlpha = 1
                        } else {
                            const pattern = shared.patterns[parseUrl(fill)];
                            if (!pattern) {
                                return
                            }
                            promise = function(context, pattern, shared, parentOptions) {
                                const options = getElementOptions(pattern, shared.rootAppended);
                                const patternCanvas = imageCreator._createCanvas(options.width, options.height, 0);
                                const patternContext = patternCanvas.getContext("2d");
                                const promise = drawCanvasElements(pattern.childNodes, patternContext, options, shared);
                                const onDone = () => {
                                    context.fillStyle = context.createPattern(patternCanvas, "repeat");
                                    context.globalAlpha = parentOptions.fillOpacity;
                                    context.fill();
                                    context.globalAlpha = 1
                                };
                                if ((0, _type.isPromise)(promise)) {
                                    promise.then(onDone)
                                } else {
                                    onDone()
                                }
                                return promise
                            }(context, pattern, shared, options)
                        }
                    }
                    return promise
                }
                parseAttributes = function(attributes) {
                    const newAttributes = {};
                    let attr;
                    (0, _iterator.each)(attributes, (function(index, item) {
                        attr = item.textContent;
                        if (isFinite(attr)) {
                            attr = _number(attr)
                        }
                        newAttributes[item.name.toLowerCase()] = attr
                    }));
                    return newAttributes
                };

                function convertSvgToCanvas(svg, canvas, rootAppended) {
                    return drawCanvasElements(svg.childNodes, canvas.getContext("2d"), {}, {
                        clipPaths: {},
                        patterns: {},
                        filters: {},
                        linearGradients: {},
                        radialGradients: {},
                        rootAppended: rootAppended
                    })
                }

                function getCanvasFromSvg(markup, _ref3) {
                    let {
                        width: width,
                        height: height,
                        backgroundColor: backgroundColor,
                        margin: margin,
                        svgToCanvas: svgToCanvas = convertSvgToCanvas
                    } = _ref3;
                    const scaledScreenInfo = calcScaledInfo(width, height);
                    const canvas = imageCreator._createCanvas(scaledScreenInfo.width, scaledScreenInfo.height, margin);
                    const context = canvas.getContext("2d");
                    context.setTransform(scaledScreenInfo.pixelRatio, 0, 0, scaledScreenInfo.pixelRatio, 0, 0);
                    const svgElem = _m_svg.default.getSvgElement(markup);
                    let invisibleDiv;
                    const markupIsDomElement = _dom_adapter.default.isElementNode(markup) || (0, _type.isRenderer)(markup);
                    context.translate(margin, margin);
                    _dom_adapter.default.getBody().appendChild(canvas);
                    if (!markupIsDomElement) {
                        invisibleDiv = function() {
                            const invisibleDiv = _dom_adapter.default.createElement("div");
                            invisibleDiv.style.left = "-9999px";
                            invisibleDiv.style.position = "absolute";
                            return invisibleDiv
                        }();
                        invisibleDiv.appendChild(svgElem);
                        _dom_adapter.default.getBody().appendChild(invisibleDiv)
                    }
                    if (svgElem.attributes.direction) {
                        canvas.dir = svgElem.attributes.direction.textContent
                    }! function(context, width, height, backgroundColor, margin) {
                        context.fillStyle = backgroundColor || "#ffffff";
                        context.fillRect(-margin, -margin, width + 2 * margin, height + 2 * margin)
                    }(context, width, height, backgroundColor, margin);
                    return (0, _deferred.fromPromise)(svgToCanvas(svgElem, canvas, markupIsDomElement && (0, _dom.contains)(_dom_adapter.default.getBody(), (0, _renderer.default)(markup).get(0)))).then((() => canvas)).always((() => {
                        invisibleDiv && _dom_adapter.default.getBody().removeChild(invisibleDiv);
                        _dom_adapter.default.getBody().removeChild(canvas)
                    }))
                }
                const imageCreator = exports.imageCreator = {
                    getImageData: function(markup, options) {
                        const mimeType = "image/" + options.format;
                        if ((0, _type.isFunction)(options.__parseAttributesFn)) {
                            parseAttributes = options.__parseAttributesFn
                        }
                        return getCanvasFromSvg(markup, options).then((canvas => function(canvas, mimeType) {
                            const dataURL = canvas.toDataURL(mimeType, 1);
                            const imageData = window.atob(dataURL.substring(("data:" + mimeType + ";base64,").length));
                            return imageData
                        }(canvas, mimeType)))
                    },
                    getData: function(markup, options) {
                        const that = this;
                        return imageCreator.getImageData(markup, options).then((binaryData => {
                            const mimeType = "image/" + options.format;
                            const data = (0, _type.isFunction)(window.Blob) && !options.useBase64 ? that._getBlob(binaryData, mimeType) : that._getBase64(binaryData);
                            return data
                        }))
                    },
                    _getBlob: function(binaryData, mimeType) {
                        let i;
                        const dataArray = new Uint8Array(binaryData.length);
                        for (i = 0; i < binaryData.length; i++) {
                            dataArray[i] = binaryData.charCodeAt(i)
                        }
                        return new window.Blob([dataArray.buffer], {
                            type: mimeType
                        })
                    },
                    _getBase64: function(binaryData) {
                        return window.btoa(binaryData)
                    },
                    _createCanvas(width, height, margin) {
                        const canvas = (0, _renderer.default)("<canvas>")[0];
                        canvas.width = width + 2 * margin;
                        canvas.height = height + 2 * margin;
                        canvas.hidden = true;
                        return canvas
                    }
                };

                function calcScaledInfo(width, height) {
                    const pixelRatio = window.devicePixelRatio || 1;
                    return {
                        pixelRatio: pixelRatio,
                        width: width * pixelRatio,
                        height: height * pixelRatio
                    }
                }
            },
        39368:
            /*!********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/exporter/jspdf/autotable/export.js ***!
              \********************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.Export = void 0;
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528);
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576);
                var _date = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/localization/date */ 38662));
                var _number = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/localization/number */ 52771));
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/localization/message */ 4671));
                var _export_load_panel = __webpack_require__( /*! ../../common/export_load_panel */ 55972);
                var _window = __webpack_require__( /*! ../../../core/utils/window */ 3104);

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                exports.Export = {
                    getFullOptions: function(options) {
                        const fullOptions = (0, _extend.extend)({}, options);
                        if (!((0, _type.isDefined)(fullOptions.jsPDFDocument) && (0, _type.isObject)(fullOptions.jsPDFDocument))) {
                            throw Error('The "jsPDFDocument" field must contain a jsPDF instance.')
                        }
                        if (!((0, _type.isDefined)(fullOptions.jsPDFDocument.autoTable) && (0, _type.isFunction)(fullOptions.jsPDFDocument.autoTable))) {
                            throw Error('The "exportDataGrid" method requires a autoTable plugin for jsPDF object.')
                        }
                        if (!(0, _type.isDefined)(fullOptions.keepColumnWidths)) {
                            fullOptions.keepColumnWidths = true
                        }
                        if (!(0, _type.isDefined)(fullOptions.autoTableOptions)) {
                            fullOptions.autoTableOptions = this._getDefaultAutoTableOptions()
                        } else {
                            if (!(0, _type.isObject)(fullOptions.autoTableOptions)) {
                                throw Error('The "autoTableOptions" option must be of object type.')
                            }
                            fullOptions.autoTableOptions = (0, _extend.extend)(true, {}, this._getDefaultAutoTableOptions(), fullOptions.autoTableOptions)
                        }
                        if (!(0, _type.isDefined)(fullOptions.loadPanel)) {
                            fullOptions.loadPanel = {}
                        }
                        if (!(0, _type.isDefined)(fullOptions.loadPanel.enabled)) {
                            fullOptions.loadPanel.enabled = true
                        }
                        if (!(0, _type.isDefined)(fullOptions.loadPanel.text)) {
                            fullOptions.loadPanel.text = _message.default.format("dxDataGrid-exporting")
                        }
                        return fullOptions
                    },
                    _getDefaultAutoTableOptions: function() {
                        return {
                            theme: "plain",
                            tableLineColor: 149,
                            tableLineWidth: .1,
                            styles: {
                                textColor: 51,
                                lineColor: 149,
                                lineWidth: 0
                            },
                            columnStyles: {},
                            headStyles: {
                                fontStyle: "normal",
                                textColor: 149,
                                lineWidth: .1
                            },
                            bodyStyles: {
                                lineWidth: .1
                            },
                            head: [],
                            body: []
                        }
                    },
                    export: function(options) {
                        var _component$_getIntern;
                        const {
                            jsPDFDocument: jsPDFDocument,
                            autoTableOptions: autoTableOptions,
                            component: component,
                            customizeCell: customizeCell,
                            keepColumnWidths: keepColumnWidths,
                            selectedRowsOnly: selectedRowsOnly,
                            loadPanel: loadPanel
                        } = options;
                        const internalComponent = (null === (_component$_getIntern = component._getInternalInstance) || void 0 === _component$_getIntern ? void 0 : _component$_getIntern.call(component)) || component;
                        const initialLoadPanelEnabledOption = internalComponent.option("loadPanel") && internalComponent.option("loadPanel").enabled;
                        if (initialLoadPanelEnabledOption) {
                            component.option("loadPanel.enabled", false)
                        }
                        let exportLoadPanel;
                        if (loadPanel.enabled && (0, _window.hasWindow)()) {
                            const rowsView = component.getView("rowsView");
                            exportLoadPanel = new _export_load_panel.ExportLoadPanel(component, rowsView.element(), rowsView.element().parent(), loadPanel);
                            exportLoadPanel.show()
                        }
                        const dataProvider = component.getDataProvider(selectedRowsOnly);
                        const wrapText = !!component.option("wordWrapEnabled");
                        return new Promise((resolve => {
                            dataProvider.ready().done((() => {
                                const columns = dataProvider.getColumns();
                                const styles = dataProvider.getStyles();
                                const dataRowsCount = dataProvider.getRowsCount();
                                const headerRowCount = dataProvider.getHeaderRowCount();
                                const mergedCells = [];
                                if (keepColumnWidths) {
                                    const pdfColumnWidths = this._tryGetPdfColumnWidths(autoTableOptions.tableWidth, dataProvider.getColumnsWidths());
                                    if ((0, _type.isDefined)(pdfColumnWidths) && (0, _type.isDefined)(autoTableOptions.columnStyles)) {
                                        this._setColumnWidths(autoTableOptions.columnStyles, pdfColumnWidths)
                                    }
                                }
                                for (let rowIndex = 0; rowIndex < dataRowsCount; rowIndex++) {
                                    const row = [];
                                    for (let cellIndex = 0; cellIndex < columns.length; cellIndex++) {
                                        const {
                                            value: value,
                                            cellSourceData: gridCell
                                        } = dataProvider.getCellData(rowIndex, cellIndex, true);
                                        const cellStyle = styles[dataProvider.getStyleId(rowIndex, cellIndex)];
                                        const pdfCell = {
                                            content: this._getFormattedValue(value, cellStyle.format),
                                            styles: this._getPDFCellStyles(gridCell.rowType, columns[cellIndex].alignment, cellStyle, wrapText)
                                        };
                                        if ("header" === gridCell.rowType) {
                                            const mergedRange = this._tryGetMergeRange(rowIndex, cellIndex, mergedCells, dataProvider);
                                            if (mergedRange && mergedRange.rowSpan > 0) {
                                                pdfCell.rowSpan = mergedRange.rowSpan + 1
                                            }
                                            if (mergedRange && mergedRange.colSpan > 0) {
                                                pdfCell.colSpan = mergedRange.colSpan + 1
                                            }
                                            const isMergedCell = mergedCells[rowIndex] && mergedCells[rowIndex][cellIndex];
                                            if (!isMergedCell || pdfCell.rowSpan > 1 || pdfCell.colSpan > 1) {
                                                if ((0, _type.isFunction)(customizeCell)) {
                                                    customizeCell({
                                                        gridCell: gridCell,
                                                        pdfCell: pdfCell
                                                    })
                                                }
                                                row.push(pdfCell)
                                            }
                                        } else if ("group" === gridCell.rowType && !(0, _type.isDefined)(pdfCell.content) && 1 === row.length) {
                                            row[0].colSpan = row[0].colSpan ?? 1;
                                            row[0].colSpan++
                                        } else {
                                            pdfCell.content = pdfCell.content ?? "";
                                            if ((0, _type.isFunction)(customizeCell)) {
                                                customizeCell({
                                                    gridCell: gridCell,
                                                    pdfCell: pdfCell
                                                })
                                            }
                                            row.push(pdfCell)
                                        }
                                    }
                                    if (rowIndex < headerRowCount) {
                                        autoTableOptions.head.push(row)
                                    } else {
                                        autoTableOptions.body.push(row)
                                    }
                                }
                                jsPDFDocument.autoTable(autoTableOptions);
                                resolve()
                            })).always((() => {
                                if (initialLoadPanelEnabledOption) {
                                    component.option("loadPanel.enabled", initialLoadPanelEnabledOption)
                                }
                                if (loadPanel.enabled && (0, _window.hasWindow)()) {
                                    exportLoadPanel.dispose()
                                }
                            }))
                        }))
                    },
                    _getFormattedValue: function(value, format) {
                        if ((0, _type.isDefined)(format)) {
                            if ((0, _type.isDate)(value)) {
                                return _date.default.format(value, format)
                            }
                            if ((0, _type.isNumeric)(value)) {
                                return _number.default.format(value, format)
                            }
                        }
                        return value
                    },
                    _getPDFCellStyles: function(rowType, columnAlignment, cellStyle, wrapText) {
                        const {
                            alignment: cellAlignment,
                            bold: bold
                        } = cellStyle;
                        const align = "header" === rowType ? columnAlignment : cellAlignment;
                        const pdfCellStyle = {};
                        if (align) {
                            pdfCellStyle.halign = align
                        }
                        if (bold && "header" !== rowType) {
                            pdfCellStyle.fontStyle = "bold"
                        }
                        if (wrapText) {
                            pdfCellStyle.cellWidth = "wrap"
                        }
                        return pdfCellStyle
                    },
                    _tryGetMergeRange: function(rowIndex, cellIndex, mergedCells, dataProvider) {
                        if (!mergedCells[rowIndex] || !mergedCells[rowIndex][cellIndex]) {
                            const {
                                colspan: colspan,
                                rowspan: rowspan
                            } = dataProvider.getCellMerging(rowIndex, cellIndex);
                            if (colspan || rowspan) {
                                for (let i = rowIndex; i <= rowIndex + rowspan || 0; i++) {
                                    for (let j = cellIndex; j <= cellIndex + colspan || 0; j++) {
                                        if (!mergedCells[i]) {
                                            mergedCells[i] = []
                                        }
                                        mergedCells[i][j] = true
                                    }
                                }
                                return {
                                    rowSpan: rowspan,
                                    colSpan: colspan
                                }
                            }
                        }
                    },
                    _tryGetPdfColumnWidths(autoTableWidth, columnWidths) {
                        if ((0, _type.isNumeric)(autoTableWidth) && (0, _type.isDefined)(columnWidths)) {
                            const tableWidth = columnWidths.reduce(((a, b) => a + b), 0);
                            return columnWidths.map((columnWidth => autoTableWidth * columnWidth / tableWidth))
                        }
                    },
                    _setColumnWidths: function(autoTableColumnStyles, pdfColumnWidths) {
                        pdfColumnWidths.forEach(((width, index) => {
                            autoTableColumnStyles[index] = autoTableColumnStyles[index] || {};
                            autoTableColumnStyles[index].cellWidth = width
                        }))
                    }
                }
            },
        89222:
            /*!******************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/exporter/jspdf/autotable/export_data_grid.js ***!
              \******************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.exportDataGrid = function(options) {
                    return _export.Export.export(function(options) {
                        if (!((0, _type.isDefined)(options) && (0, _type.isObject)(options))) {
                            throw Error('The "exportDataGrid" method requires a configuration object.')
                        }
                        if (!((0, _type.isDefined)(options.component) && (0, _type.isObject)(options.component) && "dxDataGrid" === options.component.NAME)) {
                            throw Error('The "component" field must contain a DataGrid instance.')
                        }
                        if (!(0, _type.isDefined)(options.selectedRowsOnly)) {
                            options.selectedRowsOnly = false
                        }
                        return _export.Export.getFullOptions(options)
                    }(options))
                };
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528);
                var _export = __webpack_require__( /*! ./export */ 39368)
            },
        9916:
            /*!*********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/exporter/jspdf/common/draw_utils.js ***!
              \*********************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.addNewPage = function(doc) {
                    doc.addPage();
                    ! function(doc) {
                        if (!(0, _type.isDefined)(doc.getLineWidth)) {
                            doc.__borderWidth = null
                        }
                    }(doc)
                };
                exports.drawCellsContent = function(doc, customDrawCell, cellsArray, docStyles) {
                    cellsArray.forEach((cell => {
                        const {
                            _rect: _rect,
                            gridCell: gridCell
                        } = cell, pdfCell = function(r, e) {
                            if (null == r) {
                                return {}
                            }
                            var t = {};
                            for (var n in r) {
                                if ({}.hasOwnProperty.call(r, n)) {
                                    if (e.includes(n)) {
                                        continue
                                    }
                                    t[n] = r[n]
                                }
                            }
                            return t
                        }(cell, _excluded);
                        const {
                            x: x,
                            y: y,
                            w: w,
                            h: h
                        } = _rect;
                        const rect = {
                            x: x,
                            y: y,
                            w: w,
                            h: h
                        };
                        const eventArg = {
                            doc: doc,
                            rect: rect,
                            pdfCell: pdfCell,
                            gridCell: gridCell,
                            cancel: false
                        };
                        null === customDrawCell || void 0 === customDrawCell || customDrawCell(eventArg);
                        if (!eventArg.cancel) {
                            ! function(doc, cell) {
                                if ((0, _type.isDefined)(cell.backgroundColor)) {
                                    trySetColor(doc, "fill", cell.backgroundColor);
                                    drawRect(doc, cell._rect.x, cell._rect.y, cell._rect.w, cell._rect.h, "F")
                                }
                            }(doc, cell);
                            ! function(doc, cell, docStyles) {
                                if ((0, _type.isDefined)(cell.text) && "" !== cell.text) {
                                    const {
                                        textColor: textColor,
                                        font: font,
                                        _rect: _rect,
                                        padding: padding
                                    } = cell;
                                    ! function(doc, _ref2, docStyles) {
                                        let {
                                            textColor: textColor,
                                            font: font
                                        } = _ref2;
                                        trySetColor(doc, "text", (0, _type.isDefined)(textColor) ? textColor : docStyles.textColor);
                                        const currentFont = (0, _type.isDefined)(font) ? (0, _extend.extend)({}, docStyles.font, font) : docStyles.font;
                                        const docFont = doc.getFont();
                                        if (currentFont.name !== docFont.fontName || currentFont.style !== docFont.fontStyle || (0, _type.isDefined)(currentFont.weight)) {
                                            doc.setFont(currentFont.name, currentFont.style, currentFont.weight)
                                        }
                                        if (currentFont.size !== doc.getFontSize()) {
                                            doc.setFontSize(currentFont.size)
                                        }
                                    }(doc, {
                                        textColor: textColor,
                                        font: font
                                    }, docStyles);
                                    const textRect = {
                                        x: _rect.x + padding.left,
                                        y: _rect.y + padding.top,
                                        w: _rect.w - (padding.left + padding.right),
                                        h: _rect.h - (padding.top + padding.bottom)
                                    };
                                    if ((0, _type.isDefined)(cell._textLeftOffset) || (0, _type.isDefined)(cell._textTopOffset)) {
                                        textRect.x = textRect.x + (cell._textLeftOffset ?? 0);
                                        textRect.y = textRect.y + (cell._textTopOffset ?? 0);
                                        doc.saveGraphicsState();
                                        ! function(doc, x, y, w, h) {
                                            doc.moveTo(roundToThreeDecimals(x), roundToThreeDecimals(y));
                                            doc.lineTo(roundToThreeDecimals(x + w), roundToThreeDecimals(y));
                                            doc.lineTo(roundToThreeDecimals(x + w), roundToThreeDecimals(y + h));
                                            doc.lineTo(roundToThreeDecimals(x), roundToThreeDecimals(y + h));
                                            doc.clip();
                                            doc.discardPath()
                                        }(doc, cell._rect.x, cell._rect.y, cell._rect.w, cell._rect.h)
                                    }
                                    drawTextInRect(doc, cell.text, textRect, cell.verticalAlign, cell.horizontalAlign, cell._internalTextOptions);
                                    if ((0, _type.isDefined)(cell._textLeftOffset) || (0, _type.isDefined)(cell._textTopOffset)) {
                                        doc.restoreGraphicsState()
                                    }
                                }
                            }(doc, cell, docStyles)
                        }
                    }))
                };
                exports.drawCellsLines = function(doc, cellsArray, docStyles) {
                    cellsArray.filter((cell => !(0, _type.isDefined)(cell.borderColor))).forEach((cell => {
                        drawBorders(doc, cell._rect, cell, docStyles)
                    }));
                    cellsArray.filter((cell => (0, _type.isDefined)(cell.borderColor))).forEach((cell => {
                        drawBorders(doc, cell._rect, cell, docStyles)
                    }))
                };
                exports.drawGridLines = function(doc, rect, options, docStyles) {
                    drawBorders(doc, rect, options, docStyles)
                };
                exports.drawLine = drawLine;
                exports.drawRect = drawRect;
                exports.drawTextInRect = drawTextInRect;
                exports.getDocumentStyles = function(doc) {
                    const docFont = doc.getFont();
                    return {
                        borderWidth: getDocBorderWidth(doc),
                        borderColor: doc.getDrawColor(),
                        font: {
                            name: docFont.fontName,
                            style: docFont.fontStyle,
                            size: doc.getFontSize()
                        },
                        textColor: doc.getTextColor()
                    }
                };
                exports.roundToThreeDecimals = roundToThreeDecimals;
                exports.setDocumentStyles = function(doc, styles) {
                    const {
                        borderWidth: borderWidth,
                        borderColor: borderColor,
                        font: font,
                        textColor: textColor
                    } = styles;
                    const docFont = doc.getFont();
                    if (docFont.fontName !== font.name || docFont.fontStyle !== font.style) {
                        doc.setFont(font.name, font.style, void 0)
                    }
                    const docFontSize = doc.getFontSize();
                    if (docFontSize !== font.size) {
                        doc.setFontSize(font.size)
                    }
                    if (getDocBorderWidth(doc) !== borderWidth) {
                        setDocBorderWidth(doc, borderWidth)
                    }
                    if (doc.getDrawColor() !== borderColor) {
                        doc.setDrawColor(borderColor)
                    }
                    if (doc.getTextColor() !== textColor) {
                        doc.setTextColor(textColor)
                    }
                };
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528);
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576);
                var _pdf_utils = __webpack_require__( /*! ./pdf_utils */ 31162);
                const _excluded = ["_rect", "gridCell"];

                function capitalizeFirstLetter(string) {
                    return string.charAt(0).toUpperCase() + string.slice(1)
                }

                function roundToThreeDecimals(value) {
                    return Math.round(1e3 * value) / 1e3
                }

                function drawLine(doc, startX, startY, endX, endY) {
                    doc.line(roundToThreeDecimals(startX), roundToThreeDecimals(startY), roundToThreeDecimals(endX), roundToThreeDecimals(endY))
                }

                function drawRect(doc, x, y, width, height, style) {
                    if ((0, _type.isDefined)(style)) {
                        doc.rect(roundToThreeDecimals(x), roundToThreeDecimals(y), roundToThreeDecimals(width), roundToThreeDecimals(height), style)
                    } else {
                        doc.rect(roundToThreeDecimals(x), roundToThreeDecimals(y), roundToThreeDecimals(width), roundToThreeDecimals(height))
                    }
                }

                function drawTextInRect(doc, text, rect, verticalAlign, horizontalAlign, jsPDFTextOptions) {
                    const textArray = text.split("\n");
                    const linesCount = textArray.length;
                    const heightOfOneLine = (0, _pdf_utils.calculateTextHeight)(doc, textArray[0], doc.getFont(), {
                        wordWrapEnabled: false,
                        targetRectWidth: 1e9
                    });
                    const vAlign = verticalAlign ?? "middle";
                    const hAlign = horizontalAlign ?? "left";
                    const verticalAlignCoefficientsMap = {
                        top: 0,
                        middle: .5,
                        bottom: 1
                    };
                    const y = rect.y + rect.h * verticalAlignCoefficientsMap[vAlign] - heightOfOneLine * (linesCount - 1) * verticalAlignCoefficientsMap[vAlign] + function(doc) {
                        return (doc.getLineHeightFactor() - 1.15) * doc.getFontSize()
                    }(doc);
                    const x = rect.x + rect.w * {
                        left: 0,
                        center: .5,
                        right: 1
                    } [hAlign];
                    const textOptions = (0, _extend.extend)({
                        baseline: vAlign,
                        align: hAlign
                    }, jsPDFTextOptions);
                    doc.text(textArray.join("\n"), roundToThreeDecimals(x), roundToThreeDecimals(y), textOptions)
                }

                function drawBorders(doc, rect, _ref, docStyles) {
                    let {
                        borderWidth: borderWidth,
                        borderColor: borderColor,
                        drawLeftBorder: drawLeftBorder = true,
                        drawRightBorder: drawRightBorder = true,
                        drawTopBorder: drawTopBorder = true,
                        drawBottomBorder: drawBottomBorder = true
                    } = _ref;
                    if (!(0, _type.isDefined)(rect)) {
                        throw "rect is required"
                    }
                    if (!drawLeftBorder && !drawRightBorder && !drawTopBorder && !drawBottomBorder) {
                        return
                    } else if (drawLeftBorder && drawRightBorder && drawTopBorder && drawBottomBorder) {
                        setLinesStyles(doc, {
                            borderWidth: borderWidth,
                            borderColor: borderColor
                        }, docStyles);
                        drawRect(doc, rect.x, rect.y, rect.w, rect.h)
                    } else {
                        setLinesStyles(doc, {
                            borderWidth: borderWidth,
                            borderColor: borderColor
                        }, docStyles);
                        if (drawTopBorder) {
                            drawLine(doc, rect.x, rect.y, rect.x + rect.w, rect.y)
                        }
                        if (drawLeftBorder) {
                            drawLine(doc, rect.x, rect.y, rect.x, rect.y + rect.h)
                        }
                        if (drawRightBorder) {
                            drawLine(doc, rect.x + rect.w, rect.y, rect.x + rect.w, rect.y + rect.h)
                        }
                        if (drawBottomBorder) {
                            drawLine(doc, rect.x, rect.y + rect.h, rect.x + rect.w, rect.y + rect.h)
                        }
                    }
                }

                function setLinesStyles(doc, _ref3, docStyles) {
                    let {
                        borderWidth: borderWidth,
                        borderColor: borderColor
                    } = _ref3;
                    const currentBorderWidth = (0, _type.isDefined)(borderWidth) ? borderWidth : docStyles.borderWidth;
                    if (currentBorderWidth !== getDocBorderWidth(doc)) {
                        setDocBorderWidth(doc, (0, _pdf_utils.toPdfUnit)(doc, currentBorderWidth))
                    }
                    trySetColor(doc, "draw", (0, _type.isDefined)(borderColor) ? borderColor : docStyles.borderColor)
                }

                function trySetColor(doc, target, color) {
                    const getterName = `get${capitalizeFirstLetter(target)}Color`;
                    const setterName = `set${capitalizeFirstLetter(target)}Color`;
                    const {
                        ch1: ch1 = color,
                        ch2: ch2,
                        ch3: ch3,
                        ch4: ch4
                    } = color;
                    const normalizedColor = doc.__private__.decodeColorString(doc.__private__.encodeColorString({
                        ch1: ch1,
                        ch2: ch2,
                        ch3: ch3,
                        ch4: ch4,
                        precision: "text" === target ? 3 : 2
                    }));
                    if (normalizedColor !== doc[getterName]() || "fill" === target) {
                        doc[setterName].apply(doc, [ch1, ch2, ch3, ch4].filter((item => void 0 !== item)))
                    }
                }

                function getDocBorderWidth(doc) {
                    if ((0, _type.isDefined)(doc.getLineWidth)) {
                        return doc.getLineWidth()
                    }
                    return doc.__borderWidth ?? .200025
                }

                function setDocBorderWidth(doc, width) {
                    doc.setLineWidth(width);
                    if (!(0, _type.isDefined)(doc.getLineWidth)) {
                        doc.__borderWidth = width
                    }
                }
            },
        5650:
            /*!*****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/exporter/jspdf/common/export.js ***!
              \*****************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.Export = void 0;
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528);
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576);
                var _normalizeOptions = __webpack_require__( /*! ./normalizeOptions */ 33487);
                var _row_utils = __webpack_require__( /*! ./row_utils */ 20652);
                var _height_updater = __webpack_require__( /*! ./height_updater */ 99153);
                var _rows_generator = __webpack_require__( /*! ./rows_generator */ 44151);
                var _rows_splitting = __webpack_require__( /*! ./rows_splitting */ 26002);
                var _draw_utils = __webpack_require__( /*! ./draw_utils */ 9916);
                var _pdf_utils = __webpack_require__( /*! ./pdf_utils */ 31162);
                var _message = (e = __webpack_require__( /*! ../../../common/core/localization/message */ 4671), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                var _export_load_panel = __webpack_require__( /*! ../../common/export_load_panel */ 55972);
                var _window = __webpack_require__( /*! ../../../core/utils/window */ 3104);
                exports.Export = {
                    getFullOptions: function(options) {
                        const {
                            jsPDFDocument: jsPDFDocument
                        } = options;
                        const fullOptions = (0, _extend.extend)({}, options);
                        if (!(0, _type.isDefined)(fullOptions.topLeft)) {
                            fullOptions.topLeft = {
                                x: 0,
                                y: 0
                            }
                        }
                        if (!(0, _type.isDefined)(fullOptions.indent)) {
                            fullOptions.indent = 0
                        }
                        if (!(0, _type.isDefined)(fullOptions.repeatHeaders)) {
                            fullOptions.repeatHeaders = true
                        }
                        if (!(0, _type.isDefined)(fullOptions.margin)) {
                            fullOptions.margin = (0, _pdf_utils.toPdfUnit)(jsPDFDocument, 40)
                        }
                        fullOptions.margin = (0, _normalizeOptions.normalizeBoundaryValue)(fullOptions.margin);
                        if (!Array.isArray(fullOptions.columnWidths)) {
                            fullOptions.columnWidths = []
                        }
                        if (!(0, _type.isDefined)(fullOptions.loadPanel)) {
                            fullOptions.loadPanel = {}
                        }
                        if (!(0, _type.isDefined)(fullOptions.loadPanel.enabled)) {
                            fullOptions.loadPanel.enabled = true
                        }
                        if (!(0, _type.isDefined)(fullOptions.loadPanel.text)) {
                            fullOptions.loadPanel.text = _message.default.format("dxDataGrid-exporting")
                        }
                        return fullOptions
                    },
                    export: function(options) {
                        var _component$_getIntern;
                        const {
                            jsPDFDocument: jsPDFDocument,
                            component: component,
                            selectedRowsOnly: selectedRowsOnly,
                            loadPanel: loadPanel
                        } = options;
                        const internalComponent = (null === (_component$_getIntern = component._getInternalInstance) || void 0 === _component$_getIntern ? void 0 : _component$_getIntern.call(component)) || component;
                        const initialLoadPanelEnabledOption = internalComponent.option("loadPanel") && internalComponent.option("loadPanel").enabled;
                        if (initialLoadPanelEnabledOption) {
                            component.option("loadPanel.enabled", false)
                        }
                        let exportLoadPanel;
                        if (loadPanel.enabled && (0, _window.hasWindow)()) {
                            const rowsView = component.getView("rowsView");
                            exportLoadPanel = new _export_load_panel.ExportLoadPanel(component, rowsView.element(), rowsView.element().parent(), loadPanel);
                            exportLoadPanel.show()
                        }
                        const dataProvider = component.getDataProvider(selectedRowsOnly);
                        return new Promise((resolve => {
                            dataProvider.ready().done((() => {
                                var _options$rowOptions;
                                const rowsInfo = (0, _rows_generator.generateRowsInfo)(jsPDFDocument, dataProvider, component, null === (_options$rowOptions = options.rowOptions) || void 0 === _options$rowOptions || null === (_options$rowOptions = _options$rowOptions.headerStyles) || void 0 === _options$rowOptions ? void 0 : _options$rowOptions.backgroundColor);
                                if (options.customizeCell) {
                                    rowsInfo.forEach((rowInfo => rowInfo.cells.forEach((cellInfo => options.customizeCell(cellInfo)))))
                                }(0, _normalizeOptions.normalizeRowsInfo)(rowsInfo);
                                (0, _row_utils.initializeCellsWidth)(jsPDFDocument, dataProvider, rowsInfo, options);
                                (0, _row_utils.resizeFirstColumnByIndentLevel)(rowsInfo, options);
                                (0, _row_utils.applyColSpans)(rowsInfo);
                                (0, _row_utils.calculateHeights)(jsPDFDocument, rowsInfo, options);
                                (0, _row_utils.applyRowSpans)(rowsInfo);
                                (0, _height_updater.updateRowsAndCellsHeights)(jsPDFDocument, rowsInfo);
                                (0, _row_utils.calculateCoordinates)(jsPDFDocument, rowsInfo, options);
                                (0, _row_utils.applyBordersConfig)(rowsInfo);
                                (0, _pdf_utils.applyWordWrap)(jsPDFDocument, rowsInfo);
                                const docStyles = (0, _draw_utils.getDocumentStyles)(jsPDFDocument);
                                const rtlEnabled = !!component.option("rtlEnabled");
                                const rectsByPages = (0, _rows_splitting.splitByPages)(jsPDFDocument, rowsInfo, options, (_ref => {
                                    var _sourceRect$sourceCel;
                                    let {
                                        sourceRect: sourceRect,
                                        leftRect: leftRect,
                                        rightRect: rightRect
                                    } = _ref;
                                    let leftRectTextOptions = {};
                                    let rightRectTextOptions = {};
                                    const isTextNotEmpty = (null === (_sourceRect$sourceCel = sourceRect.sourceCellInfo.text) || void 0 === _sourceRect$sourceCel ? void 0 : _sourceRect$sourceCel.length) > 0;
                                    if (isTextNotEmpty) {
                                        if (rtlEnabled) {
                                            const isTextWidthGreaterThanRect = jsPDFDocument.getTextWidth(sourceRect.sourceCellInfo.text) > leftRect.w;
                                            const isTextRightAlignment = !(0, _type.isDefined)(sourceRect.sourceCellInfo.horizontalAlign) || "right" === sourceRect.sourceCellInfo.horizontalAlign;
                                            if (isTextWidthGreaterThanRect || !isTextRightAlignment) {
                                                var _sourceRect$sourceCel2, _sourceRect$sourceCel3, _sourceRect$sourceCel4;
                                                let rightRectTextOffset;
                                                let leftRectTextOffset;
                                                if ("right" === (null === (_sourceRect$sourceCel2 = sourceRect.sourceCellInfo) || void 0 === _sourceRect$sourceCel2 ? void 0 : _sourceRect$sourceCel2.horizontalAlign)) {
                                                    rightRectTextOffset = sourceRect.sourceCellInfo._textLeftOffset ?? 0;
                                                    leftRectTextOffset = rightRectTextOffset + leftRect.w
                                                } else if ("center" === (null === (_sourceRect$sourceCel3 = sourceRect.sourceCellInfo) || void 0 === _sourceRect$sourceCel3 ? void 0 : _sourceRect$sourceCel3.horizontalAlign)) {
                                                    leftRectTextOffset = sourceRect.x + sourceRect.w - (rightRect.x + rightRect.w) + sourceRect.sourceCellInfo._rect.w / 2 - leftRect.w / 2;
                                                    rightRectTextOffset = leftRectTextOffset - rightRect.w
                                                } else if ("left" === (null === (_sourceRect$sourceCel4 = sourceRect.sourceCellInfo) || void 0 === _sourceRect$sourceCel4 ? void 0 : _sourceRect$sourceCel4.horizontalAlign)) {
                                                    leftRectTextOffset = sourceRect.x + sourceRect.w - (rightRect.x + rightRect.w);
                                                    rightRectTextOffset = leftRectTextOffset - rightRect.w
                                                }
                                                leftRectTextOptions = Object.assign({}, {
                                                    _textLeftOffset: rightRectTextOffset
                                                });
                                                rightRectTextOptions = Object.assign({}, {
                                                    _textLeftOffset: leftRectTextOffset
                                                })
                                            } else {
                                                rightRectTextOptions = Object.assign({}, {
                                                    text: ""
                                                })
                                            }
                                        } else {
                                            const isTextWidthGreaterThanRect = jsPDFDocument.getTextWidth(sourceRect.sourceCellInfo.text) > leftRect.w;
                                            const isTextLeftAlignment = !(0, _type.isDefined)(sourceRect.sourceCellInfo.horizontalAlign) || "left" === sourceRect.sourceCellInfo.horizontalAlign;
                                            if (isTextWidthGreaterThanRect || !isTextLeftAlignment) {
                                                var _sourceRect$sourceCel5, _sourceRect$sourceCel6, _sourceRect$sourceCel7;
                                                let leftTextLeftOffset;
                                                let rightTextLeftOffset;
                                                if ("left" === (null === (_sourceRect$sourceCel5 = sourceRect.sourceCellInfo) || void 0 === _sourceRect$sourceCel5 ? void 0 : _sourceRect$sourceCel5.horizontalAlign)) {
                                                    leftTextLeftOffset = sourceRect.sourceCellInfo._textLeftOffset ?? 0;
                                                    rightTextLeftOffset = leftTextLeftOffset - leftRect.w
                                                } else if ("center" === (null === (_sourceRect$sourceCel6 = sourceRect.sourceCellInfo) || void 0 === _sourceRect$sourceCel6 ? void 0 : _sourceRect$sourceCel6.horizontalAlign)) {
                                                    const offset = sourceRect.sourceCellInfo._textLeftOffset ?? 0;
                                                    leftTextLeftOffset = offset + (sourceRect.x + sourceRect.w / 2) - (leftRect.x + leftRect.w / 2);
                                                    rightTextLeftOffset = offset + (sourceRect.x + sourceRect.w / 2) - (rightRect.x + rightRect.w / 2)
                                                } else if ("right" === (null === (_sourceRect$sourceCel7 = sourceRect.sourceCellInfo) || void 0 === _sourceRect$sourceCel7 ? void 0 : _sourceRect$sourceCel7.horizontalAlign)) {
                                                    leftTextLeftOffset = sourceRect.x + sourceRect.w - (leftRect.x + leftRect.w);
                                                    rightTextLeftOffset = sourceRect.x + sourceRect.w - (rightRect.x + rightRect.w)
                                                }
                                                leftRectTextOptions = Object.assign({}, {
                                                    _textLeftOffset: leftTextLeftOffset
                                                });
                                                rightRectTextOptions = Object.assign({}, {
                                                    _textLeftOffset: rightTextLeftOffset
                                                })
                                            } else {
                                                rightRectTextOptions = Object.assign({}, {
                                                    text: ""
                                                })
                                            }
                                        }
                                    }
                                    leftRect.sourceCellInfo = Object.assign({}, sourceRect.sourceCellInfo, {
                                        debugSourceCellInfo: sourceRect.sourceCellInfo
                                    }, leftRectTextOptions);
                                    rightRect.sourceCellInfo = Object.assign({}, sourceRect.sourceCellInfo, {
                                        debugSourceCellInfo: sourceRect.sourceCellInfo
                                    }, rightRectTextOptions)
                                }), (_ref2 => {
                                    var _sourceRect$sourceCel8;
                                    let {
                                        sourceRect: sourceRect,
                                        topRect: topRect,
                                        bottomRect: bottomRect
                                    } = _ref2;
                                    let topRectTextOptions = {};
                                    let bottomRectTextOptions = {};
                                    const isTextNotEmpty = (null === (_sourceRect$sourceCel8 = sourceRect.sourceCellInfo.text) || void 0 === _sourceRect$sourceCel8 ? void 0 : _sourceRect$sourceCel8.length) > 0;
                                    if (isTextNotEmpty) {
                                        var _sourceRect$sourceCel9;
                                        const isTextHeightGreaterThanRect = jsPDFDocument.getTextDimensions(sourceRect.sourceCellInfo.text).h > topRect.h;
                                        const isTextTopAlignment = "top" === (null === (_sourceRect$sourceCel9 = sourceRect.sourceCellInfo) || void 0 === _sourceRect$sourceCel9 ? void 0 : _sourceRect$sourceCel9.verticalAlign);
                                        if (isTextHeightGreaterThanRect || !isTextTopAlignment) {
                                            var _sourceRect$sourceCel10, _sourceRect$sourceCel11, _sourceRect$sourceCel12;
                                            let topTextTopOffset;
                                            let bottomTextTopOffset;
                                            if ("top" === (null === (_sourceRect$sourceCel10 = sourceRect.sourceCellInfo) || void 0 === _sourceRect$sourceCel10 ? void 0 : _sourceRect$sourceCel10.verticalAlign)) {
                                                topTextTopOffset = sourceRect.sourceCellInfo._textTopOffset ?? 0;
                                                bottomTextTopOffset = topTextTopOffset - topRect.h
                                            } else if ("middle" === (null === (_sourceRect$sourceCel11 = sourceRect.sourceCellInfo) || void 0 === _sourceRect$sourceCel11 ? void 0 : _sourceRect$sourceCel11.verticalAlign)) {
                                                const offset = sourceRect.sourceCellInfo._textTopOffset ?? 0;
                                                topTextTopOffset = offset + (sourceRect.y + sourceRect.h / 2) - (topRect.y + topRect.h / 2);
                                                bottomTextTopOffset = offset + (sourceRect.y + sourceRect.h / 2) - (bottomRect.y + bottomRect.h / 2)
                                            } else if ("bottom" === (null === (_sourceRect$sourceCel12 = sourceRect.sourceCellInfo) || void 0 === _sourceRect$sourceCel12 ? void 0 : _sourceRect$sourceCel12.verticalAlign)) {
                                                topTextTopOffset = sourceRect.y + sourceRect.h - (topRect.y + topRect.h);
                                                bottomTextTopOffset = sourceRect.y + sourceRect.h - (bottomRect.y + bottomRect.h)
                                            }
                                            topRectTextOptions = Object.assign({}, {
                                                _textTopOffset: topTextTopOffset
                                            });
                                            bottomRectTextOptions = Object.assign({}, {
                                                _textTopOffset: bottomTextTopOffset
                                            })
                                        } else {
                                            bottomRectTextOptions = Object.assign({}, {
                                                text: ""
                                            })
                                        }
                                    }
                                    topRect.sourceCellInfo = Object.assign({}, sourceRect.sourceCellInfo, {
                                        debugSourceCellInfo: sourceRect.sourceCellInfo
                                    }, topRectTextOptions);
                                    bottomRect.sourceCellInfo = Object.assign({}, sourceRect.sourceCellInfo, {
                                        debugSourceCellInfo: sourceRect.sourceCellInfo
                                    }, bottomRectTextOptions)
                                }));
                                if (rtlEnabled) {
                                    (0, _pdf_utils.applyRtl)(jsPDFDocument, rectsByPages, options)
                                }
                                rectsByPages.forEach(((pdfCellsInfo, index) => {
                                    if (index > 0) {
                                        (0, _draw_utils.addNewPage)(jsPDFDocument)
                                    }(0, _draw_utils.drawCellsContent)(jsPDFDocument, options.customDrawCell, pdfCellsInfo, docStyles);
                                    (0, _draw_utils.drawCellsLines)(jsPDFDocument, pdfCellsInfo, docStyles);
                                    const isEmptyPdfCellsInfoSpecified = (0, _type.isDefined)(pdfCellsInfo) && 0 === pdfCellsInfo.length;
                                    if (isEmptyPdfCellsInfoSpecified) {
                                        const tableRect = (0, _row_utils.calculateTableSize)(jsPDFDocument, pdfCellsInfo, options);
                                        const baseStyle = (0, _rows_generator.getBaseTableStyle)();
                                        (0, _draw_utils.drawGridLines)(jsPDFDocument, tableRect, baseStyle, docStyles)
                                    }
                                }));
                                (0, _draw_utils.setDocumentStyles)(jsPDFDocument, docStyles);
                                resolve()
                            })).always((() => {
                                if (initialLoadPanelEnabledOption) {
                                    component.option("loadPanel.enabled", initialLoadPanelEnabledOption)
                                }
                                if (loadPanel.enabled && (0, _window.hasWindow)()) {
                                    exportLoadPanel.dispose()
                                }
                            }))
                        }))
                    }
                }
            },
        99153:
            /*!*************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/exporter/jspdf/common/height_updater.js ***!
              \*************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.updateRowsAndCellsHeights = function(doc, rows) {
                    const rowsAdditionalHeights = function(doc, rows) {
                        const rowsAdditionalHeights = Array.from({
                            length: rows.length
                        }, (() => 0));
                        const sortedRows = function(rows) {
                            const getMaxRowSpan = row => {
                                const spansArray = row.cells.map((cell => cell.rowSpan ?? 0));
                                return Math.max(...spansArray)
                            };
                            const sortByMaxRowSpan = (row1, row2) => {
                                const row1RowSpan = getMaxRowSpan(row1);
                                const row2RowSpan = getMaxRowSpan(row2);
                                if (row1RowSpan > row2RowSpan) {
                                    return 1
                                }
                                if (row2RowSpan > row1RowSpan) {
                                    return -1
                                }
                                return 0
                            };
                            return [...rows].sort(sortByMaxRowSpan)
                        }(rows);
                        sortedRows.forEach((row => {
                            const cellsWithRowSpan = row.cells.filter((cell => (0, _type.isDefined)(cell.rowSpan)));
                            cellsWithRowSpan.forEach((cell => {
                                const targetRectWidth = (0, _pdf_utils.calculateTargetRectWidth)(cell.pdfCell._rect.w, cell.pdfCell.padding);
                                const textHeight = (0, _pdf_utils.calculateTextHeight)(doc, cell.pdfCell.text, cell.pdfCell.font, {
                                    wordWrapEnabled: cell.pdfCell.wordWrapEnabled,
                                    targetRectWidth: targetRectWidth
                                });
                                const cellHeight = textHeight + cell.pdfCell.padding.top + cell.pdfCell.padding.bottom;
                                const rowsCount = cell.rowSpan + 1;
                                const currentRowSpanRowsHeight = rows.slice(row.rowIndex, row.rowIndex + rowsCount).reduce(((accumulator, rowInfo) => accumulator + rowInfo.height + rowsAdditionalHeights[rowInfo.rowIndex]), 0);
                                if (cellHeight > currentRowSpanRowsHeight) {
                                    const delta = (cellHeight - currentRowSpanRowsHeight) / rowsCount;
                                    for (let spanIndex = row.rowIndex; spanIndex < row.rowIndex + rowsCount; spanIndex++) {
                                        rowsAdditionalHeights[spanIndex] += delta
                                    }
                                }
                            }))
                        }));
                        return rowsAdditionalHeights
                    }(doc, rows);
                    rows.forEach((row => {
                        row.height += rowsAdditionalHeights[row.rowIndex]
                    }));
                    rows.forEach((row => {
                        row.cells.forEach((cell => {
                            const rowsCount = (cell.rowSpan ?? 0) + 1;
                            cell.pdfCell._rect.h = rows.slice(row.rowIndex, row.rowIndex + rowsCount).reduce(((accumulator, rowInfo) => accumulator + rowInfo.height), 0)
                        }))
                    }))
                };
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528);
                var _pdf_utils = __webpack_require__( /*! ./pdf_utils */ 31162)
            },
        33487:
            /*!***************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/exporter/jspdf/common/normalizeOptions.js ***!
              \***************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.normalizeBoundaryValue = normalizeBoundaryValue;
                exports.normalizeRowsInfo = function(rowsInfo) {
                    rowsInfo.forEach((row => {
                        row.cells.forEach((_ref => {
                            let {
                                pdfCell: pdfCell
                            } = _ref;
                            pdfCell.padding = normalizeBoundaryValue(pdfCell.padding)
                        }))
                    }))
                };
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528);

                function normalizeBoundaryValue(value) {
                    if ((0, _type.isNumeric)(value)) {
                        return {
                            top: value,
                            right: value,
                            bottom: value,
                            left: value
                        }
                    }
                    return {
                        top: (null === value || void 0 === value ? void 0 : value.top) ?? 0,
                        right: (null === value || void 0 === value ? void 0 : value.right) ?? 0,
                        bottom: (null === value || void 0 === value ? void 0 : value.bottom) ?? 0,
                        left: (null === value || void 0 === value ? void 0 : value.left) ?? 0
                    }
                }
            },
        31162:
            /*!********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/exporter/jspdf/common/pdf_utils.js ***!
              \********************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.applyRtl = function(doc, rectsByPages, options) {
                    rectsByPages.forEach((pageRects => {
                        pageRects.forEach((pdfCell => {
                            const mirroredX = getPageWidth(doc) - (pdfCell._rect.x + pdfCell._rect.w);
                            const marginDiff = options.margin.left - options.margin.right;
                            pdfCell._rect.x = mirroredX + marginDiff
                        }))
                    }))
                };
                exports.applyWordWrap = function(doc, rowsInfo) {
                    rowsInfo.forEach((row => {
                        row.cells.forEach((_ref3 => {
                            let {
                                pdfCell: pdfCell
                            } = _ref3;
                            if ((0, _type.isDefined)(pdfCell.text)) {
                                const lines = getTextLines(doc, pdfCell.text, pdfCell.font, {
                                    wordWrapEnabled: pdfCell.wordWrapEnabled,
                                    targetRectWidth: calculateTargetRectWidth(pdfCell._rect.w, pdfCell.padding)
                                });
                                pdfCell.text = lines.join("\n")
                            }
                        }))
                    }))
                };
                exports.calculateRowHeight = function(doc, cells, columnWidths) {
                    if (cells.length !== columnWidths.length) {
                        throw "the cells count must be equal to the count of the columns"
                    }
                    let rowHeight = 0;
                    for (let cellIndex = 0; cellIndex < cells.length; cellIndex++) {
                        if ((0, _type.isDefined)(cells[cellIndex].rowSpan)) {
                            continue
                        }
                        const cellText = cells[cellIndex].pdfCell.text;
                        const cellPadding = cells[cellIndex].pdfCell.padding;
                        const font = cells[cellIndex].pdfCell.font;
                        const wordWrapEnabled = cells[cellIndex].pdfCell.wordWrapEnabled;
                        const columnWidth = columnWidths[cellIndex];
                        const targetRectWidth = calculateTargetRectWidth(columnWidth, cellPadding);
                        if ((0, _type.isDefined)(cellText)) {
                            const textHeight = "" !== cellText ? calculateTextHeight(doc, cellText, font, {
                                wordWrapEnabled: wordWrapEnabled,
                                targetRectWidth: targetRectWidth
                            }) : 0;
                            const cellHeight = textHeight + cellPadding.top + cellPadding.bottom;
                            if (rowHeight < cellHeight) {
                                rowHeight = cellHeight
                            }
                        }
                    }
                    return rowHeight
                };
                exports.calculateTargetRectWidth = calculateTargetRectWidth;
                exports.calculateTextHeight = calculateTextHeight;
                exports.getPageHeight = function(doc) {
                    return doc.internal.pageSize.getHeight()
                };
                exports.getPageWidth = getPageWidth;
                exports.getTextDimensions = getTextDimensions;
                exports.getTextLines = getTextLines;
                exports.toPdfUnit = function(doc, value) {
                    const coefficient = 1 / doc.internal.scaleFactor;
                    return value * coefficient
                };
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528);
                const DOTS_TEXT = "...";

                function getPageWidth(doc) {
                    return doc.internal.pageSize.getWidth()
                }

                function getTextLines(doc, text, font, _ref) {
                    let {
                        wordWrapEnabled: wordWrapEnabled,
                        targetRectWidth: targetRectWidth
                    } = _ref;
                    if (wordWrapEnabled) {
                        const usedFont = doc.getFont(null === font || void 0 === font ? void 0 : font.name, null === font || void 0 === font ? void 0 : font.style);
                        return doc.splitTextToSize(text, targetRectWidth, {
                            fontSize: (null === font || void 0 === font ? void 0 : font.size) || doc.getFontSize(),
                            fontName: usedFont.fontName,
                            fontStyle: usedFont.fontStyle
                        })
                    }
                    let textWithoutLineBreak = text.split("\n").filter((ch => "" !== ch)).join(" ");
                    if (getTextDimensions(doc, textWithoutLineBreak, font).w <= targetRectWidth) {
                        return [textWithoutLineBreak]
                    }
                    let textWidth = getTextDimensions(doc, textWithoutLineBreak + DOTS_TEXT, font).w;
                    while (textWithoutLineBreak.length > 0 && textWidth > targetRectWidth) {
                        let symbolsCountToRemove = 0;
                        if (textWidth >= 2 * targetRectWidth) {
                            symbolsCountToRemove = textWithoutLineBreak.length / 2
                        }
                        if (symbolsCountToRemove < 1) {
                            symbolsCountToRemove = 1
                        }
                        textWithoutLineBreak = textWithoutLineBreak.substring(0, textWithoutLineBreak.length - symbolsCountToRemove);
                        textWidth = getTextDimensions(doc, textWithoutLineBreak + DOTS_TEXT, font).w
                    }
                    return [textWithoutLineBreak + DOTS_TEXT]
                }

                function calculateTargetRectWidth(columnWidth, padding) {
                    const width = columnWidth - (padding.left + padding.right);
                    return width >= 0 ? width : 0
                }

                function getTextDimensions(doc, text, font) {
                    return doc.getTextDimensions(text, {
                        font: doc.getFont(null === font || void 0 === font ? void 0 : font.name, null === font || void 0 === font ? void 0 : font.style),
                        fontSize: (null === font || void 0 === font ? void 0 : font.size) || doc.getFontSize()
                    })
                }

                function calculateTextHeight(doc, text, font, _ref2) {
                    let {
                        wordWrapEnabled: wordWrapEnabled,
                        targetRectWidth: targetRectWidth
                    } = _ref2;
                    const heightOfOneLine = getTextDimensions(doc, text, font).h;
                    const linesCount = getTextLines(doc, text, font, {
                        wordWrapEnabled: wordWrapEnabled,
                        targetRectWidth: targetRectWidth
                    }).length;
                    return heightOfOneLine * linesCount * doc.getLineHeightFactor()
                }
            },
        20652:
            /*!********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/exporter/jspdf/common/row_utils.js ***!
              \********************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.applyBordersConfig = function(rows) {
                    for (let rowIndex = 0; rowIndex < rows.length; rowIndex++) {
                        const cells = rows[rowIndex].cells;
                        for (let columnIndex = 0; columnIndex < cells.length; columnIndex++) {
                            const pdfCell = cells[columnIndex].pdfCell;
                            const leftPdfCell = columnIndex >= 1 ? cells[columnIndex - 1].pdfCell : null;
                            const topPdfCell = rowIndex >= 1 ? rows[rowIndex - 1].cells[columnIndex].pdfCell : null;
                            if (false === pdfCell.drawLeftBorder && !(0, _type.isDefined)(cells[columnIndex].colSpan)) {
                                if ((0, _type.isDefined)(leftPdfCell)) {
                                    leftPdfCell.drawRightBorder = false
                                }
                            } else if (!(0, _type.isDefined)(pdfCell.drawLeftBorder)) {
                                if ((0, _type.isDefined)(leftPdfCell) && false === leftPdfCell.drawRightBorder) {
                                    pdfCell.drawLeftBorder = false
                                }
                            }
                            if (false === pdfCell.drawTopBorder) {
                                if ((0, _type.isDefined)(topPdfCell)) {
                                    topPdfCell.drawBottomBorder = false
                                }
                            } else if (!(0, _type.isDefined)(pdfCell.drawTopBorder)) {
                                if ((0, _type.isDefined)(topPdfCell) && false === topPdfCell.drawBottomBorder) {
                                    pdfCell.drawTopBorder = false
                                }
                            }
                        }
                    }
                };
                exports.applyColSpans = function(rows) {
                    for (let rowIndex = 0; rowIndex < rows.length; rowIndex++) {
                        const row = rows[rowIndex];
                        for (let cellIndex = 0; cellIndex < row.cells.length; cellIndex++) {
                            const cell = row.cells[cellIndex];
                            if ((0, _type.isDefined)(cell.colSpan) && !(0, _type.isDefined)(cell.pdfCell.isMerged)) {
                                for (let spanIndex = 1; spanIndex <= cell.colSpan; spanIndex++) {
                                    const mergedCell = rows[rowIndex].cells[cellIndex + spanIndex];
                                    cell.pdfCell._rect.w += mergedCell.pdfCell._rect.w;
                                    mergedCell.pdfCell._rect.w = 0;
                                    mergedCell.pdfCell.isMerged = true
                                }
                            }
                        }
                    }
                };
                exports.applyRowSpans = function(rows) {
                    for (let rowIndex = 0; rowIndex < rows.length; rowIndex++) {
                        const row = rows[rowIndex];
                        for (let cellIndex = 0; cellIndex < row.cells.length; cellIndex++) {
                            const cell = row.cells[cellIndex];
                            if ((0, _type.isDefined)(cell.rowSpan) && !(0, _type.isDefined)(cell.pdfCell.isMerged)) {
                                for (let spanIndex = 1; spanIndex <= cell.rowSpan; spanIndex++) {
                                    const mergedCell = rows[rowIndex + spanIndex].cells[cellIndex];
                                    cell.pdfCell._rect.h += mergedCell.pdfCell._rect.h;
                                    mergedCell.pdfCell._rect.h = 0;
                                    mergedCell.pdfCell.isMerged = true
                                }
                            }
                        }
                    }
                };
                exports.calculateCoordinates = function(doc, rows, options) {
                    const topLeft = null === options || void 0 === options ? void 0 : options.topLeft;
                    const margin = null === options || void 0 === options ? void 0 : options.margin;
                    let y = ((null === topLeft || void 0 === topLeft ? void 0 : topLeft.y) ?? 0) + margin.top;
                    rows.forEach((row => {
                        let x = ((null === topLeft || void 0 === topLeft ? void 0 : topLeft.x) ?? 0) + margin.left;
                        const intend = row.indentLevel * options.indent;
                        row.cells.forEach((cell => {
                            cell.pdfCell._rect.x = x + intend;
                            cell.pdfCell._rect.y = y;
                            x += cell.pdfCell._rect.w
                        }));
                        y += row.height
                    }))
                };
                exports.calculateHeights = function(doc, rows, options) {
                    rows.forEach((row => {
                        const pdfCells = row.cells.map((c => c.pdfCell));
                        let customerHeight;
                        if (options.onRowExporting) {
                            const args = {
                                rowCells: pdfCells
                            };
                            options.onRowExporting(args);
                            if ((0, _type.isDefined)(args.rowHeight)) {
                                customerHeight = args.rowHeight
                            }
                        }
                        row.height = (0, _type.isDefined)(customerHeight) ? customerHeight : (0, _pdf_utils.calculateRowHeight)(doc, row.cells, pdfCells.map((c => c._rect.w)));
                        pdfCells.forEach((cell => {
                            cell._rect.h = row.height
                        }))
                    }))
                };
                exports.calculateTableSize = function(doc, cells, options) {
                    var _options$topLeft, _options$topLeft2;
                    let leftPos;
                    let topPos;
                    let rightPos;
                    let bottomPos;
                    cells.forEach((cell => {
                        if (!(0, _type.isDefined)(leftPos) || leftPos > cell._rect.x) {
                            leftPos = cell._rect.x
                        }
                        if (!(0, _type.isDefined)(topPos) || topPos > cell._rect.y) {
                            topPos = cell._rect.y
                        }
                        if (!(0, _type.isDefined)(rightPos) || rightPos < cell._rect.x + cell._rect.w) {
                            rightPos = cell._rect.x + cell._rect.w
                        }
                        if (!(0, _type.isDefined)(bottomPos) || bottomPos < cell._rect.y + cell._rect.h) {
                            bottomPos = cell._rect.y + cell._rect.h
                        }
                    }));
                    const x = leftPos ?? (null === options || void 0 === options || null === (_options$topLeft = options.topLeft) || void 0 === _options$topLeft ? void 0 : _options$topLeft.x) ?? 0;
                    const y = topPos ?? (null === options || void 0 === options || null === (_options$topLeft2 = options.topLeft) || void 0 === _options$topLeft2 ? void 0 : _options$topLeft2.y) ?? 0;
                    const w = (0, _type.isDefined)(rightPos) ? rightPos - x : 0;
                    const h = (0, _type.isDefined)(bottomPos) ? bottomPos - y : 0;
                    return {
                        x: x,
                        y: y,
                        w: w,
                        h: h
                    }
                };
                exports.initializeCellsWidth = function(doc, dataProvider, rows, options) {
                    const columnWidths = function(doc, dataProvider, topLeftX, margin, customerColumnWidths) {
                        const DEFAULT_WIDTH = 150;
                        const resultWidths = dataProvider.getColumnsWidths().map((width => (0, _pdf_utils.toPdfUnit)(doc, width ?? DEFAULT_WIDTH)));
                        const totalAutoColumnsWidth = resultWidths.filter(((width, index) => !(0, _type.isDefined)(customerColumnWidths[index]))).reduce(getSum, 0);
                        const totalCustomerColumnsWidth = customerColumnWidths.filter((width => (0, _type.isNumeric)(width))).reduce(getSum, 0);
                        const availablePageWidth = function(doc, topLeftX, margin) {
                            return (0, _pdf_utils.getPageWidth)(doc) - topLeftX - margin.left - margin.right
                        }(doc, topLeftX, margin);
                        const ratio = totalCustomerColumnsWidth < availablePageWidth ? (availablePageWidth - totalCustomerColumnsWidth) / totalAutoColumnsWidth : 1;
                        return resultWidths.map(((width, index) => customerColumnWidths[index] ?? width * ratio))
                    }(doc, dataProvider, options.topLeft.x, options.margin, options.columnWidths);
                    rows.forEach((row => {
                        row.cells.forEach(((_ref, index) => {
                            let {
                                gridCell: gridCell,
                                pdfCell: pdfCell
                            } = _ref;
                            pdfCell._rect.w = columnWidths[index]
                        }))
                    }))
                };
                exports.resizeFirstColumnByIndentLevel = function(rows, options) {
                    rows.forEach((row => {
                        row.cells[0].pdfCell._rect.w -= row.indentLevel * options.indent
                    }))
                };
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528);
                var _pdf_utils = __webpack_require__( /*! ./pdf_utils */ 31162);
                const getSum = (a, b) => a + b
            },
        44151:
            /*!*************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/exporter/jspdf/common/rows_generator.js ***!
              \*************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.generateRowsInfo = function(doc, dataProvider, dataGrid, headerBackgroundColor) {
                    const result = [];
                    const rowsCount = dataProvider.getRowsCount();
                    const wordWrapEnabled = !!dataGrid.option("wordWrapEnabled");
                    const rtlEnabled = !!dataGrid.option("rtlEnabled");
                    const columns = dataProvider.getColumns();
                    const styles = dataProvider.getStyles();
                    for (let rowIndex = 0; rowIndex < rowsCount; rowIndex++) {
                        const rowType = dataProvider.getCellData(rowIndex, 0, true).cellSourceData.rowType;
                        let indentLevel = "header" !== rowType ? dataProvider.getGroupLevel(rowIndex) : 0;
                        const previousRow = result[rowIndex - 1];
                        if ("groupFooter" === rowType && "groupFooter" === (null === previousRow || void 0 === previousRow ? void 0 : previousRow.rowType)) {
                            indentLevel = previousRow.indentLevel - 1
                        }
                        result.push({
                            rowType: rowType,
                            indentLevel: indentLevel,
                            cells: generateRowCells({
                                doc: doc,
                                dataProvider: dataProvider,
                                rowIndex: rowIndex,
                                wordWrapEnabled: wordWrapEnabled,
                                columns: columns,
                                styles: styles,
                                rowType: rowType,
                                backgroundColor: "header" === rowType ? headerBackgroundColor : void 0,
                                rtlEnabled: rtlEnabled
                            }),
                            rowIndex: rowIndex
                        })
                    }
                    return result
                };
                exports.getBaseTableStyle = function() {
                    return defaultStyles.base
                };
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528);
                var _date = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/localization/date */ 38662));
                var _number = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/localization/number */ 52771));
                var _pdf_utils = __webpack_require__( /*! ./pdf_utils */ 31162);

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const defaultStyles = {
                    base: {
                        font: {
                            size: 10
                        },
                        borderWidth: .5,
                        borderColor: "#979797"
                    },
                    header: {
                        textColor: "#979797"
                    },
                    group: {},
                    data: {},
                    groupFooter: {},
                    totalFooter: {}
                };

                function generateRowCells(_ref) {
                    let {
                        doc: doc,
                        dataProvider: dataProvider,
                        rowIndex: rowIndex,
                        wordWrapEnabled: wordWrapEnabled,
                        columns: columns,
                        styles: styles,
                        rowType: rowType,
                        backgroundColor: backgroundColor,
                        rtlEnabled: rtlEnabled
                    } = _ref;
                    const result = [];
                    for (let cellIndex = 0; cellIndex < columns.length; cellIndex++) {
                        const cellData = dataProvider.getCellData(rowIndex, cellIndex, true);
                        const cellStyle = styles[dataProvider.getStyleId(rowIndex, cellIndex)];
                        const style = getPdfCellStyle(columns[cellIndex], rowType, cellStyle);
                        const defaultAlignment = rtlEnabled ? "right" : "left";
                        const paddingValue = (0, _pdf_utils.toPdfUnit)(doc, 5);
                        const pdfCell = {
                            text: getFormattedValue(cellData.value, cellStyle.format),
                            verticalAlign: "middle",
                            horizontalAlign: style.alignment ?? defaultAlignment,
                            wordWrapEnabled: wordWrapEnabled,
                            backgroundColor: backgroundColor,
                            padding: {
                                top: paddingValue,
                                right: paddingValue,
                                bottom: paddingValue,
                                left: paddingValue
                            },
                            _rect: {},
                            _internalTextOptions: {}
                        };
                        if (rtlEnabled) {
                            pdfCell._internalTextOptions.isInputVisual = false;
                            pdfCell._internalTextOptions.isOutputVisual = true;
                            pdfCell._internalTextOptions.isInputRtl = true;
                            pdfCell._internalTextOptions.isOutputRtl = false
                        }
                        const cellInfo = {
                            gridCell: cellData.cellSourceData,
                            pdfCell: Object.assign({}, pdfCell, style)
                        };
                        if ("header" === rowType) {
                            const cellMerging = dataProvider.getCellMerging(rowIndex, cellIndex);
                            if (cellMerging && cellMerging.rowspan > 0) {
                                cellInfo.rowSpan = cellMerging.rowspan
                            }
                            if (cellMerging && cellMerging.colspan > 0) {
                                cellInfo.colSpan = cellMerging.colspan
                            }
                        } else if ("group" === rowType) {
                            const drawLeftBorderField = rtlEnabled ? "drawRightBorder" : "drawLeftBorder";
                            const drawRightBorderField = rtlEnabled ? "drawLeftBorder" : "drawRightBorder";
                            cellInfo.pdfCell[drawLeftBorderField] = 0 === cellIndex;
                            cellInfo.pdfCell[drawRightBorderField] = cellIndex === columns.length - 1;
                            if (cellIndex > 0) {
                                const isEmptyCellsExceptFirst = result.slice(1).reduce(((accumulate, cellInfo) => accumulate && !(0, _type.isDefined)(cellInfo.pdfCell.text)), true);
                                if (!(0, _type.isDefined)(cellInfo.pdfCell.text) && isEmptyCellsExceptFirst) {
                                    result[0].pdfCell[drawRightBorderField] = true;
                                    for (let i = 0; i < result.length; i++) {
                                        result[i].colSpan = result.length
                                    }
                                    cellInfo.colSpan = result.length
                                }
                            }
                        }
                        result.push(cellInfo)
                    }
                    return result
                }

                function getPdfCellStyle(column, rowType, cellStyle) {
                    const styles = Object.assign({}, defaultStyles.base, defaultStyles[rowType]);
                    const alignment = "header" === rowType ? column.alignment : cellStyle.alignment;
                    if (alignment) {
                        styles.alignment = alignment
                    }
                    if (cellStyle.bold && "header" !== rowType) {
                        styles.font = Object.assign({}, styles.font, {
                            style: "bold"
                        })
                    }
                    return styles
                }

                function getFormattedValue(value, format) {
                    if ((0, _type.isDefined)(format)) {
                        if ((0, _type.isDate)(value)) {
                            return _date.default.format(value, format)
                        }
                        if ((0, _type.isNumeric)(value)) {
                            return _number.default.format(value, format)
                        }
                    }
                    return null === value || void 0 === value ? void 0 : value.toString()
                }
            },
        13252:
            /*!************************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/exporter/jspdf/common/rows_spliting_utils/create_on_split_multipage_row.js ***!
              \************************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.createOnSplitMultiPageRow = void 0;
                var _pdf_utils = __webpack_require__( /*! ../pdf_utils */ 31162);

                function _extends() {
                    return _extends = Object.assign ? Object.assign.bind() : function(n) {
                        for (var e = 1; e < arguments.length; e++) {
                            var t = arguments[e];
                            for (var r in t) {
                                ({}).hasOwnProperty.call(t, r) && (n[r] = t[r])
                            }
                        }
                        return n
                    }, _extends.apply(null, arguments)
                }

                function createMultiCellRect(rect, text, marginTop) {
                    return _extends({}, rect, {
                        sourceCellInfo: _extends({}, rect.sourceCellInfo, {
                            text: text
                        }),
                        y: marginTop
                    })
                }
                exports.createOnSplitMultiPageRow = (doc, options, headerHeight, maxBottomRight) => (isFirstPage, pageRects) => {
                    const currentPageRects = [];
                    const nextPageRects = [];
                    let maxCurrentPageHeight = 0;
                    let maxNextPageHeight = 0;
                    pageRects.forEach((rect => {
                        const {
                            w: w,
                            sourceCellInfo: sourceCellInfo
                        } = rect;
                        const additionalHeight = !isFirstPage && options.repeatHeaders ? headerHeight : headerHeight + options.topLeft.y;
                        const heightOfOneLine = (0, _pdf_utils.getTextDimensions)(doc, sourceCellInfo.text, sourceCellInfo.font).h;
                        const paddingHeight = sourceCellInfo.padding.top + sourceCellInfo.padding.bottom;
                        const fullPageHeight = maxBottomRight.y - additionalHeight - paddingHeight - options.margin.top;
                        const possibleLinesCount = Math.floor(fullPageHeight / (heightOfOneLine * doc.getLineHeightFactor()));
                        const allLines = (0, _pdf_utils.getTextLines)(doc, sourceCellInfo.text, sourceCellInfo.font, {
                            wordWrapEnabled: sourceCellInfo.wordWrapEnabled,
                            targetRectWidth: w
                        });
                        if (possibleLinesCount < allLines.length) {
                            const currentPageText = allLines.slice(0, possibleLinesCount).join("\n");
                            const currentPageHeight = (0, _pdf_utils.calculateTextHeight)(doc, currentPageText, sourceCellInfo.font, {
                                wordWrapEnabled: sourceCellInfo.wordWrapEnabled,
                                targetRectWidth: w
                            });
                            maxCurrentPageHeight = Math.max(maxCurrentPageHeight, currentPageHeight + paddingHeight);
                            maxNextPageHeight = rect.h - currentPageHeight;
                            currentPageRects.push(createMultiCellRect(rect, currentPageText, options.margin.top));
                            nextPageRects.push(createMultiCellRect(rect, allLines.slice(possibleLinesCount).join("\n"), options.margin.top))
                        } else {
                            const currentPageHeight = (0, _pdf_utils.calculateTextHeight)(doc, sourceCellInfo.text, sourceCellInfo.font, {
                                wordWrapEnabled: sourceCellInfo.wordWrapEnabled,
                                targetRectWidth: w
                            });
                            maxCurrentPageHeight = Math.max(maxCurrentPageHeight, currentPageHeight + paddingHeight);
                            maxNextPageHeight = Math.max(maxNextPageHeight, currentPageHeight + paddingHeight);
                            currentPageRects.push(createMultiCellRect(rect, sourceCellInfo.text, options.margin.top));
                            nextPageRects.push(createMultiCellRect(rect, "", options.margin.top))
                        }
                    }));
                    currentPageRects.forEach((rect => rect.h = maxCurrentPageHeight));
                    nextPageRects.forEach((rect => rect.h = maxNextPageHeight));
                    return [currentPageRects, nextPageRects]
                }
            },
        83860:
            /*!******************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/exporter/jspdf/common/rows_spliting_utils/get_multipage_row_pages.js ***!
              \******************************************************************************************************************/
            function(__unused_webpack_module, exports) {
                exports.getMultiPageRowPages = exports.checkPageContainsOnlyHeader = void 0;

                function _extends() {
                    return _extends = Object.assign ? Object.assign.bind() : function(n) {
                        for (var e = 1; e < arguments.length; e++) {
                            var t = arguments[e];
                            for (var r in t) {
                                ({}).hasOwnProperty.call(t, r) && (n[r] = t[r])
                            }
                        }
                        return n
                    }, _extends.apply(null, arguments)
                }
                const isHeader = rect => "header" === (null === rect || void 0 === rect ? void 0 : rect.sourceCellInfo.gridCell.rowType);
                exports.checkPageContainsOnlyHeader = (pageRects, isFirstPage) => isFirstPage && isHeader(pageRects[pageRects.length - 1]);
                exports.getMultiPageRowPages = (currentPageRects, rectsToSplit, isCurrentPageContainsOnlyHeader, splitMultiPageRowFunc, checkIsFitToPageFunc) => {
                    if (!splitMultiPageRowFunc) {
                        return []
                    }
                    const currentPageLastRect = currentPageRects[currentPageRects.length - 1];
                    const nextPageFirstRect = rectsToSplit[currentPageRects.length];
                    if (!nextPageFirstRect || isHeader(nextPageFirstRect)) {
                        return []
                    }
                    const isRectsFitsToPage = checkIsFitToPageFunc(isCurrentPageContainsOnlyHeader, nextPageFirstRect.h);
                    if (isRectsFitsToPage && !isCurrentPageContainsOnlyHeader) {
                        return []
                    }
                    const rectsToPatch = rectsToSplit.filter((_ref => {
                        let {
                            y: y
                        } = _ref;
                        return y === nextPageFirstRect.y
                    }));
                    const firstRectYAdjustment = currentPageLastRect.y + currentPageLastRect.h;
                    const [multiPageRowPages, remainPageRects] = ((rectsToPatch, isCurrentPageContainsOnlyHeader, firstRectYAdjustment, splitMultiPageRowFunc, checkIsFitToPageFunc) => {
                        let [newPageRects, remainPageRects] = splitMultiPageRowFunc(isCurrentPageContainsOnlyHeader, rectsToPatch);
                        const newPageRectsArray = [isCurrentPageContainsOnlyHeader ? newPageRects.map((rect => _extends({}, rect, {
                            y: firstRectYAdjustment
                        }))) : newPageRects];
                        while (!checkIsFitToPageFunc(false, remainPageRects[0].h)) {
                            [newPageRects, remainPageRects] = splitMultiPageRowFunc(false, remainPageRects);
                            newPageRectsArray.push(newPageRects)
                        }
                        return [newPageRectsArray, remainPageRects]
                    })(rectsToPatch, isCurrentPageContainsOnlyHeader, firstRectYAdjustment, splitMultiPageRowFunc, checkIsFitToPageFunc);
                    ((rectsToSplit, rectsToPatch, remainPageRects) => {
                        rectsToPatch.forEach(((rect, rectIndex) => {
                            rect.sourceCellInfo.text = remainPageRects[rectIndex].sourceCellInfo.text;
                            rect.h = remainPageRects[rectIndex].h
                        }));
                        const untouchedRowIdx = rectsToSplit.indexOf(rectsToPatch[rectsToPatch.length - 1]) + 1;
                        if (untouchedRowIdx >= rectsToSplit.length) {
                            return
                        }
                        const delta = rectsToSplit[untouchedRowIdx].y - (rectsToPatch[0].y + remainPageRects[0].h);
                        for (let idx = untouchedRowIdx; idx < rectsToSplit.length; idx++) {
                            rectsToSplit[idx].y = rectsToSplit[idx].y - delta
                        }
                    })(rectsToSplit, rectsToPatch, remainPageRects);
                    return multiPageRowPages
                }
            },
        26002:
            /*!*************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/exporter/jspdf/common/rows_splitting.js ***!
              \*************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.splitByPages = function(doc, rowsInfo, options, onSeparateRectHorizontally, onSeparateRectVertically) {
                    if (0 === rowsInfo.length) {
                        return [
                            []
                        ]
                    }
                    const maxBottomRight = {
                        x: (0, _pdf_utils.getPageWidth)(doc) - options.margin.right,
                        y: (0, _pdf_utils.getPageHeight)(doc) - options.margin.bottom
                    };
                    const headerRows = rowsInfo.filter((r => "header" === r.rowType));
                    const headerHeight = headerRows.reduce(((accumulator, row) => accumulator + row.height), 0);
                    const verticallyPages = splitRectsByPages(convertToCellsArray(rowsInfo), options.margin.top, "y", "h", ((isFirstPage, currentCoordinate) => {
                        const additionalHeight = !isFirstPage && options.repeatHeaders ? headerHeight : 0;
                        return (0, _draw_utils.roundToThreeDecimals)(currentCoordinate + additionalHeight) <= (0, _draw_utils.roundToThreeDecimals)(maxBottomRight.y)
                    }), ((rect, currentPageMaxRectCoordinate, currentPageRects, rectsToSplit) => {
                        const args = {
                            sourceRect: rect,
                            topRect: {
                                x: rect.x,
                                y: rect.y,
                                w: rect.w,
                                h: currentPageMaxRectCoordinate - rect.y
                            },
                            bottomRect: {
                                x: rect.x,
                                y: currentPageMaxRectCoordinate,
                                w: rect.w,
                                h: rect.h - (currentPageMaxRectCoordinate - rect.y)
                            }
                        };
                        onSeparateRectVertically(args);
                        currentPageRects.push(args.topRect);
                        rectsToSplit.push(args.bottomRect)
                    }), (0, _create_on_split_multipage_row.createOnSplitMultiPageRow)(doc, options, headerHeight, maxBottomRight));
                    if (options.repeatHeaders) {
                        for (let i = 1; i < verticallyPages.length; i++) {
                            verticallyPages[i].forEach((rect => rect.y += headerHeight));
                            const headerCells = convertToCellsArray(headerRows);
                            headerCells.forEach((cell => {
                                cell.y -= options.topLeft.y
                            }));
                            verticallyPages[i] = [...headerCells, ...verticallyPages[i]]
                        }
                    }
                    let pageIndex = 0;
                    while (pageIndex < verticallyPages.length) {
                        const horizontallyPages = splitRectsByPages(verticallyPages[pageIndex], options.margin.left, "x", "w", ((pagesLength, currentCoordinate) => (0, _draw_utils.roundToThreeDecimals)(currentCoordinate) <= (0, _draw_utils.roundToThreeDecimals)(maxBottomRight.x)), ((rect, currentPageMaxRectCoordinate, currentPageRects, rectsToSplit) => {
                            const args = {
                                sourceRect: rect,
                                leftRect: {
                                    x: rect.x,
                                    y: rect.y,
                                    w: currentPageMaxRectCoordinate - rect.x,
                                    h: rect.h
                                },
                                rightRect: {
                                    x: currentPageMaxRectCoordinate,
                                    y: rect.y,
                                    w: rect.w - (currentPageMaxRectCoordinate - rect.x),
                                    h: rect.h
                                }
                            };
                            onSeparateRectHorizontally(args);
                            currentPageRects.push(args.leftRect);
                            rectsToSplit.push(args.rightRect)
                        }));
                        if (horizontallyPages.length > 1) {
                            verticallyPages.splice(pageIndex, 1, ...horizontallyPages);
                            pageIndex += horizontallyPages.length
                        } else {
                            pageIndex += 1
                        }
                    }
                    return verticallyPages.map((rects => rects.map((rect => Object.assign({}, rect.sourceCellInfo, {
                        _rect: rect
                    })))))
                };
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528);
                var _pdf_utils = __webpack_require__( /*! ./pdf_utils */ 31162);
                var _draw_utils = __webpack_require__( /*! ./draw_utils */ 9916);
                var _get_multipage_row_pages = __webpack_require__( /*! ./rows_spliting_utils/get_multipage_row_pages */ 83860);
                var _create_on_split_multipage_row = __webpack_require__( /*! ./rows_spliting_utils/create_on_split_multipage_row */ 13252);

                function _extends() {
                    return _extends = Object.assign ? Object.assign.bind() : function(n) {
                        for (var e = 1; e < arguments.length; e++) {
                            var t = arguments[e];
                            for (var r in t) {
                                ({}).hasOwnProperty.call(t, r) && (n[r] = t[r])
                            }
                        }
                        return n
                    }, _extends.apply(null, arguments)
                }
                const COORDINATE_EPSILON = .001;

                function convertToCellsArray(rows) {
                    return [].concat.apply([], rows.map((rowInfo => rowInfo.cells.filter((cell => !(0, _type.isDefined)(cell.pdfCell.isMerged))).map((cellInfo => Object.assign({}, cellInfo.pdfCell._rect, {
                        sourceCellInfo: _extends({}, cellInfo.pdfCell, {
                            gridCell: cellInfo.gridCell
                        })
                    }))))))
                }

                function splitRectsByPages(rects, marginValue, coordinate, dimension, isFitToPage, onSeparateCallback, onSplitMultiPageRow) {
                    const pages = [];
                    const rectsToSplit = [...rects];
                    const isFitToPageForMultiPageRow = (isFirstPage, rectHeight) => isFitToPage(isFirstPage, rectHeight + marginValue);
                    while (rectsToSplit.length > 0) {
                        let currentPageMaxRectCoordinate = 0;
                        const currentPageRects = rectsToSplit.filter((rect => {
                            const currentRectCoordinate = rect[coordinate] + rect[dimension];
                            if (isFitToPage(0 === pages.length, currentRectCoordinate)) {
                                if (currentPageMaxRectCoordinate <= currentRectCoordinate) {
                                    currentPageMaxRectCoordinate = currentRectCoordinate
                                }
                                return true
                            } else {
                                return false
                            }
                        }));
                        const isCurrentPageContainsOnlyHeader = (0, _get_multipage_row_pages.checkPageContainsOnlyHeader)(currentPageRects, 0 === pages.length);
                        const multiPageRowPages = (0, _get_multipage_row_pages.getMultiPageRowPages)(currentPageRects, rectsToSplit, isCurrentPageContainsOnlyHeader, onSplitMultiPageRow, isFitToPageForMultiPageRow);
                        const rectsToSeparate = rectsToSplit.filter((rect => {
                            const currentRectLeft = rect[coordinate];
                            const currentRectRight = rect[coordinate] + rect[dimension];
                            return currentPageMaxRectCoordinate - currentRectLeft > COORDINATE_EPSILON && currentRectRight - currentPageMaxRectCoordinate > COORDINATE_EPSILON
                        }));
                        rectsToSeparate.forEach((rect => {
                            onSeparateCallback(rect, currentPageMaxRectCoordinate, currentPageRects, rectsToSplit);
                            const index = rectsToSplit.indexOf(rect);
                            if (-1 !== index) {
                                rectsToSplit.splice(index, 1)
                            }
                        }));
                        currentPageRects.forEach((rect => {
                            const index = rectsToSplit.indexOf(rect);
                            if (-1 !== index) {
                                rectsToSplit.splice(index, 1)
                            }
                        }));
                        rectsToSplit.forEach((rect => {
                            rect[coordinate] = (0, _type.isDefined)(currentPageMaxRectCoordinate) ? rect[coordinate] - currentPageMaxRectCoordinate + marginValue : rect[coordinate]
                        }));
                        const firstPageContainsHeaderAndMultiPageRow = isCurrentPageContainsOnlyHeader && multiPageRowPages.length > 0;
                        if (firstPageContainsHeaderAndMultiPageRow) {
                            const [firstPage, ...restOfPages] = multiPageRowPages;
                            pages.push([...currentPageRects, ...firstPage]);
                            pages.push(...restOfPages)
                        } else if (currentPageRects.length > 0) {
                            pages.push(currentPageRects);
                            pages.push(...multiPageRowPages)
                        } else if (multiPageRowPages.length > 0) {
                            pages.push(...multiPageRowPages);
                            pages.push(rectsToSplit)
                        } else {
                            pages.push(rectsToSplit);
                            break
                        }
                    }
                    return pages
                }
            },
        93932:
            /*!********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/exporter/jspdf/export_data_grid.js ***!
              \********************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.exportDataGrid = function(options) {
                    return _export.Export.export(function(options) {
                        if (!((0, _type.isDefined)(options) && (0, _type.isObject)(options))) {
                            throw Error('The "exportDataGrid" method requires a configuration object.')
                        }
                        if (!((0, _type.isDefined)(options.component) && (0, _type.isObject)(options.component) && "dxDataGrid" === options.component.NAME)) {
                            throw Error('The "component" field must contain a DataGrid instance.')
                        }
                        if (!((0, _type.isDefined)(options.jsPDFDocument) && (0, _type.isObject)(options.jsPDFDocument))) {
                            throw Error('The "jsPDFDocument" field must contain a jsPDF instance.')
                        }
                        if ((0, _type.isDefined)(options.autoTableOptions)) {
                            _errors.default.log("W0001", "Export", "autoTableOptions", "22.1", `You can migrate from exporting to PDF with the AutoTable plugin to a new export system. See the following topic for more information: ${HOW_TO_MIGRATE_ARTICLE}`)
                        }
                        return _export.Export.getFullOptions(options)
                    }(options))
                };
                var _type = __webpack_require__( /*! ../../core/utils/type */ 11528);
                var _errors = (e = __webpack_require__( /*! ../../core/errors */ 87129), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                var _export = __webpack_require__( /*! ./common/export */ 5650);
                const HOW_TO_MIGRATE_ARTICLE = "https://supportcenter.devexpress.com/ticket/details/t1077554"
            },
        81863:
            /*!****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/exporter/jspdf/export_gantt.js ***!
              \****************************************************************************/
            function(__unused_webpack_module, exports) {
                exports.exportGantt = function(options) {
                    const component = options.component;
                    return null === component || void 0 === component ? void 0 : component.exportToPdf(options)
                }
            },
        49343:
            /*!*********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/exporter/pdf_creator.js ***!
              \*********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.getData = function(data, options) {
                    return _image_creator.imageCreator.getImageData(data, (0, _extend.extend)({}, options, {
                        format: "JPEG"
                    })).then((imageString => {
                        const binaryData = composePdfString(imageString, options, function(date) {
                            const dateUnits = [date.getUTCFullYear(), getTwoDigitValue(date.getUTCMonth()), getTwoDigitValue(date.getUTCDate()), getTwoDigitValue(date.getUTCHours()), getTwoDigitValue(date.getUTCMinutes()), getTwoDigitValue(date.getUTCSeconds())];
                            return `(D:${dateUnits.join("")}Z00'00')`
                        }(getCurDate()));
                        const pdfData = (0, _type.isFunction)(window.Blob) ? getBlob(binaryData) : getBase64(binaryData);
                        return pdfData
                    }))
                };
                var _version = __webpack_require__( /*! ../core/version */ 1956);
                var _window = __webpack_require__( /*! ../core/utils/window */ 3104);
                var _image_creator = __webpack_require__( /*! ./image_creator */ 28456);
                var _type = __webpack_require__( /*! ../core/utils/type */ 11528);
                var _extend = __webpack_require__( /*! ../core/utils/extend */ 52576);
                const window = (0, _window.getWindow)();
                const xrefTemplate = "xref\r\n0 8\r\n0000000000 65535 f\r\n0000000241 00000 n\r\n0000000010 00000 n\r\n_main_ 00000 n\r\n0000000089 00000 n\r\n_image_ 00000 n\r\n_info_ 00000 n\r\n0000000143 00000 n\r\n";
                const pad = function(str, len) {
                    return str.length < len ? pad("0" + str, len) : str
                };
                let composePdfString = function(imageString, options, curDate) {
                    const margin = 2 * (options.margin || 0);
                    let {
                        width: width,
                        height: height
                    } = (0, _image_creator.calcScaledInfo)(options.width, options.height);
                    width += margin;
                    height += margin;
                    const widthPt = (.75 * width).toFixed(2);
                    const heightPt = (.75 * height).toFixed(2);
                    const flooredWidth = Math.floor(width);
                    const flooredHeight = Math.floor(height);
                    const mainPage = "%PDF-1.3\r\n2 0 obj\r\n<</ProcSet[/PDF/ImageB/ImageC/ImageI]/XObject<</I0 5 0 R>>>>\r\nendobj\r\n4 0 obj\r\n<</Type/Pages/Kids[1 0 R]/Count 1>>\r\nendobj\r\n7 0 obj\r\n<</OpenAction[1 0 R /FitH null]/Type/Catalog/Pages 4 0 R/PageLayout/OneColumn>>\r\nendobj\r\n1 0 obj\r\n<</Type/Page/Resources 2 0 R/MediaBox[0 0 _width_ _height_]/Contents 3 0 R/Parent 4 0 R>>\r\nendobj\r\n".replace("_width_", widthPt).replace("_height_", heightPt);
                    const content = "3 0 obj\r\n<</Length 52>>stream\r\n0.20 w\n0 G\nq _width_ 0 0 _height_ 0.00 0.00 cm /I0 Do Q\r\nendstream\r\nendobj\r\n".replace("_width_", widthPt).replace("_height_", heightPt);
                    const info = "6 0 obj\r\n<</CreationDate _date_/Producer(DevExtreme _version_)>>\r\nendobj\r\n".replace("_date_", curDate).replace("_version_", _version.version);
                    const image = "5 0 obj\r\n<</Type/XObject/Subtype/Image/Width _width_/Height _height_/ColorSpace/DeviceRGB/BitsPerComponent 8/Filter/DCTDecode/Length _length_>>stream\r\n".replace("_width_", flooredWidth).replace("_height_", flooredHeight).replace("_length_", imageString.length) + imageString + "\r\nendstream\r\nendobj\r\n";
                    const xref = (mainPageLength = mainPage.length, contentLength = content.length, infoLength = info.length, xrefTemplate.replace("_main_", pad(mainPageLength + "", 10)).replace("_info_", pad(mainPageLength + contentLength + "", 10)).replace("_image_", pad(mainPageLength + contentLength + infoLength + "", 10)));
                    var mainPageLength, contentLength, infoLength;
                    const mainContent = mainPage + content + info + image;
                    const trailer = "trailer\r\n<<\r\n/Size 8\r\n/Root 7 0 R\r\n/Info 6 0 R\r\n>>\r\nstartxref\r\n_length_\r\n%%EOF".replace("_length_", mainContent.length);
                    return mainContent + xref + trailer
                };
                let getCurDate = function() {
                    return new Date
                };
                let getBlob = function(binaryData) {
                    let i = 0;
                    const dataArray = new Uint8Array(binaryData.length);
                    for (; i < binaryData.length; i++) {
                        dataArray[i] = binaryData.charCodeAt(i)
                    }
                    return new window.Blob([dataArray.buffer], {
                        type: "application/pdf"
                    })
                };
                let getBase64 = function(binaryData) {
                    return window.btoa(binaryData)
                };

                function getTwoDigitValue(value) {
                    const stringValue = value.toString();
                    if (1 === stringValue.length) {
                        return `0${value}`
                    }
                    return value
                }
            },
        86195:
            /*!*********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/exporter/svg_creator.js ***!
              \*********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.getData = function(data, options) {
                    return svgCreator.getData(data, options)
                };
                exports.svgCreator = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../core/renderer */ 64553));
                var _ajax = _interopRequireDefault(__webpack_require__( /*! ../core/utils/ajax */ 78670));
                var _window = __webpack_require__( /*! ../core/utils/window */ 3104);
                var _type = __webpack_require__( /*! ../core/utils/type */ 11528);
                var _iterator = __webpack_require__( /*! ../core/utils/iterator */ 21274);
                var _m_svg = _interopRequireDefault(__webpack_require__( /*! ../__internal/core/utils/m_svg */ 89650));
                var _deferred = __webpack_require__( /*! ../core/utils/deferred */ 87739);

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const window = (0, _window.getWindow)();
                const svgCreator = exports.svgCreator = {
                    _markup: "",
                    _imageArray: {},
                    _imageDeferreds: [],
                    _getBinaryFile: function(src, callback) {
                        _ajax.default.sendRequest({
                            url: src,
                            method: "GET",
                            responseType: "arraybuffer"
                        }).done(callback).fail((function() {
                            callback(false)
                        }))
                    },
                    _loadImages: function() {
                        const that = this;
                        (0, _iterator.each)(that._imageArray, (function(src) {
                            const deferred = new _deferred.Deferred;
                            that._imageDeferreds.push(deferred);
                            that._getBinaryFile(src, (function(response) {
                                if (!response) {
                                    delete that._imageArray[src];
                                    deferred.resolve();
                                    return
                                }
                                let i;
                                let binary = "";
                                const bytes = new Uint8Array(response);
                                const length = bytes.byteLength;
                                for (i = 0; i < length; i++) {
                                    binary += String.fromCharCode(bytes[i])
                                }
                                that._imageArray[src] = "data:image/png;base64," + window.btoa(binary);
                                deferred.resolve()
                            }))
                        }))
                    },
                    _parseImages: function(element) {
                        let href;
                        const that = this;
                        if ("image" === element.tagName) {
                            href = (0, _renderer.default)(element).attr("href") || (0, _renderer.default)(element).attr("xlink:href");
                            if (!that._imageArray[href]) {
                                that._imageArray[href] = ""
                            }
                        }(0, _iterator.each)(element.childNodes, (function(_, element) {
                            that._parseImages(element)
                        }))
                    },
                    _prepareImages: function(svgElem) {
                        this._parseImages(svgElem);
                        this._loadImages();
                        return _deferred.when.apply(_renderer.default, this._imageDeferreds)
                    },
                    getData: function(data, options) {
                        let markup;
                        const that = this;
                        const svgElem = _m_svg.default.getSvgElement(data);
                        const $svgObject = (0, _renderer.default)(svgElem);
                        $svgObject.find(`[${_m_svg.default.HIDDEN_FOR_EXPORT}]`).remove();
                        markup = '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>' + _m_svg.default.getSvgMarkup($svgObject.get(0), options.backgroundColor);
                        return that._prepareImages(svgElem).then((() => {
                            (0, _iterator.each)(that._imageArray, (function(href, dataURI) {
                                const regexpString = `href=['|"]${href}['|"]`;
                                markup = markup.replace(new RegExp(regexpString, "gi"), `href="${dataURI}"`)
                            }));
                            return (0, _type.isFunction)(window.Blob) ? that._getBlob(markup) : that._getBase64(markup)
                        }))
                    },
                    _getBlob: function(markup) {
                        return new window.Blob([markup], {
                            type: "image/svg+xml"
                        })
                    },
                    _getBase64: function(markup) {
                        return window.btoa(markup)
                    }
                }
            },
        85096:
            /*!********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/file_management/custom_provider.js ***!
              \********************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _common = __webpack_require__( /*! ../core/utils/common */ 17781);
                var _type = __webpack_require__( /*! ../core/utils/type */ 11528);
                var _data = __webpack_require__( /*! ../core/utils/data */ 31e3);
                var _provider_base = (e = __webpack_require__( /*! ./provider_base */ 65266), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                class CustomFileSystemProvider extends _provider_base.default {
                    constructor(options) {
                        options = (0, _common.ensureDefined)(options, {});
                        super(options);
                        this._hasSubDirsGetter = (0, _data.compileGetter)(options.hasSubDirectoriesExpr || "hasSubDirectories");
                        this._getItemsFunction = this._ensureFunction(options.getItems, (() => []));
                        this._renameItemFunction = this._ensureFunction(options.renameItem);
                        this._createDirectoryFunction = this._ensureFunction(options.createDirectory);
                        this._deleteItemFunction = this._ensureFunction(options.deleteItem);
                        this._moveItemFunction = this._ensureFunction(options.moveItem);
                        this._copyItemFunction = this._ensureFunction(options.copyItem);
                        this._uploadFileChunkFunction = this._ensureFunction(options.uploadFileChunk);
                        this._abortFileUploadFunction = this._ensureFunction(options.abortFileUpload);
                        this._downloadItemsFunction = this._ensureFunction(options.downloadItems);
                        this._getItemsContentFunction = this._ensureFunction(options.getItemsContent)
                    }
                    getItems(parentDir) {
                        const pathInfo = parentDir.getFullPathInfo();
                        return this._executeActionAsDeferred((() => this._getItemsFunction(parentDir)), true).then((dataItems => this._convertDataObjectsToFileItems(dataItems, pathInfo)))
                    }
                    renameItem(item, name) {
                        return this._executeActionAsDeferred((() => this._renameItemFunction(item, name)))
                    }
                    createDirectory(parentDir, name) {
                        return this._executeActionAsDeferred((() => this._createDirectoryFunction(parentDir, name)))
                    }
                    deleteItems(items) {
                        return items.map((item => this._executeActionAsDeferred((() => this._deleteItemFunction(item)))))
                    }
                    moveItems(items, destinationDirectory) {
                        return items.map((item => this._executeActionAsDeferred((() => this._moveItemFunction(item, destinationDirectory)))))
                    }
                    copyItems(items, destinationFolder) {
                        return items.map((item => this._executeActionAsDeferred((() => this._copyItemFunction(item, destinationFolder)))))
                    }
                    uploadFileChunk(fileData, chunksInfo, destinationDirectory) {
                        return this._executeActionAsDeferred((() => this._uploadFileChunkFunction(fileData, chunksInfo, destinationDirectory)))
                    }
                    abortFileUpload(fileData, chunksInfo, destinationDirectory) {
                        return this._executeActionAsDeferred((() => this._abortFileUploadFunction(fileData, chunksInfo, destinationDirectory)))
                    }
                    downloadItems(items) {
                        return this._executeActionAsDeferred((() => this._downloadItemsFunction(items)))
                    }
                    getItemsContent(items) {
                        return this._executeActionAsDeferred((() => this._getItemsContentFunction(items)))
                    }
                    _hasSubDirs(dataObj) {
                        const hasSubDirs = this._hasSubDirsGetter(dataObj);
                        return "boolean" === typeof hasSubDirs ? hasSubDirs : true
                    }
                    _getKeyExpr(options) {
                        return options.keyExpr || "key"
                    }
                    _ensureFunction(functionObject, defaultFunction) {
                        defaultFunction = defaultFunction || _common.noop;
                        return (0, _type.isFunction)(functionObject) ? functionObject : defaultFunction
                    }
                }
                exports.default = CustomFileSystemProvider;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        46327:
            /*!**********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/file_management/error.js ***!
              \**********************************************************************/
            function(module, exports) {
                exports.default = void 0;
                exports.default = class {
                    constructor(errorCode, fileSystemItem, errorText) {
                        this.errorCode = errorCode;
                        this.fileSystemItem = fileSystemItem;
                        this.errorText = errorText
                    }
                };
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        54950:
            /*!****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/file_management/error_codes.js ***!
              \****************************************************************************/
            function(module, exports) {
                exports.default = void 0;
                exports.default = {
                    NoAccess: 0,
                    FileExists: 1,
                    FileNotFound: 2,
                    DirectoryExists: 3,
                    DirectoryNotFound: 4,
                    WrongFileExtension: 5,
                    MaxFileSizeExceeded: 6,
                    InvalidSymbols: 7,
                    Other: 32767
                };
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        53093:
            /*!*********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/file_management/file_system_item.js ***!
              \*********************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _type = __webpack_require__( /*! ../core/utils/type */ 11528);
                var _utils = __webpack_require__( /*! ./utils */ 56536);
                class FileSystemItem {
                    constructor() {
                        const ctor = (0, _type.isString)(arguments[0]) ? this._publicCtor : this._internalCtor;
                        ctor.apply(this, arguments)
                    }
                    _internalCtor(pathInfo, name, isDirectory, key) {
                        this.name = name || "";
                        this.pathInfo = pathInfo && [...pathInfo] || [];
                        this.parentPath = this._getPathByPathInfo(this.pathInfo);
                        this.relativeName = (0, _utils.pathCombine)(this.parentPath, name);
                        this.key = key || this._getPathByPathInfo(this.getFullPathInfo(), true);
                        this.path = (0, _utils.pathCombine)(this.parentPath, name);
                        this.pathKeys = this.pathInfo.map((_ref => {
                            let {
                                key: key
                            } = _ref;
                            return key
                        }));
                        if (!this.isRoot()) {
                            this.pathKeys.push(this.key)
                        }
                        this._initialize(isDirectory)
                    }
                    _publicCtor(path, isDirectory, pathKeys) {
                        this.path = path || "";
                        this.pathKeys = pathKeys || [];
                        const pathInfo = [];
                        const parts = (0, _utils.getPathParts)(path, true);
                        for (let i = 0; i < parts.length - 1; i++) {
                            const part = parts[i];
                            const pathInfoPart = {
                                key: this.pathKeys[i] || part,
                                name: (0, _utils.getName)(part)
                            };
                            pathInfo.push(pathInfoPart)
                        }
                        this.pathInfo = pathInfo;
                        this.relativeName = path;
                        this.name = (0, _utils.getName)(path);
                        this.key = this.pathKeys.length ? this.pathKeys[this.pathKeys.length - 1] : path;
                        this.parentPath = parts.length > 1 ? parts[parts.length - 2] : "";
                        this._initialize(isDirectory)
                    }
                    _initialize(isDirectory) {
                        this.isDirectory = !!isDirectory;
                        this.size = 0;
                        this.dateModified = new Date;
                        this.thumbnail = "";
                        this.tooltipText = ""
                    }
                    getFullPathInfo() {
                        const pathInfo = [...this.pathInfo];
                        if (!this.isRoot()) {
                            pathInfo.push({
                                key: this.key,
                                name: this.name
                            })
                        }
                        return pathInfo
                    }
                    isRoot() {
                        return "" === this.path
                    }
                    getFileExtension() {
                        return this.isDirectory ? "" : (0, _utils.getFileExtension)(this.name)
                    }
                    equals(item) {
                        return item && this.key === item.key
                    }
                    createClone() {
                        const result = new FileSystemItem(this.pathInfo, this.name, this.isDirectory, this.key);
                        result.key = this.key;
                        result.size = this.size;
                        result.dateModified = this.dateModified;
                        result.thumbnail = this.thumbnail;
                        result.tooltipText = this.tooltipText;
                        result.hasSubDirectories = this.hasSubDirectories;
                        result.dataItem = this.dataItem;
                        return result
                    }
                    _getPathByPathInfo(pathInfo, escape) {
                        return pathInfo.map((info => escape ? (0, _utils.getEscapedFileName)(info.name) : info.name)).join(_utils.PATH_SEPARATOR)
                    }
                }
                exports.default = FileSystemItem;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        76856:
            /*!********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/file_management/object_provider.js ***!
              \********************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _common = __webpack_require__( /*! ../core/utils/common */ 17781);
                var _data = __webpack_require__( /*! ../core/utils/data */ 31e3);
                var _common2 = __webpack_require__( /*! ../common */ 83077);
                var _type = __webpack_require__( /*! ../core/utils/type */ 11528);
                var _errors = __webpack_require__( /*! ../common/data/errors */ 82812);
                var _deferred = __webpack_require__( /*! ../core/utils/deferred */ 87739);
                var _window = __webpack_require__( /*! ../core/utils/window */ 3104);
                var _file_saver = __webpack_require__( /*! ../exporter/file_saver */ 34924);
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../ui/widget/ui.errors */ 35185));
                var _jszip = _interopRequireDefault(__webpack_require__( /*! jszip */ 87531));
                var _provider_base = _interopRequireDefault(__webpack_require__( /*! ./provider_base */ 65266));
                var _error = _interopRequireDefault(__webpack_require__( /*! ./error */ 46327));
                var _error_codes = _interopRequireDefault(__webpack_require__( /*! ./error_codes */ 54950));
                var _utils = __webpack_require__( /*! ./utils */ 56536);

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const window = (0, _window.getWindow)();
                class ObjectFileSystemProvider extends _provider_base.default {
                    constructor(options) {
                        options = (0, _common.ensureDefined)(options, {});
                        super(options);
                        const initialArray = options.data;
                        if (initialArray && !Array.isArray(initialArray)) {
                            throw _errors.errors.Error("E4006")
                        }
                        const itemsExpr = options.itemsExpr || "items";
                        this._subFileItemsGetter = (0, _data.compileGetter)(itemsExpr);
                        this._subFileItemsSetter = this._getSetter(itemsExpr);
                        const contentExpr = options.contentExpr || "content";
                        this._contentGetter = (0, _data.compileGetter)(contentExpr);
                        this._contentSetter = this._getSetter(contentExpr);
                        const nameExpr = this._getNameExpr(options);
                        this._nameSetter = this._getSetter(nameExpr);
                        const isDirExpr = this._getIsDirExpr(options);
                        this._getIsDirSetter = this._getSetter(isDirExpr);
                        const keyExpr = this._getKeyExpr(options);
                        this._keySetter = this._getSetter(keyExpr);
                        const sizeExpr = this._getSizeExpr(options);
                        this._sizeSetter = this._getSetter(sizeExpr);
                        const dateModifiedExpr = this._getDateModifiedExpr(options);
                        this._dateModifiedSetter = this._getSetter(dateModifiedExpr);
                        this._data = initialArray || []
                    }
                    getItems(parentDir) {
                        return this._executeActionAsDeferred((() => this._getItems(parentDir)), true)
                    }
                    renameItem(item, name) {
                        return this._executeActionAsDeferred((() => this._renameItemCore(item, name)))
                    }
                    _renameItemCore(item, name) {
                        if (!item) {
                            return
                        }
                        const dataItem = this._findDataObject(item);
                        this._nameSetter(dataItem, name);
                        item.name = name;
                        item.key = this._ensureDataObjectKey(dataItem)
                    }
                    createDirectory(parentDir, name) {
                        return this._executeActionAsDeferred((() => {
                            this._validateDirectoryExists(parentDir);
                            this._createDataObject(parentDir, name, true)
                        }))
                    }
                    deleteItems(items) {
                        return items.map((item => this._executeActionAsDeferred((() => this._deleteItem(item)))))
                    }
                    moveItems(items, destinationDir) {
                        const destinationDataItem = this._findDataObject(destinationDir);
                        const array = this._getDirectoryDataItems(destinationDataItem);
                        const deferreds = items.map((item => this._executeActionAsDeferred((() => {
                            this._checkAbilityToMoveOrCopyItem(item, destinationDir);
                            const dataItem = this._findDataObject(item);
                            this._deleteItem(item);
                            array.push(dataItem)
                        }))));
                        return deferreds
                    }
                    copyItems(items, destinationDir) {
                        const destinationDataItem = this._findDataObject(destinationDir);
                        const array = this._getDirectoryDataItems(destinationDataItem);
                        const deferreds = items.map((item => this._executeActionAsDeferred((() => {
                            this._checkAbilityToMoveOrCopyItem(item, destinationDir);
                            const dataItem = this._findDataObject(item);
                            const copiedItem = this._createCopy(dataItem);
                            array.push(copiedItem)
                        }))));
                        return deferreds
                    }
                    uploadFileChunk(fileData, chunksInfo, destinationDirectory) {
                        if (chunksInfo.chunkIndex > 0) {
                            return chunksInfo.customData.deferred
                        }
                        this._validateDirectoryExists(destinationDirectory);
                        const deferred = chunksInfo.customData.deferred = new _deferred.Deferred;
                        const reader = this._createFileReader();
                        reader.readAsDataURL(fileData);
                        reader.onload = () => {
                            const content = reader.result.split(",")[1];
                            const dataObj = this._createDataObject(destinationDirectory, fileData.name, false);
                            this._sizeSetter(dataObj, fileData.size);
                            this._dateModifiedSetter(dataObj, fileData.lastModifiedDate);
                            this._contentSetter(dataObj, content);
                            deferred.resolve()
                        };
                        reader.onerror = error => deferred.reject(error);
                        return deferred
                    }
                    downloadItems(items) {
                        if (1 === items.length) {
                            this._downloadSingleFile(items[0])
                        } else {
                            this._downloadMultipleFiles(items)
                        }
                    }
                    _downloadSingleFile(file) {
                        const content = this._getFileContent(file);
                        const byteString = window.atob(content);
                        const arrayBuffer = new ArrayBuffer(byteString.length);
                        const array = new Uint8Array(arrayBuffer);
                        for (let i = 0; i < byteString.length; i++) {
                            array[i] = byteString.charCodeAt(i)
                        }
                        const blob = new window.Blob([arrayBuffer], {
                            type: "application/octet-stream"
                        });
                        _file_saver.fileSaver.saveAs(file.name, null, blob)
                    }
                    _downloadMultipleFiles(files) {
                        const jsZip = function() {
                            if (!_jszip.default) {
                                throw _ui.default.Error("E1041", "JSZip")
                            }
                            return _jszip.default
                        }();
                        const zip = new jsZip;
                        files.forEach((file => zip.file(file.name, this._getFileContent(file), {
                            base64: true
                        })));
                        const options = {
                            type: "blob",
                            compression: "DEFLATE",
                            mimeType: "application/zip"
                        };
                        const deferred = new _deferred.Deferred;
                        if (zip.generateAsync) {
                            zip.generateAsync(options).then(deferred.resolve)
                        } else {
                            deferred.resolve(zip.generate(options))
                        }
                        deferred.done((blob => _file_saver.fileSaver.saveAs("files.zip", null, blob)))
                    }
                    _getFileContent(file) {
                        const dataItem = this._findDataObject(file);
                        return this._contentGetter(dataItem) || ""
                    }
                    _validateDirectoryExists(directoryInfo) {
                        if (!this._isFileItemExists(directoryInfo) || this._isDirGetter(directoryInfo.fileItem)) {
                            throw new _error.default(_error_codes.default.DirectoryNotFound, directoryInfo)
                        }
                    }
                    _checkAbilityToMoveOrCopyItem(item, destinationDir) {
                        const dataItem = this._findDataObject(item);
                        const itemKey = this._getKeyFromDataObject(dataItem, item.parentPath);
                        const pathInfo = destinationDir.getFullPathInfo();
                        let currentPath = "";
                        pathInfo.forEach((info => {
                            currentPath = (0, _utils.pathCombine)(currentPath, info.name);
                            const pathKey = this._getDataObjectKey(info.key, currentPath);
                            if (pathKey === itemKey) {
                                throw new _error.default(_error_codes.default.Other, item)
                            }
                        }))
                    }
                    _createDataObject(parentDir, name, isDirectory) {
                        const dataObj = {};
                        this._nameSetter(dataObj, name);
                        this._getIsDirSetter(dataObj, isDirectory);
                        this._keySetter(dataObj, String(new _common2.Guid));
                        const parentDataItem = this._findDataObject(parentDir);
                        const array = this._getDirectoryDataItems(parentDataItem);
                        array.push(dataObj);
                        return dataObj
                    }
                    _createCopy(dataObj) {
                        const copyObj = {};
                        this._nameSetter(copyObj, this._nameGetter(dataObj));
                        this._getIsDirSetter(copyObj, this._isDirGetter(dataObj));
                        const items = this._subFileItemsGetter(dataObj);
                        if (Array.isArray(items)) {
                            const itemsCopy = [];
                            items.forEach((childItem => {
                                const childCopy = this._createCopy(childItem);
                                itemsCopy.push(childCopy)
                            }));
                            this._subFileItemsSetter(copyObj, itemsCopy)
                        }
                        return copyObj
                    }
                    _deleteItem(fileItem) {
                        const dataItem = this._findDataObject(fileItem);
                        const parentDirDataObj = this._findFileItemObj(fileItem.pathInfo);
                        const array = this._getDirectoryDataItems(parentDirDataObj);
                        const index = array.indexOf(dataItem);
                        array.splice(index, 1)
                    }
                    _getDirectoryDataItems(directoryDataObj) {
                        if (!directoryDataObj) {
                            return this._data
                        }
                        let dataItems = this._subFileItemsGetter(directoryDataObj);
                        if (!Array.isArray(dataItems)) {
                            dataItems = [];
                            this._subFileItemsSetter(directoryDataObj, dataItems)
                        }
                        return dataItems
                    }
                    _getItems(parentDir) {
                        this._validateDirectoryExists(parentDir);
                        const pathInfo = parentDir.getFullPathInfo();
                        const parentDirKey = pathInfo && pathInfo.length > 0 ? pathInfo[pathInfo.length - 1].key : null;
                        let dirFileObjects = this._data;
                        if (parentDirKey) {
                            const directoryEntry = this._findFileItemObj(pathInfo);
                            dirFileObjects = directoryEntry && this._subFileItemsGetter(directoryEntry) || []
                        }
                        this._ensureKeysForDuplicateNameItems(dirFileObjects);
                        return this._convertDataObjectsToFileItems(dirFileObjects, pathInfo)
                    }
                    _ensureKeysForDuplicateNameItems(dataObjects) {
                        const names = {};
                        dataObjects.forEach((obj => {
                            const name = this._nameGetter(obj);
                            if (names[name]) {
                                this._ensureDataObjectKey(obj)
                            } else {
                                names[name] = true
                            }
                        }))
                    }
                    _findDataObject(item) {
                        if (item.isRoot()) {
                            return null
                        }
                        const result = this._findFileItemObj(item.getFullPathInfo());
                        if (!result) {
                            const errorCode = item.isDirectory ? _error_codes.default.DirectoryNotFound : _error_codes.default.FileNotFound;
                            throw new _error.default(errorCode, item)
                        }
                        return result
                    }
                    _findFileItemObj(pathInfo) {
                        if (!Array.isArray(pathInfo)) {
                            pathInfo = []
                        }
                        let currentPath = "";
                        let fileItemObj = null;
                        let fileItemObjects = this._data;
                        for (let i = 0; i < pathInfo.length && (0 === i || fileItemObj); i++) {
                            fileItemObj = fileItemObjects.find((item => {
                                const hasCorrectFileItemType = this._isDirGetter(item) || i === pathInfo.length - 1;
                                return this._getKeyFromDataObject(item, currentPath) === pathInfo[i].key && this._nameGetter(item) === pathInfo[i].name && hasCorrectFileItemType
                            }));
                            if (fileItemObj) {
                                currentPath = (0, _utils.pathCombine)(currentPath, this._nameGetter(fileItemObj));
                                fileItemObjects = this._subFileItemsGetter(fileItemObj)
                            }
                        }
                        return fileItemObj
                    }
                    _getKeyFromDataObject(dataObj, defaultKeyPrefix) {
                        const key = this._keyGetter(dataObj);
                        const relativeName = (0, _utils.pathCombine)(defaultKeyPrefix, this._nameGetter(dataObj));
                        return this._getDataObjectKey(key, relativeName)
                    }
                    _getDataObjectKey(key, relativeName) {
                        return key ? key : relativeName
                    }
                    _ensureDataObjectKey(dataObj) {
                        let key = this._keyGetter(dataObj);
                        if (!key) {
                            key = String(new _common2.Guid);
                            this._keySetter(dataObj, key)
                        }
                        return key
                    }
                    _hasSubDirs(dataObj) {
                        const subItems = (0, _common.ensureDefined)(this._subFileItemsGetter(dataObj), []);
                        if (!Array.isArray(subItems)) {
                            return true
                        }
                        for (let i = 0; i < subItems.length; i++) {
                            if (true === this._isDirGetter(subItems[i])) {
                                return true
                            }
                        }
                        return false
                    }
                    _getSetter(expr) {
                        return (0, _type.isFunction)(expr) ? expr : (0, _data.compileSetter)(expr)
                    }
                    _isFileItemExists(fileItem) {
                        return fileItem.isDirectory && fileItem.isRoot() || !!this._findFileItemObj(fileItem.getFullPathInfo())
                    }
                    _createFileReader() {
                        return new window.FileReader
                    }
                }
                exports.default = ObjectFileSystemProvider;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        65266:
            /*!******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/file_management/provider_base.js ***!
              \******************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _data = __webpack_require__( /*! ../core/utils/data */ 31e3);
                var _common = __webpack_require__( /*! ../core/utils/common */ 17781);
                var _date_serialization = _interopRequireDefault(__webpack_require__( /*! ../core/utils/date_serialization */ 71051));
                var _iterator = __webpack_require__( /*! ../core/utils/iterator */ 21274);
                var _type = __webpack_require__( /*! ../core/utils/type */ 11528);
                var _deferred = __webpack_require__( /*! ../core/utils/deferred */ 87739);
                var _file_system_item = _interopRequireDefault(__webpack_require__( /*! ./file_system_item */ 53093));

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                exports.default = class {
                    constructor(options) {
                        options = (0, _common.ensureDefined)(options, {});
                        this._keyGetter = (0, _data.compileGetter)(this._getKeyExpr(options));
                        this._nameGetter = (0, _data.compileGetter)(this._getNameExpr(options));
                        this._isDirGetter = (0, _data.compileGetter)(this._getIsDirExpr(options));
                        this._sizeGetter = (0, _data.compileGetter)(this._getSizeExpr(options));
                        this._dateModifiedGetter = (0, _data.compileGetter)(this._getDateModifiedExpr(options));
                        this._thumbnailGetter = (0, _data.compileGetter)(options.thumbnailExpr || "thumbnail")
                    }
                    getItems(parentDirectory) {
                        return []
                    }
                    renameItem(item, name) {}
                    createDirectory(parentDirectory, name) {}
                    deleteItems(items) {}
                    moveItems(items, destinationDirectory) {}
                    copyItems(items, destinationDirectory) {}
                    uploadFileChunk(fileData, chunksInfo, destinationDirectory) {}
                    abortFileUpload(fileData, chunksInfo, destinationDirectory) {}
                    downloadItems(items) {}
                    getItemsContent(items) {}
                    getFileUploadChunkSize() {
                        return 2e5
                    }
                    _convertDataObjectsToFileItems(entries, pathInfo) {
                        const result = [];
                        (0, _iterator.each)(entries, ((_, entry) => {
                            const fileItem = this._createFileItem(entry, pathInfo);
                            result.push(fileItem)
                        }));
                        return result
                    }
                    _createFileItem(dataObj, pathInfo) {
                        const key = this._keyGetter(dataObj);
                        const fileItem = new _file_system_item.default(pathInfo, this._nameGetter(dataObj), !!this._isDirGetter(dataObj), key);
                        fileItem.size = this._sizeGetter(dataObj);
                        if (void 0 === fileItem.size) {
                            fileItem.size = 0
                        }
                        fileItem.dateModified = _date_serialization.default.deserializeDate(this._dateModifiedGetter(dataObj));
                        if (void 0 === fileItem.dateModified) {
                            fileItem.dateModified = new Date
                        }
                        if (fileItem.isDirectory) {
                            fileItem.hasSubDirectories = this._hasSubDirs(dataObj)
                        }
                        if (!key) {
                            fileItem.key = fileItem.relativeName
                        }
                        fileItem.thumbnail = this._thumbnailGetter(dataObj) || "";
                        fileItem.dataItem = dataObj;
                        return fileItem
                    }
                    _hasSubDirs(dataObj) {
                        return true
                    }
                    _getKeyExpr(options) {
                        return options.keyExpr || this._defaultKeyExpr
                    }
                    _defaultKeyExpr(fileItem) {
                        if (2 === arguments.length) {
                            fileItem.__KEY__ = arguments[1];
                            return
                        }
                        return Object.prototype.hasOwnProperty.call(fileItem, "__KEY__") ? fileItem.__KEY__ : null
                    }
                    _getNameExpr(options) {
                        return options.nameExpr || "name"
                    }
                    _getIsDirExpr(options) {
                        return options.isDirectoryExpr || "isDirectory"
                    }
                    _getSizeExpr(options) {
                        return options.sizeExpr || "size"
                    }
                    _getDateModifiedExpr(options) {
                        return options.dateModifiedExpr || "dateModified"
                    }
                    _executeActionAsDeferred(action, keepResult) {
                        const deferred = new _deferred.Deferred;
                        try {
                            const result = action();
                            if ((0, _type.isPromise)(result)) {
                                (0, _deferred.fromPromise)(result).done((userResult => deferred.resolve(keepResult && userResult || void 0))).fail((error => deferred.reject(error)))
                            } else {
                                deferred.resolve(keepResult && result || void 0)
                            }
                        } catch (error) {
                            return deferred.reject(error)
                        }
                        return deferred.promise()
                    }
                };
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        80175:
            /*!********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/file_management/remote_provider.js ***!
              \********************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../core/renderer */ 64553));
                var _ajax = _interopRequireDefault(__webpack_require__( /*! ../core/utils/ajax */ 78670));
                var _common = __webpack_require__( /*! ../core/utils/common */ 17781);
                var _common2 = __webpack_require__( /*! ../common */ 83077);
                var _window = __webpack_require__( /*! ../core/utils/window */ 3104);
                var _iterator = __webpack_require__( /*! ../core/utils/iterator */ 21274);
                var _deferred = __webpack_require__( /*! ../core/utils/deferred */ 87739);
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../common/core/events/core/events_engine */ 92774));
                var _provider_base = _interopRequireDefault(__webpack_require__( /*! ./provider_base */ 65266));
                var _data = __webpack_require__( /*! ../core/utils/data */ 31e3);
                var _type = __webpack_require__( /*! ../core/utils/type */ 11528);

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const window = (0, _window.getWindow)();
                const FILE_CHUNK_BLOB_NAME = "chunk";
                const FILE_SYSTEM_COMMNAD_GET_DIR_CONTENTS = "GetDirContents",
                    FILE_SYSTEM_COMMNAD_CREATE_DIR = "CreateDir",
                    FILE_SYSTEM_COMMNAD_RENAME = "Rename",
                    FILE_SYSTEM_COMMNAD_MOVE = "Move",
                    FILE_SYSTEM_COMMNAD_COPY = "Copy",
                    FILE_SYSTEM_COMMNAD_REMOVE = "Remove",
                    FILE_SYSTEM_COMMNAD_UPLOAD_CHUNK = "UploadChunk",
                    FILE_SYSTEM_COMMNAD_ABORT_UPLOAD = "AbortUpload",
                    FILE_SYSTEM_COMMNAD_DOWLOAD = "Download";
                const REQUEST_METHOD_GET = "GET",
                    REQUEST_METHOD_POST = "POST";
                class RemoteFileSystemProvider extends _provider_base.default {
                    constructor(options) {
                        options = (0, _common.ensureDefined)(options, {});
                        super(options);
                        this._endpointUrl = options.endpointUrl;
                        this._beforeAjaxSend = options.beforeAjaxSend;
                        this._beforeSubmit = options.beforeSubmit;
                        this._requestHeaders = options.requestHeaders;
                        this._hasSubDirsGetter = (0, _data.compileGetter)(options.hasSubDirectoriesExpr || "hasSubDirectories")
                    }
                    getItems(parentDir) {
                        const pathInfo = parentDir.getFullPathInfo();
                        return this._executeRequest(FILE_SYSTEM_COMMNAD_GET_DIR_CONTENTS, {
                            pathInfo: pathInfo
                        }).then((result => this._convertDataObjectsToFileItems(result.result, pathInfo)))
                    }
                    renameItem(item, name) {
                        return this._executeRequest(FILE_SYSTEM_COMMNAD_RENAME, {
                            pathInfo: item.getFullPathInfo(),
                            isDirectory: item.isDirectory,
                            name: name
                        })
                    }
                    createDirectory(parentDir, name) {
                        return this._executeRequest(FILE_SYSTEM_COMMNAD_CREATE_DIR, {
                            pathInfo: parentDir.getFullPathInfo(),
                            name: name
                        })
                    }
                    deleteItems(items) {
                        return items.map((item => this._executeRequest(FILE_SYSTEM_COMMNAD_REMOVE, {
                            pathInfo: item.getFullPathInfo(),
                            isDirectory: item.isDirectory
                        })))
                    }
                    moveItems(items, destinationDirectory) {
                        return items.map((item => this._executeRequest(FILE_SYSTEM_COMMNAD_MOVE, {
                            sourcePathInfo: item.getFullPathInfo(),
                            sourceIsDirectory: item.isDirectory,
                            destinationPathInfo: destinationDirectory.getFullPathInfo()
                        })))
                    }
                    copyItems(items, destinationFolder) {
                        return items.map((item => this._executeRequest(FILE_SYSTEM_COMMNAD_COPY, {
                            sourcePathInfo: item.getFullPathInfo(),
                            sourceIsDirectory: item.isDirectory,
                            destinationPathInfo: destinationFolder.getFullPathInfo()
                        })))
                    }
                    uploadFileChunk(fileData, chunksInfo, destinationDirectory) {
                        if (0 === chunksInfo.chunkIndex) {
                            chunksInfo.customData.uploadId = new _common2.Guid
                        }
                        const args = {
                            destinationPathInfo: destinationDirectory.getFullPathInfo(),
                            chunkMetadata: JSON.stringify({
                                UploadId: chunksInfo.customData.uploadId,
                                FileName: fileData.name,
                                Index: chunksInfo.chunkIndex,
                                TotalCount: chunksInfo.chunkCount,
                                FileSize: fileData.size
                            })
                        };
                        const ajaxSettings = {
                            url: this._endpointUrl,
                            headers: this._requestHeaders || {},
                            method: REQUEST_METHOD_POST,
                            dataType: "json",
                            data: {
                                [FILE_CHUNK_BLOB_NAME]: chunksInfo.chunkBlob,
                                arguments: JSON.stringify(args),
                                command: FILE_SYSTEM_COMMNAD_UPLOAD_CHUNK
                            },
                            upload: {
                                onprogress: _common.noop,
                                onloadstart: _common.noop,
                                onabort: _common.noop
                            },
                            xhrFields: {},
                            cache: false
                        };
                        const deferred = new _deferred.Deferred;
                        this._beforeSendInternal(ajaxSettings);
                        _ajax.default.sendRequest(ajaxSettings).done((result => {
                            !result.success && deferred.reject(result) || deferred.resolve()
                        })).fail(deferred.reject);
                        return deferred.promise()
                    }
                    abortFileUpload(fileData, chunksInfo, destinationDirectory) {
                        return this._executeRequest(FILE_SYSTEM_COMMNAD_ABORT_UPLOAD, {
                            uploadId: chunksInfo.customData.uploadId
                        })
                    }
                    downloadItems(items) {
                        const args = this._getDownloadArgs(items);
                        const $form = (0, _renderer.default)("<form>").css({
                            display: "none"
                        }).attr({
                            method: REQUEST_METHOD_POST,
                            action: args.url
                        });
                        const formDataEntries = {
                            command: args.command,
                            arguments: args.arguments
                        };
                        this._beforeSubmitInternal(formDataEntries);
                        this._appendFormDataInputsToForm(formDataEntries, $form);
                        $form.appendTo("body");
                        _events_engine.default.trigger($form, "submit");
                        setTimeout((() => $form.remove()))
                    }
                    getItemsContent(items) {
                        const args = this._getDownloadArgs(items);
                        const ajaxSettings = {
                            url: args.url,
                            headers: this._requestHeaders || {},
                            method: REQUEST_METHOD_POST,
                            responseType: "arraybuffer",
                            data: {
                                command: args.command,
                                arguments: args.arguments
                            },
                            upload: {
                                onprogress: _common.noop,
                                onloadstart: _common.noop,
                                onabort: _common.noop
                            },
                            xhrFields: {},
                            cache: false
                        };
                        this._beforeSendInternal(ajaxSettings);
                        return _ajax.default.sendRequest(ajaxSettings)
                    }
                    _getDownloadArgs(items) {
                        const pathInfoList = items.map((item => item.getFullPathInfo()));
                        const args = {
                            pathInfoList: pathInfoList
                        };
                        const argsStr = JSON.stringify(args);
                        return {
                            url: this._endpointUrl,
                            arguments: argsStr,
                            command: FILE_SYSTEM_COMMNAD_DOWLOAD
                        }
                    }
                    _getItemsIds(items) {
                        return items.map((it => it.relativeName))
                    }
                    _executeRequest(command, args) {
                        const method = command === FILE_SYSTEM_COMMNAD_GET_DIR_CONTENTS ? REQUEST_METHOD_GET : REQUEST_METHOD_POST;
                        const deferred = new _deferred.Deferred;
                        const ajaxSettings = {
                            url: this._getEndpointUrl(command, args),
                            headers: this._requestHeaders || {},
                            method: method,
                            dataType: "json",
                            data: {},
                            xhrFields: {},
                            cache: false
                        };
                        this._beforeSendInternal(ajaxSettings);
                        _ajax.default.sendRequest(ajaxSettings).then((result => {
                            !result.success && deferred.reject(result) || deferred.resolve(result)
                        }), (e => deferred.reject(e)));
                        return deferred.promise()
                    }
                    _beforeSubmitInternal(formDataEntries) {
                        if ((0, _type.isFunction)(this._beforeSubmit)) {
                            this._beforeSubmit({
                                formData: formDataEntries
                            })
                        }
                    }
                    _beforeSendInternal(ajaxSettings) {
                        if ((0, _type.isFunction)(this._beforeAjaxSend)) {
                            const ajaxArguments = {
                                headers: ajaxSettings.headers,
                                formData: ajaxSettings.data,
                                xhrFields: ajaxSettings.xhrFields
                            };
                            this._beforeAjaxSend(ajaxArguments);
                            ajaxSettings.headers = ajaxArguments.headers;
                            ajaxSettings.data = ajaxArguments.formData;
                            ajaxSettings.xhrFields = ajaxArguments.xhrFields
                        }
                        if ((0, _type.isEmptyObject)(ajaxSettings.data)) {
                            delete ajaxSettings.data
                        } else if (ajaxSettings.responseType || ajaxSettings.upload) {
                            ajaxSettings.data = this._createFormData(ajaxSettings.data)
                        }
                    }
                    _createFormData(formDataEntries) {
                        const formData = new window.FormData;
                        for (const entryName in formDataEntries) {
                            if (Object.prototype.hasOwnProperty.call(formDataEntries, entryName) && (0, _type.isDefined)(formDataEntries[entryName])) {
                                formData.append(entryName, formDataEntries[entryName])
                            }
                        }
                        return formData
                    }
                    _appendFormDataInputsToForm(formDataEntries, formElement) {
                        for (const entryName in formDataEntries) {
                            if (Object.prototype.hasOwnProperty.call(formDataEntries, entryName) && (0, _type.isDefined)(formDataEntries[entryName])) {
                                (0, _renderer.default)("<input>").attr({
                                    type: "hidden",
                                    name: entryName,
                                    value: formDataEntries[entryName]
                                }).appendTo(formElement)
                            }
                        }
                    }
                    _getEndpointUrl(command, args) {
                        const queryString = this._getQueryString({
                            command: command,
                            arguments: JSON.stringify(args)
                        });
                        const separator = this._endpointUrl && this._endpointUrl.indexOf("?") > 0 ? "&" : "?";
                        return this._endpointUrl + separator + queryString
                    }
                    _getQueryString(params) {
                        const pairs = [];
                        const keys = Object.keys(params);
                        for (let i = 0; i < keys.length; i++) {
                            const key = keys[i];
                            let value = params[key];
                            if (void 0 === value) {
                                continue
                            }
                            if (null === value) {
                                value = ""
                            }
                            if (Array.isArray(value)) {
                                this._processQueryStringArrayParam(key, value, pairs)
                            } else {
                                const pair = this._getQueryStringPair(key, value);
                                pairs.push(pair)
                            }
                        }
                        return pairs.join("&")
                    }
                    _processQueryStringArrayParam(key, array, pairs) {
                        (0, _iterator.each)(array, ((_, item) => {
                            const pair = this._getQueryStringPair(key, item);
                            pairs.push(pair)
                        }))
                    }
                    _getQueryStringPair(key, value) {
                        return encodeURIComponent(key) + "=" + encodeURIComponent(value)
                    }
                    _hasSubDirs(dataObj) {
                        const hasSubDirs = this._hasSubDirsGetter(dataObj);
                        return "boolean" === typeof hasSubDirs ? hasSubDirs : true
                    }
                    _getKeyExpr(options) {
                        return options.keyExpr || "key"
                    }
                }
                exports.default = RemoteFileSystemProvider;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        56536:
            /*!**********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/file_management/utils.js ***!
              \**********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.pathCombine = exports.getPathParts = exports.getParentPath = exports.getName = exports.getFileExtension = exports.getEscapedFileName = exports.PATH_SEPARATOR = void 0;
                var _iterator = __webpack_require__( /*! ../core/utils/iterator */ 21274);
                const PATH_SEPARATOR = exports.PATH_SEPARATOR = "/";
                exports.getFileExtension = path => {
                    const index = path.lastIndexOf(".");
                    return -1 !== index ? path.substr(index) : ""
                };
                exports.getName = path => {
                    const index = path.lastIndexOf(PATH_SEPARATOR);
                    return -1 !== index ? path.substr(index + PATH_SEPARATOR.length) : path
                };
                exports.getParentPath = path => {
                    const index = path.lastIndexOf(PATH_SEPARATOR);
                    return -1 !== index ? path.substr(0, index) : ""
                };
                exports.getPathParts = (path, includeFullPath) => {
                    if (!path || "/" === path) {
                        return []
                    }
                    const result = [];
                    let pathPart = "";
                    for (let i = 0; i < path.length; i++) {
                        let char = path.charAt(i);
                        if (char === PATH_SEPARATOR) {
                            const nextChar = path.charAt(i + 1);
                            if (nextChar !== PATH_SEPARATOR) {
                                if (pathPart) {
                                    result.push(pathPart);
                                    pathPart = ""
                                }
                                char = nextChar
                            }
                            i++
                        }
                        pathPart += char
                    }
                    if (pathPart) {
                        result.push(pathPart)
                    }
                    if (includeFullPath) {
                        for (let i = 0; i < result.length; i++) {
                            result[i] = pathCombine(0 === i ? "" : result[i - 1], getEscapedFileName(result[i]))
                        }
                    }
                    return result
                };
                const getEscapedFileName = function(fileName) {
                    return fileName.replace(/\/{1,1}/g, "//")
                };
                exports.getEscapedFileName = getEscapedFileName;
                const pathCombine = function() {
                    let result = "";
                    (0, _iterator.each)(arguments, ((_, arg) => {
                        if (arg) {
                            if (result) {
                                result += PATH_SEPARATOR
                            }
                            result += arg
                        }
                    }));
                    return result
                };
                exports.pathCombine = pathCombine
            },
        2082:
            /*!**************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/format_helper.js ***!
              \**************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _type = __webpack_require__( /*! ./core/utils/type */ 11528);
                var _date = _interopRequireDefault(__webpack_require__( /*! ./core/utils/date */ 41380));
                var _number = _interopRequireDefault(__webpack_require__( /*! ./common/core/localization/number */ 52771));
                var _date2 = _interopRequireDefault(__webpack_require__( /*! ./common/core/localization/date */ 38662));
                var _dependency_injector = _interopRequireDefault(__webpack_require__( /*! ./core/utils/dependency_injector */ 89656));
                __webpack_require__( /*! ./common/core/localization/currency */ 17333);

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                exports.default = (0, _dependency_injector.default)({
                    format: function(value, format) {
                        const formatIsValid = (0, _type.isString)(format) && "" !== format || (0, _type.isPlainObject)(format) || (0, _type.isFunction)(format);
                        const valueIsValid = (0, _type.isNumeric)(value) || (0, _type.isDate)(value);
                        if (!formatIsValid || !valueIsValid) {
                            return (0, _type.isDefined)(value) ? value.toString() : ""
                        }
                        if ((0, _type.isFunction)(format)) {
                            return format(value)
                        }
                        if ((0, _type.isString)(format)) {
                            format = {
                                type: format
                            }
                        }
                        if ((0, _type.isNumeric)(value)) {
                            return _number.default.format(value, format)
                        }
                        if ((0, _type.isDate)(value)) {
                            return _date2.default.format(value, format)
                        }
                    },
                    getTimeFormat: function(showSecond) {
                        return showSecond ? "longtime" : "shorttime"
                    },
                    _normalizeFormat: function(format) {
                        if (!Array.isArray(format)) {
                            return format
                        }
                        if (1 === format.length) {
                            return format[0]
                        }
                        return function(date) {
                            return format.map((function(formatPart) {
                                return _date2.default.format(date, formatPart)
                            })).join(" ")
                        }
                    },
                    getDateFormatByDifferences: function(dateDifferences, intervalFormat) {
                        const resultFormat = [];
                        const needSpecialSecondFormatter = intervalFormat && dateDifferences.millisecond && !(dateDifferences.year || dateDifferences.month || dateDifferences.day);
                        if (needSpecialSecondFormatter) {
                            const secondFormatter = function(date) {
                                return date.getSeconds() + date.getMilliseconds() / 1e3 + "s"
                            };
                            resultFormat.push(secondFormatter)
                        } else if (dateDifferences.millisecond) {
                            resultFormat.push("millisecond")
                        }
                        if (dateDifferences.hour || dateDifferences.minute || !needSpecialSecondFormatter && dateDifferences.second) {
                            resultFormat.unshift(this.getTimeFormat(dateDifferences.second))
                        }
                        if (dateDifferences.year && dateDifferences.month && dateDifferences.day) {
                            if (intervalFormat && "month" === intervalFormat) {
                                return "monthandyear"
                            } else {
                                resultFormat.unshift("shortdate");
                                return this._normalizeFormat(resultFormat)
                            }
                        }
                        if (dateDifferences.year && dateDifferences.month) {
                            return "monthandyear"
                        }
                        if (dateDifferences.year && dateDifferences.quarter) {
                            return "quarterandyear"
                        }
                        if (dateDifferences.year) {
                            return "year"
                        }
                        if (dateDifferences.quarter) {
                            return "quarter"
                        }
                        if (dateDifferences.month && dateDifferences.day) {
                            if (intervalFormat) {
                                const monthDayFormatter = function(date) {
                                    return _date2.default.getMonthNames("abbreviated")[date.getMonth()] + " " + _date2.default.format(date, "day")
                                };
                                resultFormat.unshift(monthDayFormatter)
                            } else {
                                resultFormat.unshift("monthandday")
                            }
                            return this._normalizeFormat(resultFormat)
                        }
                        if (dateDifferences.month) {
                            return "month"
                        }
                        if (dateDifferences.day) {
                            if (intervalFormat) {
                                resultFormat.unshift("day")
                            } else {
                                const dayFormatter = function(date) {
                                    return _date2.default.format(date, "dayofweek") + ", " + _date2.default.format(date, "day")
                                };
                                resultFormat.unshift(dayFormatter)
                            }
                            return this._normalizeFormat(resultFormat)
                        }
                        return this._normalizeFormat(resultFormat)
                    },
                    getDateFormatByTicks: function(ticks) {
                        let maxDiff;
                        let currentDiff;
                        let i;
                        if (ticks.length > 1) {
                            maxDiff = _date.default.getDatesDifferences(ticks[0], ticks[1]);
                            for (i = 1; i < ticks.length - 1; i++) {
                                currentDiff = _date.default.getDatesDifferences(ticks[i], ticks[i + 1]);
                                if (maxDiff.count < currentDiff.count) {
                                    maxDiff = currentDiff
                                }
                            }
                        } else {
                            maxDiff = {
                                year: true,
                                month: true,
                                day: true,
                                hour: ticks[0].getHours() > 0,
                                minute: ticks[0].getMinutes() > 0,
                                second: ticks[0].getSeconds() > 0,
                                millisecond: ticks[0].getMilliseconds() > 0
                            }
                        }
                        const resultFormat = this.getDateFormatByDifferences(maxDiff);
                        return resultFormat
                    },
                    getDateFormatByTickInterval: function(startValue, endValue, tickInterval) {
                        let dateUnitInterval;
                        const correctDateDifferences = function(dateDifferences, tickInterval, value) {
                            switch (tickInterval) {
                                case "year":
                                case "quarter":
                                    dateDifferences.month = value;
                                case "month":
                                    dateDifferences.day = value;
                                case "week":
                                case "day":
                                    dateDifferences.hour = value;
                                case "hour":
                                    dateDifferences.minute = value;
                                case "minute":
                                    dateDifferences.second = value;
                                case "second":
                                    dateDifferences.millisecond = value
                            }
                        };
                        tickInterval = (0, _type.isString)(tickInterval) ? tickInterval.toLowerCase() : tickInterval;
                        const dateDifferences = _date.default.getDatesDifferences(startValue, endValue);
                        if (startValue !== endValue) {
                            ! function(differences, minDate, maxDate) {
                                if (!maxDate.getMilliseconds() && maxDate.getSeconds()) {
                                    if (maxDate.getSeconds() - minDate.getSeconds() === 1) {
                                        differences.millisecond = true;
                                        differences.second = false
                                    }
                                } else if (!maxDate.getSeconds() && maxDate.getMinutes()) {
                                    if (maxDate.getMinutes() - minDate.getMinutes() === 1) {
                                        differences.second = true;
                                        differences.minute = false
                                    }
                                } else if (!maxDate.getMinutes() && maxDate.getHours()) {
                                    if (maxDate.getHours() - minDate.getHours() === 1) {
                                        differences.minute = true;
                                        differences.hour = false
                                    }
                                } else if (!maxDate.getHours() && maxDate.getDate() > 1) {
                                    if (maxDate.getDate() - minDate.getDate() === 1) {
                                        differences.hour = true;
                                        differences.day = false
                                    }
                                } else if (1 === maxDate.getDate() && maxDate.getMonth()) {
                                    if (maxDate.getMonth() - minDate.getMonth() === 1) {
                                        differences.day = true;
                                        differences.month = false
                                    }
                                } else if (!maxDate.getMonth() && maxDate.getFullYear()) {
                                    if (maxDate.getFullYear() - minDate.getFullYear() === 1) {
                                        differences.month = true;
                                        differences.year = false
                                    }
                                }
                            }(dateDifferences, startValue > endValue ? endValue : startValue, startValue > endValue ? startValue : endValue)
                        }
                        dateUnitInterval = _date.default.getDateUnitInterval(dateDifferences);
                        correctDateDifferences(dateDifferences, dateUnitInterval, true);
                        dateUnitInterval = _date.default.getDateUnitInterval(tickInterval || "second");
                        correctDateDifferences(dateDifferences, dateUnitInterval, false);
                        dateDifferences[{
                            week: "day"
                        } [dateUnitInterval] || dateUnitInterval] = true;
                        const resultFormat = this.getDateFormatByDifferences(dateDifferences);
                        return resultFormat
                    }
                });
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        21001:
            /*!*******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/integration/jquery.js ***!
              \*******************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _jquery = _interopRequireDefault(__webpack_require__( /*! jquery */ 10561));
                var _version = __webpack_require__( /*! ../core/utils/version */ 20142);
                var _error = _interopRequireDefault(__webpack_require__( /*! ../core/utils/error */ 67264));
                var _use_jquery = _interopRequireDefault(__webpack_require__( /*! ./jquery/use_jquery */ 97718));
                __webpack_require__( /*! ./jquery/renderer */ 44603);
                __webpack_require__( /*! ./jquery/hooks */ 76054);
                __webpack_require__( /*! ./jquery/deferred */ 5667);
                __webpack_require__( /*! ./jquery/hold_ready */ 29953);
                __webpack_require__( /*! ./jquery/events */ 27465);
                __webpack_require__( /*! ./jquery/easing */ 24317);
                __webpack_require__( /*! ./jquery/element_data */ 52425);
                __webpack_require__( /*! ./jquery/element */ 79382);
                __webpack_require__( /*! ./jquery/component_registrator */ 52134);
                __webpack_require__( /*! ./jquery/ajax */ 2646);

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const useJQuery = (0, _use_jquery.default)();
                if (useJQuery && (0, _version.compare)(_jquery.default.fn.jquery, [1, 10]) < 0) {
                    throw _error.default.Error("E0012")
                }
            },
        2646:
            /*!************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/integration/jquery/ajax.js ***!
              \************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _jquery = _interopRequireDefault(__webpack_require__( /*! jquery */ 10561));
                var _ajax = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/ajax */ 78670));
                var _use_jquery = _interopRequireDefault(__webpack_require__( /*! ./use_jquery */ 97718));

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const useJQuery = (0, _use_jquery.default)();
                if (useJQuery) {
                    _ajax.default.inject({
                        sendRequest: function(options) {
                            if (!options.responseType && !options.upload) {
                                return _jquery.default.ajax(options)
                            }
                            return this.callBase.apply(this, [options])
                        }
                    })
                }
            },
        52134:
            /*!*****************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/integration/jquery/component_registrator.js ***!
              \*****************************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _jquery = _interopRequireDefault(__webpack_require__( /*! jquery */ 10561));
                var _component_registrator_callbacks = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator_callbacks */ 55771));
                var _errors = _interopRequireDefault(__webpack_require__( /*! ../../core/errors */ 87129));

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                if (_jquery.default) {
                    const registerJQueryComponent = function(name, componentClass) {
                        _jquery.default.fn[name] = function(options) {
                            const isMemberInvoke = "string" === typeof options;
                            let result;
                            if (isMemberInvoke) {
                                const memberName = options;
                                const memberArgs = [].slice.call(arguments).slice(1);
                                this.each((function() {
                                    const instance = componentClass.getInstance(this);
                                    if (!instance) {
                                        throw _errors.default.Error("E0009", name)
                                    }
                                    const member = instance[memberName];
                                    const memberValue = member.apply(instance, memberArgs);
                                    if (void 0 === result) {
                                        result = memberValue
                                    }
                                }))
                            } else {
                                this.each((function() {
                                    const instance = componentClass.getInstance(this);
                                    if (instance) {
                                        instance.option(options)
                                    } else {
                                        new componentClass(this, options)
                                    }
                                }));
                                result = this
                            }
                            return result
                        }
                    };
                    _component_registrator_callbacks.default.add(registerJQueryComponent)
                }
            },
        5667:
            /*!****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/integration/jquery/deferred.js ***!
              \****************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _jquery = _interopRequireDefault(__webpack_require__( /*! jquery */ 10561));
                var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 87739);
                var _version = __webpack_require__( /*! ../../core/utils/version */ 20142);
                var _use_jquery = _interopRequireDefault(__webpack_require__( /*! ./use_jquery */ 97718));

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const useJQuery = (0, _use_jquery.default)();
                if (useJQuery) {
                    const Deferred = _jquery.default.Deferred;
                    const strategy = {
                        Deferred: Deferred
                    };
                    strategy.when = (0, _version.compare)(_jquery.default.fn.jquery, [3]) < 0 ? _jquery.default.when : function(singleArg) {
                        if (0 === arguments.length) {
                            return (new Deferred).resolve()
                        } else if (1 === arguments.length) {
                            return singleArg && singleArg.then ? singleArg : (new Deferred).resolve(singleArg)
                        } else {
                            return _jquery.default.when.apply(_jquery.default, arguments)
                        }
                    };
                    (0, _deferred.setStrategy)(strategy)
                }
            },
        24317:
            /*!**************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/integration/jquery/easing.js ***!
              \**************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _jquery = (e = __webpack_require__( /*! jquery */ 10561), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                var _easing = __webpack_require__( /*! ../../common/core/animation/easing */ 88424);
                if (_jquery.default) {
                    (0, _easing.setEasing)(_jquery.default.easing)
                }
            },
        79382:
            /*!***************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/integration/jquery/element.js ***!
              \***************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.getPublicElementJQuery = getPublicElementJQuery;
                var _element = __webpack_require__( /*! ../../core/element */ 61404);
                var _use_jquery = (e = __webpack_require__( /*! ./use_jquery */ 97718), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                const useJQuery = (0, _use_jquery.default)();

                function getPublicElementJQuery($element) {
                    return $element
                }
                if (useJQuery) {
                    (0, _element.setPublicElementWrapper)(getPublicElementJQuery)
                }
            },
        52425:
            /*!********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/integration/jquery/element_data.js ***!
              \********************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _jquery = _interopRequireDefault(__webpack_require__( /*! jquery */ 10561));
                var _element_data = __webpack_require__( /*! ../../core/element_data */ 74663);
                var _use_jquery = _interopRequireDefault(__webpack_require__( /*! ./use_jquery */ 97718));

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const useJQuery = (0, _use_jquery.default)();
                if (useJQuery) {
                    (0, _element_data.setDataStrategy)(_jquery.default)
                }
            },
        27465:
            /*!**************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/integration/jquery/events.js ***!
              \**************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _jquery = _interopRequireDefault(__webpack_require__( /*! jquery */ 10561));
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/core/events_engine */ 92774));
                var _use_jquery = _interopRequireDefault(__webpack_require__( /*! ./use_jquery */ 97718));
                var _event_registrator_callbacks = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/core/event_registrator_callbacks */ 85030));
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../core/dom_adapter */ 64960));

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const useJQuery = (0, _use_jquery.default)();
                if (useJQuery) {
                    _event_registrator_callbacks.default.add((function(name, eventObject) {
                        _jquery.default.event.special[name] = eventObject
                    }));
                    if (_events_engine.default.passiveEventHandlersSupported()) {
                        _events_engine.default.forcePassiveFalseEventNames.forEach((function(eventName) {
                            _jquery.default.event.special[eventName] = {
                                setup: function(data, namespaces, handler) {
                                    _dom_adapter.default.listen(this, eventName, handler, {
                                        passive: false
                                    })
                                }
                            }
                        }))
                    }
                    _events_engine.default.set({
                        on: function(element) {
                            (0, _jquery.default)(element).on.apply((0, _jquery.default)(element), Array.prototype.slice.call(arguments, 1))
                        },
                        one: function(element) {
                            (0, _jquery.default)(element).one.apply((0, _jquery.default)(element), Array.prototype.slice.call(arguments, 1))
                        },
                        off: function(element) {
                            (0, _jquery.default)(element).off.apply((0, _jquery.default)(element), Array.prototype.slice.call(arguments, 1))
                        },
                        trigger: function(element) {
                            (0, _jquery.default)(element).trigger.apply((0, _jquery.default)(element), Array.prototype.slice.call(arguments, 1))
                        },
                        triggerHandler: function(element) {
                            (0, _jquery.default)(element).triggerHandler.apply((0, _jquery.default)(element), Array.prototype.slice.call(arguments, 1))
                        },
                        Event: _jquery.default.Event
                    })
                }
            },
        29953:
            /*!******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/integration/jquery/hold_ready.js ***!
              \******************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _jquery = _interopRequireDefault(__webpack_require__( /*! jquery */ 10561));
                var _themes_callback = __webpack_require__( /*! ../../ui/themes_callback */ 88737);
                var _ready_callbacks = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/ready_callbacks */ 3122));

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                if (_jquery.default && !_themes_callback.themeReadyCallback.fired()) {
                    const holdReady = _jquery.default.holdReady || _jquery.default.fn.holdReady;
                    holdReady(true);
                    _themes_callback.themeReadyCallback.add((function() {
                        _ready_callbacks.default.add((function() {
                            holdReady(false)
                        }))
                    }))
                }
            },
        76054:
            /*!*************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/integration/jquery/hooks.js ***!
              \*************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _jquery = _interopRequireDefault(__webpack_require__( /*! jquery */ 10561));
                var _use_jquery = _interopRequireDefault(__webpack_require__( /*! ./use_jquery */ 97718));
                var _version = __webpack_require__( /*! ../../core/utils/version */ 20142);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 21274);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 11528);
                var _index = __webpack_require__( /*! ../../common/core/events/utils/index */ 98834);
                var _event_registrator = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/core/event_registrator */ 15273));
                var _hook_touch_props = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/core/hook_touch_props */ 65462));

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const useJQuery = (0, _use_jquery.default)();
                if (useJQuery) {
                    if ((0, _version.compare)(_jquery.default.fn.jquery, [3]) < 0) {
                        const POINTER_TYPE_MAP = {
                            2: "touch",
                            3: "pen",
                            4: "mouse"
                        };
                        (0, _iterator.each)(["MSPointerDown", "MSPointerMove", "MSPointerUp", "MSPointerCancel", "MSPointerOver", "MSPointerOut", "mouseenter", "mouseleave", "pointerdown", "pointermove", "pointerup", "pointercancel", "pointerover", "pointerout", "pointerenter", "pointerleave"], (function() {
                            _jquery.default.event.fixHooks[this] = {
                                filter: function(event, originalEvent) {
                                    const pointerType = originalEvent.pointerType;
                                    if ((0, _type.isNumeric)(pointerType)) {
                                        event.pointerType = POINTER_TYPE_MAP[pointerType]
                                    }
                                    return event
                                },
                                props: _jquery.default.event.mouseHooks.props.concat(["pointerId", "pointerType", "originalTarget", "width", "height", "pressure", "result", "tiltX", "charCode", "tiltY", "detail", "isPrimary", "prevValue"])
                            }
                        }));
                        (0, _iterator.each)(["touchstart", "touchmove", "touchend", "touchcancel"], (function() {
                            _jquery.default.event.fixHooks[this] = {
                                filter: function(event, originalEvent) {
                                    (0, _hook_touch_props.default)((function(name, hook) {
                                        event[name] = hook(originalEvent)
                                    }));
                                    return event
                                },
                                props: _jquery.default.event.mouseHooks.props.concat(["touches", "changedTouches", "targetTouches", "detail", "result", "originalTarget", "charCode", "prevValue"])
                            }
                        }));
                        _jquery.default.event.fixHooks.wheel = _jquery.default.event.mouseHooks;
                        const DX_EVENT_HOOKS = {
                            props: _jquery.default.event.mouseHooks.props.concat(["pointerType", "pointerId", "pointers"])
                        };
                        _event_registrator.default.callbacks.add((function(name) {
                            _jquery.default.event.fixHooks[name] = DX_EVENT_HOOKS
                        }));
                        const fix = function(event, originalEvent) {
                            const fixHook = _jquery.default.event.fixHooks[originalEvent.type] || _jquery.default.event.mouseHooks;
                            const props = fixHook.props ? _jquery.default.event.props.concat(fixHook.props) : _jquery.default.event.props;
                            let propIndex = props.length;
                            while (propIndex--) {
                                const prop = props[propIndex];
                                event[prop] = originalEvent[prop]
                            }
                            return fixHook.filter ? fixHook.filter(event, originalEvent) : event
                        };
                        (0, _index.setEventFixMethod)(fix)
                    } else {
                        (0, _hook_touch_props.default)((function(name, hook) {
                            _jquery.default.event.addProp(name, hook)
                        }))
                    }
                }
            },
        44603:
            /*!****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/integration/jquery/renderer.js ***!
              \****************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _jquery = _interopRequireDefault(__webpack_require__( /*! jquery */ 10561));
                var _renderer_base = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer_base */ 21681));
                var _use_jquery = _interopRequireDefault(__webpack_require__( /*! ./use_jquery */ 97718));

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const useJQuery = (0, _use_jquery.default)();
                if (useJQuery) {
                    _renderer_base.default.set(_jquery.default)
                }
            },
        97718:
            /*!******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/integration/jquery/use_jquery.js ***!
              \******************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = function() {
                    return _jquery.default && (0, _config.default)().useJQuery
                };
                var _jquery = _interopRequireDefault(__webpack_require__( /*! jquery */ 10561));
                var _config = _interopRequireDefault(__webpack_require__( /*! ../../core/config */ 66636));

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const useJQuery = (0, _config.default)().useJQuery;
                if (_jquery.default && false !== useJQuery) {
                    (0, _config.default)({
                        useJQuery: true
                    })
                }
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        34563:
            /*!*********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/integration/knockout.js ***!
              \*********************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _knockout = _interopRequireDefault(__webpack_require__( /*! knockout */ 78117));
                var _errors = _interopRequireDefault(__webpack_require__( /*! ../core/errors */ 87129));
                var _version = __webpack_require__( /*! ../core/utils/version */ 20142);
                __webpack_require__( /*! ./knockout/component_registrator */ 90340);
                __webpack_require__( /*! ./knockout/event_registrator */ 74899);
                __webpack_require__( /*! ./knockout/components */ 38382);
                __webpack_require__( /*! ./knockout/validation */ 86281);
                __webpack_require__( /*! ./knockout/variable_wrapper_utils */ 71592);
                __webpack_require__( /*! ./knockout/clean_node */ 12420);
                __webpack_require__( /*! ./knockout/clean_node_old */ 41262);

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                if (_knockout.default) {
                    if ((0, _version.compare)(_knockout.default.version, [2, 3]) < 0) {
                        throw _errors.default.Error("E0013")
                    }
                }
            },
        12420:
            /*!********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/integration/knockout/clean_node.js ***!
              \********************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _element_data = __webpack_require__( /*! ../../core/element_data */ 74663);
                var _knockout = (e = __webpack_require__( /*! knockout */ 78117), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                var _version = __webpack_require__( /*! ../../core/utils/version */ 20142);
                var _utils = __webpack_require__( /*! ./utils */ 43941);
                if (_knockout.default) {
                    const originalKOCleanExternalData = _knockout.default.utils.domNodeDisposal.cleanExternalData;
                    const patchCleanData = function() {
                        (0, _element_data.afterCleanData)((function(nodes) {
                            let i;
                            for (i = 0; i < nodes.length; i++) {
                                nodes[i].cleanedByJquery = true
                            }
                            for (i = 0; i < nodes.length; i++) {
                                if (!nodes[i].cleanedByKo) {
                                    _knockout.default.cleanNode(nodes[i])
                                }
                                delete nodes[i].cleanedByKo
                            }
                            for (i = 0; i < nodes.length; i++) {
                                delete nodes[i].cleanedByJquery
                            }
                        }));
                        _knockout.default.utils.domNodeDisposal.cleanExternalData = function(node) {
                            node.cleanedByKo = true;
                            if ((0, _utils.getClosestNodeWithKoCreation)(node)) {
                                if (!node.cleanedByJquery) {
                                    (0, _element_data.cleanData)([node])
                                }
                            }
                        }
                    };
                    const restoreOriginCleanData = function() {
                        (0, _element_data.afterCleanData)((function() {}));
                        _knockout.default.utils.domNodeDisposal.cleanExternalData = originalKOCleanExternalData
                    };
                    patchCleanData();
                    _element_data.strategyChanging.add((function(strategy) {
                        const isJQuery = !!strategy.fn;
                        if (isJQuery && (0, _version.compare)(strategy.fn.jquery, [2, 0]) < 0) {
                            restoreOriginCleanData()
                        }
                    }))
                }
            },
        41262:
            /*!************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/integration/knockout/clean_node_old.js ***!
              \************************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _knockout = (e = __webpack_require__( /*! knockout */ 78117), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                var _version = __webpack_require__( /*! ../../core/utils/version */ 20142);
                var _element_data = __webpack_require__( /*! ../../core/element_data */ 74663);
                if (_knockout.default) {
                    const patchCleanData = function(jQuery) {
                        const cleanKoData = function(element, andSelf) {
                            const cleanNode = function() {
                                _knockout.default.cleanNode(this)
                            };
                            if (andSelf) {
                                element.each(cleanNode)
                            } else {
                                element.find("*").each(cleanNode)
                            }
                        };
                        const originalEmpty = jQuery.fn.empty;
                        jQuery.fn.empty = function() {
                            cleanKoData(this, false);
                            return originalEmpty.apply(this, arguments)
                        };
                        const originalRemove = jQuery.fn.remove;
                        jQuery.fn.remove = function(selector, keepData) {
                            if (!keepData) {
                                let subject = this;
                                if (selector) {
                                    subject = subject.filter(selector)
                                }
                                cleanKoData(subject, true)
                            }
                            return originalRemove.call(this, selector, keepData)
                        };
                        const originalHtml = jQuery.fn.html;
                        jQuery.fn.html = function(value) {
                            if ("string" === typeof value) {
                                cleanKoData(this, false)
                            }
                            return originalHtml.apply(this, arguments)
                        };
                        const originalReplaceWith = jQuery.fn.replaceWith;
                        jQuery.fn.replaceWith = function() {
                            const result = originalReplaceWith.apply(this, arguments);
                            if (!this.parent().length) {
                                cleanKoData(this, true)
                            }
                            return result
                        }
                    };
                    _element_data.strategyChanging.add((function(strategy) {
                        const isJQuery = !!strategy.fn;
                        if (isJQuery && (0, _version.compare)(strategy.fn.jquery, [2, 0]) < 0) {
                            patchCleanData(strategy)
                        }
                    }))
                }
            },
        90340:
            /*!*******************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/integration/knockout/component_registrator.js ***!
              \*******************************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553));
                var _knockout = _interopRequireDefault(__webpack_require__( /*! knockout */ 78117));
                var _callbacks = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/callbacks */ 84718));
                var _type = __webpack_require__( /*! ../../core/utils/type */ 11528);
                var _component_registrator_callbacks = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator_callbacks */ 55771));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../../ui/widget/ui.widget */ 11118));
                var _m_base_widget = _interopRequireDefault(__webpack_require__( /*! ../../__internal/viz/core/m_base_widget */ 34506));
                var _component_wrapper = __webpack_require__( /*! ../../__internal/core/r1/component_wrapper */ 34993);
                var _draggable = _interopRequireDefault(__webpack_require__( /*! ../../ui/draggable */ 5298));
                var _scroll_view = _interopRequireDefault(__webpack_require__( /*! ../../ui/scroll_view */ 91374));
                var _template = __webpack_require__( /*! ./template */ 36332);
                var _editor = _interopRequireDefault(__webpack_require__( /*! ../../ui/editor/editor */ 78694));
                var _locker = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/locker */ 50512));
                var _utils = __webpack_require__( /*! ./utils */ 43941);
                var _config = _interopRequireDefault(__webpack_require__( /*! ../../core/config */ 66636));

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                if (_knockout.default) {
                    const LOCKS_DATA_KEY = "dxKoLocks";
                    const CREATED_WITH_KO_DATA_KEY = "dxKoCreation";
                    const editorsBindingHandlers = [];
                    const registerComponentKoBinding = function(componentName, componentClass) {
                        if (_editor.default.isEditor(componentClass.prototype)) {
                            editorsBindingHandlers.push(componentName)
                        }
                        _knockout.default.bindingHandlers[componentName] = {
                            init: function(domNode, valueAccessor) {
                                const $element = (0, _renderer.default)(domNode);
                                const optionChangedCallbacks = (0, _callbacks.default)();
                                let optionsByReference = {};
                                let component;
                                const knockoutConfig = (0, _config.default)().knockout;
                                const isBindingPropertyPredicateName = knockoutConfig && knockoutConfig.isBindingPropertyPredicateName;
                                let isBindingPropertyPredicate;
                                let ctorOptions = {
                                    onInitializing: function(options) {
                                        optionsByReference = this._getOptionsByReference();
                                        _knockout.default.computed((() => {
                                            const model = _knockout.default.unwrap(valueAccessor());
                                            if (component) {
                                                component.beginUpdate()
                                            }
                                            isBindingPropertyPredicate = isBindingPropertyPredicateName && model && model[isBindingPropertyPredicateName];
                                            unwrapModel(model);
                                            if (component) {
                                                component.endUpdate()
                                            } else {
                                                var _model$onInitializing;
                                                null === model || void 0 === model || null === (_model$onInitializing = model.onInitializing) || void 0 === _model$onInitializing || _model$onInitializing.call(this, options)
                                            }
                                        }), null, {
                                            disposeWhenNodeIsRemoved: domNode
                                        });
                                        component = this
                                    },
                                    modelByElement: function($element) {
                                        if ($element.length) {
                                            const node = (0, _utils.getClosestNodeWithContext)($element.get(0));
                                            return _knockout.default.dataFor(node)
                                        }
                                    },
                                    nestedComponentOptions: function(component) {
                                        return {
                                            modelByElement: component.option("modelByElement"),
                                            nestedComponentOptions: component.option("nestedComponentOptions")
                                        }
                                    },
                                    _optionChangedCallbacks: optionChangedCallbacks,
                                    integrationOptions: {
                                        watchMethod: function(fn, callback, options) {
                                            options = options || {};
                                            let skipCallback = options.skipImmediate;
                                            const watcher = _knockout.default.computed((function() {
                                                const newValue = _knockout.default.unwrap(fn());
                                                if (!skipCallback) {
                                                    callback(newValue)
                                                }
                                                skipCallback = false
                                            }));
                                            return function() {
                                                watcher.dispose()
                                            }
                                        },
                                        templates: {
                                            "dx-polymorph-widget": {
                                                render: function(options) {
                                                    const widgetName = _knockout.default.utils.unwrapObservable(options.model.widget);
                                                    if (!widgetName) {
                                                        return
                                                    }
                                                    const markup = (0, _renderer.default)("<div>").attr("data-bind", widgetName + ": options").get(0);
                                                    (0, _renderer.default)(options.container).append(markup);
                                                    _knockout.default.applyBindings(options.model, markup)
                                                }
                                            }
                                        },
                                        createTemplate: function(element) {
                                            return new _template.KoTemplate(element)
                                        }
                                    }
                                };
                                const optionNameToModelMap = {};
                                const applyModelValueToOption = function(optionName, modelValue, unwrap) {
                                    const locks = $element.data(LOCKS_DATA_KEY);
                                    const optionValue = unwrap ? _knockout.default.unwrap(modelValue) : modelValue;
                                    if (_knockout.default.isWriteableObservable(modelValue)) {
                                        optionNameToModelMap[optionName] = modelValue
                                    }
                                    if (component) {
                                        if (locks.locked(optionName)) {
                                            return
                                        }
                                        locks.obtain(optionName);
                                        try {
                                            if (_knockout.default.ignoreDependencies) {
                                                _knockout.default.ignoreDependencies(component.option, component, [optionName, optionValue])
                                            } else {
                                                component.option(optionName, optionValue)
                                            }
                                        } finally {
                                            locks.release(optionName)
                                        }
                                    } else {
                                        ctorOptions[optionName] = optionValue
                                    }
                                };
                                const handleOptionChanged = function(args) {
                                    const optionName = args.fullName;
                                    const optionValue = args.value;
                                    if (!(optionName in optionNameToModelMap)) {
                                        return
                                    }
                                    const $element = this._$element;
                                    const locks = $element.data(LOCKS_DATA_KEY);
                                    if (locks.locked(optionName)) {
                                        return
                                    }
                                    locks.obtain(optionName);
                                    try {
                                        optionNameToModelMap[optionName](optionValue)
                                    } finally {
                                        locks.release(optionName)
                                    }
                                };
                                const unwrapModelValue = function(currentModel, propertyName, propertyPath) {
                                    if (propertyPath === isBindingPropertyPredicateName) {
                                        return
                                    }
                                    if (!isBindingPropertyPredicate || isBindingPropertyPredicate(propertyPath, propertyName, currentModel)) {
                                        let unwrappedPropertyValue;
                                        _knockout.default.computed((function() {
                                            const propertyValue = currentModel[propertyName];
                                            applyModelValueToOption(propertyPath, propertyValue, true);
                                            unwrappedPropertyValue = _knockout.default.unwrap(propertyValue)
                                        }), null, {
                                            disposeWhenNodeIsRemoved: domNode
                                        });
                                        if ((0, _type.isPlainObject)(unwrappedPropertyValue)) {
                                            if (!optionsByReference[propertyPath]) {
                                                unwrapModel(unwrappedPropertyValue, propertyPath)
                                            }
                                        }
                                    } else {
                                        applyModelValueToOption(propertyPath, currentModel[propertyName], false)
                                    }
                                };

                                function unwrapModel(model, propertyPath) {
                                    for (const propertyName in model) {
                                        if (Object.prototype.hasOwnProperty.call(model, propertyName)) {
                                            unwrapModelValue(model, propertyName, propertyPath ? [propertyPath, propertyName].join(".") : propertyName)
                                        }
                                    }
                                }! function() {
                                    optionChangedCallbacks.add(handleOptionChanged);
                                    $element.data(CREATED_WITH_KO_DATA_KEY, true).data(LOCKS_DATA_KEY, new _locker.default);
                                    new componentClass($element, ctorOptions);
                                    ctorOptions = null
                                }();
                                return {
                                    controlsDescendantBindings: componentClass.subclassOf(_ui.default) || componentClass.subclassOf(_m_base_widget.default) || componentClass.subclassOf(_component_wrapper.ComponentWrapper) && !(component instanceof _scroll_view.default) || component instanceof _draggable.default
                                }
                            }
                        };
                        if ("dxValidator" === componentName) {
                            _knockout.default.bindingHandlers.dxValidator.after = editorsBindingHandlers
                        }
                    };
                    _component_registrator_callbacks.default.add((function(name, componentClass) {
                        registerComponentKoBinding(name, componentClass)
                    }))
                }
            },
        38382:
            /*!********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/integration/knockout/components.js ***!
              \********************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _knockout = (e = __webpack_require__( /*! knockout */ 78117), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                var _icon = __webpack_require__( /*! ../../core/utils/icon */ 69629);
                if (_knockout.default) {
                    _knockout.default.bindingHandlers.dxControlsDescendantBindings = {
                        init: function(_, valueAccessor) {
                            return {
                                controlsDescendantBindings: _knockout.default.unwrap(valueAccessor())
                            }
                        }
                    };
                    _knockout.default.bindingHandlers.dxIcon = {
                        init: function(element, valueAccessor) {
                            const options = _knockout.default.utils.unwrapObservable(valueAccessor()) || {};
                            const iconElement = (0, _icon.getImageContainer)(options);
                            _knockout.default.virtualElements.emptyNode(element);
                            if (iconElement) {
                                _knockout.default.virtualElements.prepend(element, iconElement.get(0))
                            }
                        },
                        update: function(element, valueAccessor) {
                            const options = _knockout.default.utils.unwrapObservable(valueAccessor()) || {};
                            const iconElement = (0, _icon.getImageContainer)(options);
                            _knockout.default.virtualElements.emptyNode(element);
                            if (iconElement) {
                                _knockout.default.virtualElements.prepend(element, iconElement.get(0))
                            }
                        }
                    };
                    _knockout.default.virtualElements.allowedBindings.dxIcon = true
                }
            },
        74899:
            /*!***************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/integration/knockout/event_registrator.js ***!
              \***************************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553));
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/core/events_engine */ 92774));
                var _knockout = _interopRequireDefault(__webpack_require__( /*! knockout */ 78117));
                var _type = __webpack_require__( /*! ../../core/utils/type */ 11528);
                var _event_registrator_callbacks = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/core/event_registrator_callbacks */ 85030));
                var _index = __webpack_require__( /*! ../../common/core/events/utils/index */ 98834);

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                if (_knockout.default) {
                    _event_registrator_callbacks.default.add((function(name) {
                        const koBindingEventName = (0, _index.addNamespace)(name, name + "Binding");
                        _knockout.default.bindingHandlers[name] = {
                            update: function(element, valueAccessor, allBindingsAccessor, viewModel) {
                                const $element = (0, _renderer.default)(element);
                                const unwrappedValue = _knockout.default.utils.unwrapObservable(valueAccessor());
                                const eventSource = unwrappedValue.execute ? unwrappedValue.execute : unwrappedValue;
                                _events_engine.default.off($element, koBindingEventName);
                                _events_engine.default.on($element, koBindingEventName, (0, _type.isPlainObject)(unwrappedValue) ? unwrappedValue : {}, (function(e) {
                                    eventSource.call(viewModel, viewModel, e)
                                }))
                            }
                        }
                    }))
                }
            },
        36332:
            /*!******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/integration/knockout/template.js ***!
              \******************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.KoTemplate = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553));
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../core/dom_adapter */ 64960));
                var _knockout = _interopRequireDefault(__webpack_require__( /*! knockout */ 78117));
                var _type = __webpack_require__( /*! ../../core/utils/type */ 11528);
                var _template_base = __webpack_require__( /*! ../../core/templates/template_base */ 42186);
                var _dom = __webpack_require__( /*! ../../core/utils/dom */ 86858);
                var _utils = __webpack_require__( /*! ./utils */ 43941);

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const KoTemplate = class extends _template_base.TemplateBase {
                    constructor(element) {
                        super();
                        this._element = element;
                        this._template = (0, _renderer.default)("<div>").append((0, _dom.normalizeTemplateElement)(element));
                        this._registerKoTemplate()
                    }
                    _registerKoTemplate() {
                        const template = this._template.get(0);
                        new _knockout.default.templateSources.anonymousTemplate(template).nodes(template)
                    }
                    _prepareDataForContainer(data, container) {
                        if (container && container.length) {
                            const node = (0, _utils.getClosestNodeWithContext)(container.get(0));
                            const containerContext = _knockout.default.contextFor(node);
                            data = void 0 !== data ? data : _knockout.default.dataFor(node) || {};
                            if (containerContext) {
                                return data === containerContext.$data ? containerContext : containerContext.createChildContext(data)
                            }
                        }
                        return function(data) {
                            const parentNode = _dom_adapter.default.createElement("div");
                            _knockout.default.applyBindingsToNode(parentNode, null, data);
                            const parentContext = _knockout.default.contextFor(parentNode);
                            _knockout.default.cleanNode(parentNode);
                            return parentContext
                        }(data).createChildContext(data)
                    }
                    _renderCore(options) {
                        const model = this._prepareDataForContainer(options.model, (0, _renderer.default)(options.container));
                        if ((0, _type.isDefined)(options.index)) {
                            model.$index = options.index
                        }
                        const $placeholder = (0, _renderer.default)("<div>").appendTo(options.container);
                        let $result;
                        _knockout.default.renderTemplate(this._template.get(0), model, {
                            afterRender: function(nodes) {
                                $result = (0, _renderer.default)(nodes)
                            }
                        }, $placeholder.get(0), "replaceNode");
                        return $result
                    }
                    source() {
                        return (0, _renderer.default)(this._element).clone()
                    }
                    dispose() {
                        this._template.remove()
                    }
                };
                exports.KoTemplate = KoTemplate
            },
        43941:
            /*!***************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/integration/knockout/utils.js ***!
              \***************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.getClosestNodeWithKoCreation = exports.getClosestNodeWithContext = void 0;
                var _knockout = _interopRequireDefault(__webpack_require__( /*! knockout */ 78117));
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553));

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const getClosestNodeWithContext = node => {
                    const context = _knockout.default.contextFor(node);
                    if (!context && node.parentNode) {
                        return getClosestNodeWithContext(node.parentNode)
                    }
                    return node
                };
                exports.getClosestNodeWithContext = getClosestNodeWithContext;
                const getClosestNodeWithKoCreation = node => {
                    const $el = (0, _renderer.default)(node);
                    const data = $el.data();
                    const hasFlag = data && data.dxKoCreation;
                    if (hasFlag) {
                        return node
                    }
                    if (node.parentNode) {
                        return getClosestNodeWithKoCreation(node.parentNode)
                    }
                    return null
                };
                exports.getClosestNodeWithKoCreation = getClosestNodeWithKoCreation
            },
        86281:
            /*!********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/integration/knockout/validation.js ***!
              \********************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 21274);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576);
                var _class = _interopRequireDefault(__webpack_require__( /*! ../../core/class */ 55620));
                var _events_strategy = __webpack_require__( /*! ../../core/events_strategy */ 2607);
                var _validation_engine = _interopRequireDefault(__webpack_require__( /*! ../../ui/validation_engine */ 19391));
                var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 87739);
                var _guid = _interopRequireDefault(__webpack_require__( /*! ../../core/guid */ 19427));
                var _knockout = _interopRequireDefault(__webpack_require__( /*! knockout */ 78117));

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                if (_knockout.default) {
                    const VALIDATION_STATUS_VALID = "valid";
                    const VALIDATION_STATUS_PENDING = "pending";
                    const koDxValidator = _class.default.inherit({
                        ctor(target, _ref) {
                            let {
                                name: name,
                                validationRules: validationRules
                            } = _ref;
                            this.target = target;
                            this.name = name;
                            this.isValid = _knockout.default.observable(true);
                            this.validationError = _knockout.default.observable();
                            this.validationErrors = _knockout.default.observable();
                            this.validationStatus = _knockout.default.observable(VALIDATION_STATUS_VALID);
                            this._eventsStrategy = new _events_strategy.EventsStrategy(this);
                            this.validationRules = (0, _iterator.map)(validationRules, ((rule, index) => (0, _extend.extend)({}, rule, {
                                validator: this,
                                index: index
                            })));
                            this._validationInfo = {
                                result: null,
                                deferred: null
                            }
                        },
                        _updateValidationResult(result) {
                            if (!this._validationInfo.result || this._validationInfo.result.id !== result.id) {
                                const complete = this._validationInfo.deferred && this._validationInfo.result.complete;
                                this._validationInfo.result = (0, _extend.extend)({}, result, {
                                    complete: complete
                                })
                            } else {
                                for (const prop in result) {
                                    if ("id" !== prop && "complete" !== prop) {
                                        this._validationInfo.result[prop] = result[prop]
                                    }
                                }
                            }
                        },
                        validate() {
                            const currentResult = this._validationInfo && this._validationInfo.result;
                            const value = this.target();
                            if (currentResult && currentResult.status === VALIDATION_STATUS_PENDING && currentResult.value === value) {
                                return (0, _extend.extend)({}, currentResult)
                            }
                            const result = _validation_engine.default.validate(value, this.validationRules, this.name);
                            result.id = (new _guid.default).toString();
                            this._applyValidationResult(result);
                            result.complete && result.complete.then((res => {
                                if (res.id === this._validationInfo.result.id) {
                                    this._applyValidationResult(res)
                                }
                            }));
                            return (0, _extend.extend)({}, this._validationInfo.result)
                        },
                        reset() {
                            this.target(null);
                            const result = {
                                id: null,
                                isValid: true,
                                brokenRule: null,
                                pendingRules: null,
                                status: VALIDATION_STATUS_VALID,
                                complete: null
                            };
                            this._applyValidationResult(result);
                            return result
                        },
                        _applyValidationResult(result) {
                            result.validator = this;
                            this._updateValidationResult(result);
                            this.target.dxValidator.isValid(this._validationInfo.result.isValid);
                            this.target.dxValidator.validationError(this._validationInfo.result.brokenRule);
                            this.target.dxValidator.validationErrors(this._validationInfo.result.brokenRules);
                            this.target.dxValidator.validationStatus(this._validationInfo.result.status);
                            if (result.status === VALIDATION_STATUS_PENDING) {
                                if (!this._validationInfo.deferred) {
                                    this._validationInfo.deferred = new _deferred.Deferred;
                                    this._validationInfo.result.complete = this._validationInfo.deferred.promise()
                                }
                                this._eventsStrategy.fireEvent("validating", [this._validationInfo.result]);
                                return
                            }
                            if (result.status !== VALIDATION_STATUS_PENDING) {
                                this._eventsStrategy.fireEvent("validated", [result]);
                                if (this._validationInfo.deferred) {
                                    this._validationInfo.deferred.resolve(result);
                                    this._validationInfo.deferred = null
                                }
                            }
                        },
                        on(eventName, eventHandler) {
                            this._eventsStrategy.on(eventName, eventHandler);
                            return this
                        },
                        off(eventName, eventHandler) {
                            this._eventsStrategy.off(eventName, eventHandler);
                            return this
                        }
                    });
                    _knockout.default.extenders.dxValidator = function(target, option) {
                        target.dxValidator = new koDxValidator(target, option);
                        target.subscribe(target.dxValidator.validate.bind(target.dxValidator));
                        return target
                    };
                    _validation_engine.default.registerModelForValidation = function(model) {
                        (0, _iterator.each)(model, (function(name, member) {
                            if (_knockout.default.isObservable(member) && member.dxValidator) {
                                _validation_engine.default.registerValidatorInGroup(model, member.dxValidator)
                            }
                        }))
                    };
                    _validation_engine.default.unregisterModelForValidation = function(model) {
                        (0, _iterator.each)(model, (function(name, member) {
                            if (_knockout.default.isObservable(member) && member.dxValidator) {
                                _validation_engine.default.removeRegisteredValidator(model, member.dxValidator)
                            }
                        }))
                    };
                    _validation_engine.default.validateModel = _validation_engine.default.validateGroup
                }
            },
        71592:
            /*!********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/integration/knockout/variable_wrapper_utils.js ***!
              \********************************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _knockout = _interopRequireDefault(__webpack_require__( /*! knockout */ 78117));
                var _variable_wrapper = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/variable_wrapper */ 40216));

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                if (_knockout.default) {
                    _variable_wrapper.default.inject({
                        isWrapped: _knockout.default.isObservable,
                        isWritableWrapped: _knockout.default.isWritableObservable,
                        wrap: _knockout.default.observable,
                        unwrap: function(value) {
                            if (_knockout.default.isObservable(value)) {
                                return _knockout.default.utils.unwrapObservable(value)
                            }
                            return this.callBase(value)
                        },
                        assign: function(variable, value) {
                            if (_knockout.default.isObservable(variable)) {
                                variable(value)
                            } else {
                                this.callBase(variable, value)
                            }
                        }
                    })
                }
            },
        49077:
            /*!*************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/localization.js ***!
              \*************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "formatDate", {
                    enumerable: true,
                    get: function() {
                        return _localization.formatDate
                    }
                });
                Object.defineProperty(exports, "formatMessage", {
                    enumerable: true,
                    get: function() {
                        return _localization.formatMessage
                    }
                });
                Object.defineProperty(exports, "formatNumber", {
                    enumerable: true,
                    get: function() {
                        return _localization.formatNumber
                    }
                });
                Object.defineProperty(exports, "loadMessages", {
                    enumerable: true,
                    get: function() {
                        return _localization.loadMessages
                    }
                });
                Object.defineProperty(exports, "locale", {
                    enumerable: true,
                    get: function() {
                        return _localization.locale
                    }
                });
                Object.defineProperty(exports, "parseDate", {
                    enumerable: true,
                    get: function() {
                        return _localization.parseDate
                    }
                });
                Object.defineProperty(exports, "parseNumber", {
                    enumerable: true,
                    get: function() {
                        return _localization.parseNumber
                    }
                });
                var _localization = __webpack_require__( /*! ./common/core/localization */ 46795)
            },
        16615:
            /*!****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/localization/globalize/core.js ***!
              \****************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                __webpack_require__( /*! ../../common/core/localization/globalize/core */ 23805)
            },
        89207:
            /*!********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/localization/globalize/currency.js ***!
              \********************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                __webpack_require__( /*! ../../common/core/localization/globalize/currency */ 869)
            },
        94348:
            /*!****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/localization/globalize/date.js ***!
              \****************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                __webpack_require__( /*! ../../common/core/localization/globalize/date */ 99862)
            },
        30725:
            /*!*******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/localization/globalize/message.js ***!
              \*******************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                __webpack_require__( /*! ../../common/core/localization/globalize/message */ 84207)
            },
        36069:
            /*!******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/localization/globalize/number.js ***!
              \******************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                __webpack_require__( /*! ../../common/core/localization/globalize/number */ 13203)
            },
        90270:
            /*!************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/mobile/hide_top_overlay.js ***!
              \************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _environment = __webpack_require__( /*! ../common/core/environment */ 63705);
                exports.default = _environment.hideTopOverlay;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        21113:
            /*!****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/mobile/init_mobile_viewport.js ***!
              \****************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _environment = __webpack_require__( /*! ../common/core/environment */ 63705);
                exports.default = _environment.initMobileViewport;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        72134:
            /*!*************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/pdf_exporter.js ***!
              \*************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "exportDataGrid", {
                    enumerable: true,
                    get: function() {
                        return _pdf.exportDataGrid
                    }
                });
                Object.defineProperty(exports, "exportDataGridWithAutoTable", {
                    enumerable: true,
                    get: function() {
                        return _export_data_grid.exportDataGrid
                    }
                });
                Object.defineProperty(exports, "exportGantt", {
                    enumerable: true,
                    get: function() {
                        return _pdf.exportGantt
                    }
                });
                var _pdf = __webpack_require__( /*! ./common/export/pdf */ 92731);
                var _export_data_grid = __webpack_require__( /*! ./exporter/jspdf/autotable/export_data_grid */ 89222)
            },
        53200:
            /*!****************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/time_zone_utils.js ***!
              \****************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "getTimeZones", {
                    enumerable: true,
                    get: function() {
                        return _environment.getTimeZones
                    }
                });
                var _environment = __webpack_require__( /*! ./common/core/environment */ 63705)
            },
        5298:
            /*!*************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/draggable.js ***!
              \*************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _m_draggable = (e = __webpack_require__( /*! ../__internal/m_draggable */ 89983), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                exports.default = _m_draggable.default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        78694:
            /*!*****************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/editor/editor.js ***!
              \*****************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _editor = (e = __webpack_require__( /*! ../../__internal/ui/editor/editor */ 24768), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                exports.default = _editor.default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        11979:
            /*!******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/load_indicator.js ***!
              \******************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _m_load_indicator = (e = __webpack_require__( /*! ../__internal/ui/m_load_indicator */ 52621), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                exports.default = _m_load_indicator.default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        31876:
            /*!**************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/load_panel.js ***!
              \**************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _m_load_panel = (e = __webpack_require__( /*! ../__internal/ui/m_load_panel */ 14474), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                exports.default = _m_load_panel.default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        91374:
            /*!***************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/scroll_view.js ***!
              \***************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _m_scroll_view = (e = __webpack_require__( /*! ../__internal/ui/scroll_view/m_scroll_view */ 97972), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                exports.default = _m_scroll_view.default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        56417:
            /*!********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/shared/filtering.js ***!
              \********************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _type = __webpack_require__( /*! ../../core/utils/type */ 11528);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 21274);
                const DEFAULT_DATE_INTERVAL = ["year", "month", "day"];
                const DEFAULT_DATETIME_INTERVAL = ["year", "month", "day", "hour", "minute"];
                const isDateType = function(dataType) {
                    return "date" === dataType || "datetime" === dataType
                };
                const getGroupInterval = function(column) {
                    let index;
                    let result = [];
                    const dateIntervals = ["year", "month", "day", "hour", "minute", "second"];
                    const groupInterval = column.headerFilter && column.headerFilter.groupInterval;
                    const interval = "quarter" === groupInterval ? "month" : groupInterval;
                    if (isDateType(column.dataType) && null !== groupInterval) {
                        result = "datetime" === column.dataType ? DEFAULT_DATETIME_INTERVAL : DEFAULT_DATE_INTERVAL;
                        index = dateIntervals.indexOf(interval);
                        if (index >= 0) {
                            result = dateIntervals.slice(0, index);
                            result.push(groupInterval);
                            return result
                        }
                        return result
                    } else if ((0, _type.isDefined)(groupInterval)) {
                        return Array.isArray(groupInterval) ? groupInterval : [groupInterval]
                    }
                };
                exports.default = function() {
                    const getFilterSelector = function(column, target) {
                        let selector = column.dataField || column.selector;
                        if ("search" === target) {
                            selector = column.displayField || function(column) {
                                var _column$calculateDisp;
                                return null !== (_column$calculateDisp = column.calculateDisplayValue) && void 0 !== _column$calculateDisp && _column$calculateDisp.context ? column.calculateDisplayValue : null
                            }(column) || selector
                        }
                        return selector
                    };
                    const getFilterExpressionByRange = function(filterValue, target) {
                        const column = this;
                        let endFilterValue;
                        let startFilterExpression;
                        let endFilterExpression;
                        const selector = getFilterSelector(column, target);
                        if (Array.isArray(filterValue) && (0, _type.isDefined)(filterValue[0]) && (0, _type.isDefined)(filterValue[1])) {
                            startFilterExpression = [selector, ">=", filterValue[0]];
                            endFilterExpression = [selector, "<=", filterValue[1]];
                            if (isDateType(column.dataType) && (date = filterValue[1], date.getHours() + date.getMinutes() + date.getSeconds() + date.getMilliseconds() < 1)) {
                                endFilterValue = new Date(filterValue[1].getTime());
                                if ("date" === column.dataType) {
                                    endFilterValue.setDate(filterValue[1].getDate() + 1)
                                }
                                endFilterExpression = [selector, "<", endFilterValue]
                            }
                            return [startFilterExpression, "and", endFilterExpression]
                        }
                        var date
                    };
                    const getFilterExpressionForDate = function(filterValue, selectedFilterOperation, target) {
                        const column = this;
                        let dateStart;
                        let dateEnd;
                        let dateInterval;
                        const values = function(dateValue) {
                            if ((0, _type.isDate)(dateValue)) {
                                return [dateValue.getFullYear(), dateValue.getMonth(), dateValue.getDate(), dateValue.getHours(), dateValue.getMinutes(), dateValue.getSeconds()]
                            }
                            return (0, _iterator.map)(("" + dateValue).split("/"), (function(value, index) {
                                return 1 === index ? Number(value) - 1 : Number(value)
                            }))
                        }(filterValue);
                        const selector = getFilterSelector(column, target);
                        if ("headerFilter" === target) {
                            dateInterval = getGroupInterval(column)[values.length - 1]
                        } else if ("datetime" === column.dataType) {
                            dateInterval = "minute"
                        }
                        switch (dateInterval) {
                            case "year":
                                dateStart = new Date(values[0], 0, 1);
                                dateEnd = new Date(values[0] + 1, 0, 1);
                                break;
                            case "month":
                                dateStart = new Date(values[0], values[1], 1);
                                dateEnd = new Date(values[0], values[1] + 1, 1);
                                break;
                            case "quarter":
                                dateStart = new Date(values[0], 3 * values[1], 1);
                                dateEnd = new Date(values[0], 3 * values[1] + 3, 1);
                                break;
                            case "hour":
                                dateStart = new Date(values[0], values[1], values[2], values[3]);
                                dateEnd = new Date(values[0], values[1], values[2], values[3] + 1);
                                break;
                            case "minute":
                                dateStart = new Date(values[0], values[1], values[2], values[3], values[4]);
                                dateEnd = new Date(values[0], values[1], values[2], values[3], values[4] + 1);
                                break;
                            case "second":
                                dateStart = new Date(values[0], values[1], values[2], values[3], values[4], values[5]);
                                dateEnd = new Date(values[0], values[1], values[2], values[3], values[4], values[5] + 1);
                                break;
                            default:
                                dateStart = new Date(values[0], values[1], values[2]);
                                dateEnd = new Date(values[0], values[1], values[2] + 1)
                        }
                        switch (selectedFilterOperation) {
                            case "<":
                                return [selector, "<", dateStart];
                            case "<=":
                                return [selector, "<", dateEnd];
                            case ">":
                                return [selector, ">=", dateEnd];
                            case ">=":
                                return [selector, ">=", dateStart];
                            case "<>":
                                return [
                                    [selector, "<", dateStart], "or", [selector, ">=", dateEnd]
                                ];
                            default:
                                return [
                                    [selector, ">=", dateStart], "and", [selector, "<", dateEnd]
                                ]
                        }
                    };
                    const getFilterExpressionForNumber = function(filterValue, selectedFilterOperation, target) {
                        const selector = getFilterSelector(this, target);
                        const groupInterval = getGroupInterval(this);
                        if ("headerFilter" === target && groupInterval && (0, _type.isDefined)(filterValue)) {
                            const values = ("" + filterValue).split("/");
                            const value = Number(values[values.length - 1]);
                            const interval = groupInterval[values.length - 1];
                            const startFilterValue = [selector, ">=", value];
                            const endFilterValue = [selector, "<", value + interval];
                            const condition = [startFilterValue, "and", endFilterValue];
                            return condition
                        }
                        return [selector, selectedFilterOperation || "=", filterValue]
                    };
                    return {
                        defaultCalculateFilterExpression: function(filterValue, selectedFilterOperation, target) {
                            const column = this;
                            const selector = getFilterSelector(column, target);
                            const isSearchByDisplayValue = column.calculateDisplayValue && "search" === target;
                            const dataType = isSearchByDisplayValue && column.lookup && column.lookup.dataType || column.dataType;
                            let filter = null;
                            if (("headerFilter" === target || "filterBuilder" === target) && null === filterValue) {
                                filter = [selector, selectedFilterOperation || "=", null];
                                if ("string" === dataType) {
                                    filter = [filter, "=" === selectedFilterOperation ? "or" : "and", [selector, selectedFilterOperation || "=", ""]]
                                }
                            } else if ("string" === dataType && (!column.lookup || isSearchByDisplayValue)) {
                                filter = [selector, selectedFilterOperation || "contains", filterValue]
                            } else if ("between" === selectedFilterOperation) {
                                return getFilterExpressionByRange.apply(column, [filterValue, target])
                            } else if (isDateType(dataType) && (0, _type.isDefined)(filterValue)) {
                                return getFilterExpressionForDate.apply(column, arguments)
                            } else if ("number" === dataType) {
                                return getFilterExpressionForNumber.apply(column, arguments)
                            } else {
                                filter = [selector, selectedFilterOperation || "=", filterValue]
                            }
                            return filter
                        },
                        getGroupInterval: getGroupInterval
                    }
                }();
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        52071:
            /*!**********************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/themes.js ***!
              \**********************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.attachCssClasses = attachCssClasses;
                exports.current = current;
                exports.default = void 0;
                exports.detachCssClasses = detachCssClasses;
                exports.init = init;
                exports.initialized = initialized;
                exports.isCompact = isCompact;
                exports.isDark = isDark;
                exports.isFluent = isFluent;
                exports.isGeneric = isGeneric;
                exports.isMaterial = isMaterial;
                exports.isMaterialBased = isMaterialBased;
                exports.isPendingThemeLoaded = isPendingThemeLoaded;
                exports.isWebFontLoaded = isWebFontLoaded;
                exports.ready = themeReady;
                exports.resetTheme = resetTheme;
                exports.setDefaultTimeout = setDefaultTimeout;
                exports.waitForThemeLoad = waitForThemeLoad;
                exports.waitWebFont = waitWebFont;
                var _size = __webpack_require__( /*! ../core/utils/size */ 57653);
                var _devices = _interopRequireDefault(__webpack_require__( /*! ../core/devices */ 65951));
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../core/dom_adapter */ 64960));
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../core/renderer */ 64553));
                var _deferred = __webpack_require__( /*! ../core/utils/deferred */ 87739);
                var _html_parser = __webpack_require__( /*! ../core/utils/html_parser */ 23563);
                var _iterator = __webpack_require__( /*! ../core/utils/iterator */ 21274);
                var _ready_callbacks = _interopRequireDefault(__webpack_require__( /*! ../core/utils/ready_callbacks */ 3122));
                var _view_port = __webpack_require__( /*! ../core/utils/view_port */ 55355);
                var _window = __webpack_require__( /*! ../core/utils/window */ 3104);
                var _themes_callback = __webpack_require__( /*! ./themes_callback */ 88737);
                var _m_common = __webpack_require__( /*! ../__internal/core/utils/m_common */ 39315);
                var _ui = _interopRequireDefault(__webpack_require__( /*! ./widget/ui.errors */ 35185));

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const window = (0, _window.getWindow)();
                const ready = _ready_callbacks.default.add;
                const viewPort = _view_port.value;
                const viewPortChanged = _view_port.changeCallback;
                let initDeferred = new _deferred.Deferred;
                const DX_LINK_SELECTOR = "link[rel=dx-theme]";
                const THEME_ATTR = "data-theme";
                const ACTIVE_ATTR = "data-active";
                const DX_HAIRLINES_CLASS = "dx-hairlines";
                const ANY_THEME = "any";
                let context;
                let $activeThemeLink;
                let knownThemes;
                let currentThemeName;
                let pendingThemeName;
                let defaultTimeout = 15e3;
                const THEME_MARKER_PREFIX = "dx.";

                function readThemeMarker() {
                    if (!(0, _window.hasWindow)()) {
                        return null
                    }
                    const element = (0, _renderer.default)("<div>", context).addClass("dx-theme-marker").appendTo(context.documentElement);
                    let result;
                    try {
                        result = window.getComputedStyle(element.get(0)).fontFamily;
                        if (!result) {
                            return null
                        }
                        result = result.replace(/["']/g, "");
                        if (result.substr(0, THEME_MARKER_PREFIX.length) !== THEME_MARKER_PREFIX) {
                            return null
                        }
                        return result.substr(THEME_MARKER_PREFIX.length)
                    } finally {
                        element.remove()
                    }
                }

                function waitForThemeLoad(themeName) {
                    let waitStartTime;
                    let timerId;
                    let intervalCleared = true;
                    pendingThemeName = themeName;

                    function handleLoaded() {
                        pendingThemeName = null;
                        clearInterval(timerId);
                        intervalCleared = true;
                        _themes_callback.themeReadyCallback.fire();
                        _themes_callback.themeReadyCallback.empty();
                        initDeferred.resolve()
                    }
                    if (isPendingThemeLoaded() || !defaultTimeout) {
                        handleLoaded()
                    } else {
                        if (!intervalCleared) {
                            if (pendingThemeName) {
                                pendingThemeName = themeName
                            }
                            return
                        }
                        waitStartTime = Date.now();
                        intervalCleared = false;
                        timerId = setInterval((function() {
                            const isLoaded = isPendingThemeLoaded();
                            const isTimeout = !isLoaded && Date.now() - waitStartTime > defaultTimeout;
                            if (isTimeout) {
                                _ui.default.log("W0004", pendingThemeName)
                            }
                            if (isLoaded || isTimeout) {
                                handleLoaded()
                            }
                        }), 10)
                    }
                }

                function isPendingThemeLoaded() {
                    if (!pendingThemeName) {
                        return true
                    }
                    const anyThemePending = pendingThemeName === ANY_THEME;
                    if ("resolved" === initDeferred.state() && anyThemePending) {
                        return true
                    }
                    const themeMarker = readThemeMarker();
                    if (themeMarker && anyThemePending) {
                        return true
                    }
                    return themeMarker === pendingThemeName
                }

                function init(options) {
                    options = options || {};
                    ! function(newContext) {
                        try {
                            if (newContext !== context) {
                                knownThemes = null
                            }
                        } catch (x) {
                            knownThemes = null
                        }
                        context = newContext
                    }(options.context || _dom_adapter.default.getDocument());
                    if (!context) {
                        return
                    }! function() {
                        const $allThemeLinks = (0, _renderer.default)(DX_LINK_SELECTOR, context);
                        if (!$allThemeLinks.length) {
                            return
                        }
                        knownThemes = {};
                        $activeThemeLink = (0, _renderer.default)((0, _html_parser.parseHTML)("<link rel=stylesheet>"), context);
                        $allThemeLinks.each((function() {
                            const link = (0, _renderer.default)(this, context);
                            const fullThemeName = link.attr(THEME_ATTR);
                            const url = link.attr("href");
                            const isActive = "true" === link.attr(ACTIVE_ATTR);
                            knownThemes[fullThemeName] = {
                                url: url,
                                isActive: isActive
                            }
                        }));
                        $allThemeLinks.last().after($activeThemeLink);
                        $allThemeLinks.remove()
                    }();
                    currentThemeName = void 0;
                    current(options)
                }

                function current(options) {
                    if (!arguments.length) {
                        currentThemeName = currentThemeName || readThemeMarker();
                        return currentThemeName
                    }
                    detachCssClasses(viewPort());
                    options = options || {};
                    if ("string" === typeof options) {
                        options = {
                            theme: options
                        }
                    }
                    const isAutoInit = options._autoInit;
                    const loadCallback = options.loadCallback;
                    let currentThemeData;
                    currentThemeName = function(desiredThemeName) {
                        const desiredThemeParts = desiredThemeName ? desiredThemeName.split(".") : [];
                        let result = null;
                        if (knownThemes) {
                            if (desiredThemeName in knownThemes) {
                                return desiredThemeName
                            }(0, _iterator.each)(knownThemes, (function(knownThemeName, themeData) {
                                const knownThemeParts = knownThemeName.split(".");
                                if (desiredThemeParts[0] && knownThemeParts[0] !== desiredThemeParts[0]) {
                                    return
                                }
                                if (desiredThemeParts[1] && desiredThemeParts[1] !== knownThemeParts[1]) {
                                    return
                                }
                                if (desiredThemeParts[2] && desiredThemeParts[2] !== knownThemeParts[2]) {
                                    return
                                }
                                if (!result || themeData.isActive) {
                                    result = knownThemeName
                                }
                                if (themeData.isActive) {
                                    return false
                                }
                            }))
                        }
                        return result
                    }(options.theme || currentThemeName);
                    if (currentThemeName) {
                        currentThemeData = knownThemes[currentThemeName]
                    }
                    if (loadCallback) {
                        _themes_callback.themeReadyCallback.add(loadCallback)
                    }
                    if (currentThemeData) {
                        $activeThemeLink.attr("href", knownThemes[currentThemeName].url);
                        if (_themes_callback.themeReadyCallback.has() || "resolved" !== initDeferred.state() || options._forceTimeout) {
                            waitForThemeLoad(currentThemeName)
                        }
                    } else if (isAutoInit) {
                        if ((0, _window.hasWindow)()) {
                            waitForThemeLoad(ANY_THEME)
                        }
                        _themes_callback.themeReadyCallback.fire();
                        _themes_callback.themeReadyCallback.empty()
                    } else {
                        throw _ui.default.Error("E0021", currentThemeName)
                    }
                    initDeferred.done((() => attachCssClasses((0, _view_port.originalViewPort)(), currentThemeName)))
                }
                let themeClasses;

                function _attachCssClasses(element, themeName) {
                    themeClasses = function(themeName) {
                        themeName = themeName || current();
                        const result = [];
                        const themeNameParts = themeName && themeName.split(".");
                        if (themeNameParts) {
                            result.push("dx-theme-" + themeNameParts[0], "dx-theme-" + themeNameParts[0] + "-typography");
                            if (themeNameParts.length > 1) {
                                result.push("dx-color-scheme-" + themeNameParts[1] + (isMaterialBased(themeName) ? "-" + themeNameParts[2] : ""))
                            }
                        }
                        return result
                    }(themeName).join(" ");
                    (0, _renderer.default)(element).addClass(themeClasses);
                    ! function() {
                        const pixelRatio = (0, _window.hasWindow)() && window.devicePixelRatio;
                        if (!pixelRatio || pixelRatio < 2) {
                            return
                        }
                        const $tester = (0, _renderer.default)("<div>");
                        $tester.css("border", ".5px solid transparent");
                        (0, _renderer.default)("body").append($tester);
                        if (1 === (0, _size.getOuterHeight)($tester)) {
                            (0, _renderer.default)(element).addClass(DX_HAIRLINES_CLASS);
                            themeClasses += " " + DX_HAIRLINES_CLASS
                        }
                        $tester.remove()
                    }()
                }

                function attachCssClasses(element, themeName) {
                    (0, _deferred.when)(_m_common.uiLayerInitialized).done((() => {
                        _attachCssClasses(element, themeName)
                    }))
                }

                function detachCssClasses(element) {
                    (0, _deferred.when)(_m_common.uiLayerInitialized).done((() => {
                        (0, _renderer.default)(element).removeClass(themeClasses)
                    }))
                }

                function themeReady(callback) {
                    _themes_callback.themeReadyCallback.add(callback)
                }

                function isTheme(themeRegExp, themeName) {
                    if (!themeName) {
                        themeName = currentThemeName || readThemeMarker()
                    }
                    return new RegExp(themeRegExp).test(themeName)
                }

                function isMaterialBased(themeName) {
                    return isMaterial(themeName) || isFluent(themeName)
                }

                function isMaterial(themeName) {
                    return isTheme("material", themeName)
                }

                function isFluent(themeName) {
                    return isTheme("fluent", themeName)
                }

                function isGeneric(themeName) {
                    return isTheme("generic", themeName)
                }

                function isDark(themeName) {
                    return isTheme("dark", themeName)
                }

                function isCompact(themeName) {
                    return isTheme("compact", themeName)
                }

                function isWebFontLoaded(text, fontWeight) {
                    const document = _dom_adapter.default.getDocument();
                    const testElement = document.createElement("span");
                    testElement.style.position = "absolute";
                    testElement.style.top = "-9999px";
                    testElement.style.left = "-9999px";
                    testElement.style.visibility = "hidden";
                    testElement.style.fontFamily = "Arial";
                    testElement.style.fontSize = "250px";
                    testElement.style.fontWeight = fontWeight;
                    testElement.innerHTML = text;
                    document.body.appendChild(testElement);
                    const etalonFontWidth = testElement.offsetWidth;
                    testElement.style.fontFamily = "Roboto, RobotoFallback, Arial";
                    const testedFontWidth = testElement.offsetWidth;
                    testElement.parentNode.removeChild(testElement);
                    return etalonFontWidth !== testedFontWidth
                }

                function waitWebFont(text, fontWeight) {
                    return new Promise((resolve => {
                        const clear = () => {
                            clearInterval(intervalId);
                            clearTimeout(timeoutId);
                            resolve()
                        };
                        const intervalId = setInterval((() => {
                            if (isWebFontLoaded(text, fontWeight)) {
                                clear()
                            }
                        }), 15);
                        const timeoutId = setTimeout(clear, 2e3)
                    }))
                }

                function autoInit() {
                    init({
                        _autoInit: true,
                        _forceTimeout: true
                    });
                    if ((0, _renderer.default)(DX_LINK_SELECTOR, context).length) {
                        throw _ui.default.Error("E0022")
                    }
                }
                if ((0, _window.hasWindow)()) {
                    autoInit()
                } else {
                    ready(autoInit)
                }
                viewPortChanged.add((function(viewPort, prevViewPort) {
                    initDeferred.done((function() {
                        detachCssClasses(prevViewPort);
                        attachCssClasses(viewPort)
                    }))
                }));
                _devices.default.changed.add((function() {
                    init({
                        _autoInit: true
                    })
                }));

                function resetTheme() {
                    $activeThemeLink && $activeThemeLink.attr("href", "about:blank");
                    currentThemeName = null;
                    pendingThemeName = null;
                    initDeferred = new _deferred.Deferred
                }

                function initialized(callback) {
                    initDeferred.done(callback)
                }

                function setDefaultTimeout(timeout) {
                    defaultTimeout = timeout
                }
                exports.default = {
                    setDefaultTimeout: setDefaultTimeout,
                    initialized: initialized,
                    resetTheme: resetTheme,
                    ready: themeReady,
                    waitWebFont: waitWebFont,
                    isWebFontLoaded: isWebFontLoaded,
                    isCompact: isCompact,
                    isDark: isDark,
                    isGeneric: isGeneric,
                    isMaterial: isMaterial,
                    isFluent: isFluent,
                    isMaterialBased: isMaterialBased,
                    detachCssClasses: detachCssClasses,
                    attachCssClasses: attachCssClasses,
                    current: current,
                    waitForThemeLoad: waitForThemeLoad,
                    isPendingThemeLoaded: isPendingThemeLoaded
                }
            },
        88737:
            /*!*******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/themes_callback.js ***!
              \*******************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.themeReadyCallback = void 0;
                var _callbacks = (e = __webpack_require__( /*! ../core/utils/callbacks */ 84718), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                exports.themeReadyCallback = (0, _callbacks.default)()
            },
        19391:
            /*!*********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/validation_engine.js ***!
              \*********************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _m_validation_engine = (e = __webpack_require__( /*! ../__internal/ui/m_validation_engine */ 79697), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                exports.default = _m_validation_engine.default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        59098:
            /*!**********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/validation_message.js ***!
              \**********************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _m_validation_message = (e = __webpack_require__( /*! ../__internal/ui/m_validation_message */ 22864), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                exports.default = _m_validation_message.default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        35944:
            /*!********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/widget/selectors.js ***!
              \********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.tabbable = exports.focused = exports.focusable = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553));
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../core/dom_adapter */ 64960));

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const focusableFn = function(element, tabIndex) {
                    if (! function(element) {
                            const $element = (0, _renderer.default)(element);
                            return $element.is(":visible") && "hidden" !== $element.css("visibility") && "hidden" !== $element.parents().css("visibility")
                        }(element)) {
                        return false
                    }
                    const nodeName = element.nodeName.toLowerCase();
                    const isTabIndexNotNaN = !isNaN(tabIndex);
                    const isDisabled = element.disabled;
                    const isDefaultFocus = /^(input|select|textarea|button|object|iframe)$/.test(nodeName);
                    const isHyperlink = "a" === nodeName;
                    let isFocusable;
                    const isContentEditable = element.isContentEditable;
                    if (isDefaultFocus || isContentEditable) {
                        isFocusable = !isDisabled
                    } else if (isHyperlink) {
                        isFocusable = element.href || isTabIndexNotNaN
                    } else {
                        isFocusable = isTabIndexNotNaN
                    }
                    return isFocusable
                };
                exports.focusable = function(index, element) {
                    return focusableFn(element, (0, _renderer.default)(element).attr("tabIndex"))
                };
                exports.tabbable = function(index, element) {
                    const tabIndex = (0, _renderer.default)(element).attr("tabIndex");
                    return (isNaN(tabIndex) || tabIndex >= 0) && focusableFn(element, tabIndex)
                };
                exports.focused = function($element) {
                    const element = (0, _renderer.default)($element).get(0);
                    return _dom_adapter.default.getActiveElement(element) === element
                }
            },
        5080:
            /*!***************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/widget/swatch_container.js ***!
              \***************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = (e = __webpack_require__( /*! ../../core/renderer */ 64553), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                var _view_port = __webpack_require__( /*! ../../core/utils/view_port */ 55355);
                exports.default = {
                    getSwatchContainer: element => {
                        const $element = (0, _renderer.default)(element);
                        const swatchContainer = $element.closest('[class^="dx-swatch-"], [class*=" dx-swatch-"]');
                        const viewport = (0, _view_port.value)();
                        if (!swatchContainer.length) {
                            return viewport
                        }
                        const swatchClassRegex = new RegExp("(\\s|^)(dx-swatch-.*?)(\\s|$)");
                        const swatchClass = swatchContainer[0].className.match(swatchClassRegex)[2];
                        let viewportSwatchContainer = viewport.children("." + swatchClass);
                        if (!viewportSwatchContainer.length) {
                            viewportSwatchContainer = (0, _renderer.default)("<div>").addClass(swatchClass).appendTo(viewport)
                        }
                        return viewportSwatchContainer
                    }
                };
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        35185:
            /*!********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/widget/ui.errors.js ***!
              \********************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _error = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/error */ 67264));
                var _errors = _interopRequireDefault(__webpack_require__( /*! ../../core/errors */ 87129));

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                exports.default = (0, _error.default)(_errors.default.ERROR_MESSAGES, {
                    E1001: "Module '{0}'. Controller '{1}' is already registered",
                    E1002: "Module '{0}'. Controller '{1}' does not inherit from DevExpress.ui.dxDataGrid.Controller",
                    E1003: "Module '{0}'. View '{1}' is already registered",
                    E1004: "Module '{0}'. View '{1}' does not inherit from DevExpress.ui.dxDataGrid.View",
                    E1005: "Public method '{0}' is already registered",
                    E1006: "Public method '{0}.{1}' does not exist",
                    E1007: "State storing cannot be provided due to the restrictions of the browser",
                    E1010: "The template does not contain the TextBox widget",
                    E1011: 'Items cannot be deleted from the List. Implement the "remove" function in the data store',
                    E1012: "Editing type '{0}' with the name '{1}' is unsupported",
                    E1016: "Unexpected type of data source is provided for a lookup column",
                    E1018: "The 'collapseAll' method cannot be called if you use a remote data source",
                    E1019: "Search mode '{0}' is unavailable",
                    E1020: "The type cannot be changed after initialization",
                    E1021: "{0} '{1}' you are trying to remove does not exist",
                    E1022: 'The "markers" option is given an invalid value. Assign an array instead',
                    E1023: 'The "routes" option is given an invalid value. Assign an array instead',
                    E1025: "This layout is too complex to render",
                    E1026: 'The "calculateCustomSummary" function is missing from a field whose "summaryType" option is set to "custom"',
                    E1031: "Unknown subscription in the Scheduler widget: '{0}'",
                    E1032: "Unknown start date in an appointment: '{0}'",
                    E1033: "Unknown step in the date navigator: '{0}'",
                    E1034: "The browser does not implement an API for saving files",
                    E1035: "The editor cannot be created: {0}",
                    E1037: "Invalid structure of grouped data",
                    E1038: "The browser does not support local storages for local web pages",
                    E1039: "A cell's position cannot be calculated",
                    E1040: "The '{0}' key value is not unique within the data array",
                    E1041: "The '{0}' script is referenced after the DevExtreme scripts or not referenced at all",
                    E1042: "{0} requires the key field to be specified",
                    E1043: "Changes cannot be processed due to the incorrectly set key",
                    E1044: "The key field specified by the keyExpr option does not match the key field specified in the data store",
                    E1045: "Editing requires the key field to be specified in the data store",
                    E1046: "The '{0}' key field is not found in data objects",
                    E1047: 'The "{0}" field is not found in the fields array',
                    E1048: 'The "{0}" operation is not found in the filterOperations array',
                    E1049: "Column '{0}': filtering is allowed but the 'dataField' or 'name' option is not specified",
                    E1050: "The validationRules option does not apply to third-party editors defined in the editCellTemplate",
                    E1052: '{0} should have the "dataSource" option specified',
                    E1053: 'The "buttons" option accepts an array that contains only objects or string values',
                    E1054: "All text editor buttons must have names",
                    E1055: 'One or several text editor buttons have invalid or non-unique "name" values',
                    E1056: 'The {0} widget does not support buttons of the "{1}" type',
                    E1058: 'The "startDayHour" and "endDayHour" options must be integers in the [0, 24] range, with "endDayHour" being greater than "startDayHour".',
                    E1059: "The following column names are not unique: {0}",
                    E1060: "All editable columns must have names",
                    E1061: 'The "offset" option must be an integer in the [-1440, 1440] range, divisible by 5 without a remainder.',
                    E1062: 'The "cellDuration" must be a positive integer, evenly dividing the ("endDayHour" - "startDayHour") interval into minutes.',
                    W1001: 'The "key" option cannot be modified after initialization',
                    W1002: "An item with the key '{0}' does not exist",
                    W1003: "A group with the key '{0}' in which you are trying to select items does not exist",
                    W1004: "The item '{0}' you are trying to select in the group '{1}' does not exist",
                    W1005: "Due to column data types being unspecified, data has been loaded twice in order to apply initial filter settings. To resolve this issue, specify data types for all grid columns.",
                    W1006: "The map service returned the following error: '{0}'",
                    W1007: "No item with key {0} was found in the data source, but this key was used as the parent key for item {1}",
                    W1008: "Cannot scroll to the '{0}' date because it does not exist on the current view",
                    W1009: "Searching works only if data is specified using the dataSource option",
                    W1010: "The capability to select all items works with source data of plain structure only",
                    W1011: 'The "keyExpr" option is not applied when dataSource is not an array',
                    W1012: "The '{0}' key field is not found in data objects",
                    W1013: 'The "message" field in the dialog component was renamed to "messageHtml". Change your code correspondingly. In addition, if you used HTML code in the message, make sure that it is secure',
                    W1014: "The Floating Action Button exceeds the recommended speed dial action count. If you need to display more speed dial actions, increase the maxSpeedDialActionCount option value in the global config.",
                    W1017: "The 'key' property is not specified for a lookup data source. Please specify it to prevent requests for the entire dataset when users filter data.",
                    W1018: "Infinite scrolling may not work properly with multiple selection. To use these features together, set 'selection.deferred' to true or set 'selection.selectAllMode' to 'page'.",
                    W1019: "Filter query string exceeds maximum length limit of {0} characters.",
                    W1020: "hideEvent is ignored when the shading property is true",
                    W1021: "The '{0}' is not rendered because none of the DOM elements match the value of the \"container\" property.",
                    W1022: "{0} JSON parsing error: '{1}'",
                    W1023: "Appointments require unique keys. Otherwise, the agenda view may not work correctly.",
                    W1024: "The client-side export is enabled. Implement the 'onExporting' function.",
                    W1025: "'scrolling.mode' is set to 'virtual' or 'infinite'. Specify the height of the component.",
                    W1026: "The 'ai' toolbar item is defined, but aiIntegration is missing.",
                    W1027: "A prompt should be specified for a custom command."
                });
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        11118:
            /*!********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/widget/ui.widget.js ***!
              \********************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _widget = (e = __webpack_require__( /*! ../../__internal/core/widget/widget */ 89275), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                exports.default = _widget.default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        63885:
            /*!************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/axes/axes_constants.js ***!
              \************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _utils = __webpack_require__( /*! ../core/utils */ 28779);
                exports.default = {
                    logarithmic: "logarithmic",
                    discrete: "discrete",
                    numeric: "numeric",
                    left: "left",
                    right: "right",
                    top: "top",
                    bottom: "bottom",
                    center: "center",
                    horizontal: "horizontal",
                    vertical: "vertical",
                    convertTicksToValues: function(ticks) {
                        return (0, _utils.map)(ticks || [], (function(item) {
                            return item.value
                        }))
                    },
                    validateOverlappingMode: function(mode) {
                        return "ignore" === mode || "none" === mode ? mode : "hide"
                    },
                    getTicksCountInRange: function(ticks, valueKey, range) {
                        let i = 1;
                        if (ticks.length > 1) {
                            for (; i < ticks.length; i++) {
                                if (Math.abs(ticks[i].coords[valueKey] - ticks[0].coords[valueKey]) >= range) {
                                    break
                                }
                            }
                        }
                        return i
                    },
                    areLabelsOverlap: function(bBox1, bBox2, spacing, alignment) {
                        const horizontalInverted = bBox1.x > bBox2.x;
                        const verticalInverted = bBox1.y > bBox2.y;
                        let x1 = bBox1.x;
                        let x2 = bBox2.x;
                        const width1 = bBox1.width;
                        const width2 = bBox2.width;
                        if ("left" === alignment) {
                            x1 += width1 / 2;
                            x2 += width2 / 2
                        } else if ("right" === alignment) {
                            x1 -= width1 / 2;
                            x2 -= width2 / 2
                        }
                        const hasHorizontalOverlapping = horizontalInverted ? x2 + width2 + spacing > x1 : x1 + width1 + spacing > x2;
                        const hasVerticalOverlapping = verticalInverted ? bBox2.y + bBox2.height > bBox1.y : bBox1.y + bBox1.height > bBox2.y;
                        return hasHorizontalOverlapping && hasVerticalOverlapping
                    }
                };
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        86017:
            /*!********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/axes/axes_utils.js ***!
              \********************************************************************/
            function(__unused_webpack_module, exports) {
                exports.measureLabels = exports.calculateCanvasMargins = void 0;
                const _max = Math.max;
                exports.calculateCanvasMargins = function(bBoxes, canvas) {
                    const cLeft = canvas.left;
                    const cTop = canvas.top;
                    const cRight = canvas.width - canvas.right;
                    const cBottom = canvas.height - canvas.bottom;
                    return bBoxes.reduce((function(margins, bBox) {
                        if (!bBox || bBox.isEmpty) {
                            return margins
                        }
                        return {
                            left: _max(margins.left, cLeft - bBox.x),
                            top: _max(margins.top, cTop - bBox.y),
                            right: _max(margins.right, bBox.x + bBox.width - cRight),
                            bottom: _max(margins.bottom, bBox.y + bBox.height - cBottom)
                        }
                    }), {
                        left: 0,
                        right: 0,
                        top: 0,
                        bottom: 0
                    })
                };
                exports.measureLabels = function(items) {
                    items.forEach((function(item) {
                        const label = item.getContentContainer();
                        item.labelBBox = label ? label.getBBox() : {
                            x: 0,
                            y: 0,
                            width: 0,
                            height: 0
                        }
                    }))
                }
            },
        99091:
            /*!*******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/axes/base_axis.js ***!
              \*******************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.Axis = void 0;
                var _smart_formatter = __webpack_require__( /*! ./smart_formatter */ 38528);
                var _utils = __webpack_require__( /*! ../core/utils */ 28779);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 11528);
                var _axes_constants = _interopRequireDefault(__webpack_require__( /*! ./axes_constants */ 63885));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576);
                var _format_helper = _interopRequireDefault(__webpack_require__( /*! ../../format_helper */ 2082));
                var _parse_utils = __webpack_require__( /*! ../components/parse_utils */ 60976);
                var _tick_generator = __webpack_require__( /*! ./tick_generator */ 64449);
                var _translator2d = __webpack_require__( /*! ../translators/translator2d */ 64174);
                var _range = __webpack_require__( /*! ../translators/range */ 99857);
                var _tick = __webpack_require__( /*! ./tick */ 99043);
                var _math2 = __webpack_require__( /*! ../../core/utils/math */ 50254);
                var _date = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/date */ 41380));
                var _common = __webpack_require__( /*! ../../core/utils/common */ 17781);
                var _xy_axes = _interopRequireDefault(__webpack_require__( /*! ./xy_axes */ 9441));
                var polarMethods = function(e, r) {
                    if (!r && e && e.__esModule) {
                        return e
                    }
                    if (null === e || "object" != typeof e && "function" != typeof e) {
                        return {
                            default: e
                        }
                    }
                    var t = _getRequireWildcardCache(r);
                    if (t && t.has(e)) {
                        return t.get(e)
                    }
                    var n = {
                            __proto__: null
                        },
                        a = Object.defineProperty && Object.getOwnPropertyDescriptor;
                    for (var u in e) {
                        if ("default" !== u && {}.hasOwnProperty.call(e, u)) {
                            var i = a ? Object.getOwnPropertyDescriptor(e, u) : null;
                            i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]
                        }
                    }
                    return n.default = e, t && t.set(e, n), n
                }(__webpack_require__( /*! ./polar_axes */ 75014));
                var _constant_line = _interopRequireDefault(__webpack_require__( /*! ./constant_line */ 21259));
                var _strip = _interopRequireDefault(__webpack_require__( /*! ./strip */ 38922));
                var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 87739);
                var _axes_utils = __webpack_require__( /*! ./axes_utils */ 86017);

                function _getRequireWildcardCache(e) {
                    if ("function" != typeof WeakMap) {
                        return null
                    }
                    var r = new WeakMap,
                        t = new WeakMap;
                    return (_getRequireWildcardCache = function(e) {
                        return e ? t : r
                    })(e)
                }

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const convertTicksToValues = _axes_constants.default.convertTicksToValues;
                const _math = Math;
                const _abs = _math.abs;
                const _max = _math.max;
                const _min = _math.min;
                const _isArray = Array.isArray;
                const TOP = _axes_constants.default.top;
                const BOTTOM = _axes_constants.default.bottom;
                const LEFT = _axes_constants.default.left;
                const RIGHT = _axes_constants.default.right;
                const CENTER = _axes_constants.default.center;
                const KEEP = "keep";
                const SHIFT = "shift";
                const RESET = "reset";
                const dateIntervals_day = 864e5,
                    dateIntervals_week = 6048e5;

                function getTickGenerator(options, incidentOccurred, skipTickGeneration, rangeIsEmpty, adjustDivisionFactor, _ref) {
                    var _options$workWeek;
                    let {
                        allowNegatives: allowNegatives,
                        linearThreshold: linearThreshold
                    } = _ref;
                    return (0, _tick_generator.tickGenerator)({
                        axisType: options.type,
                        dataType: options.dataType,
                        logBase: options.logarithmBase,
                        allowNegatives: allowNegatives,
                        linearThreshold: linearThreshold,
                        axisDivisionFactor: adjustDivisionFactor(options.axisDivisionFactor || 50),
                        minorAxisDivisionFactor: adjustDivisionFactor(options.minorAxisDivisionFactor || 15),
                        numberMultipliers: options.numberMultipliers,
                        calculateMinors: options.minorTick.visible || options.minorGrid.visible || options.calculateMinors,
                        allowDecimals: options.allowDecimals,
                        endOnTick: options.endOnTick,
                        incidentOccurred: incidentOccurred,
                        firstDayOfWeek: null === (_options$workWeek = options.workWeek) || void 0 === _options$workWeek ? void 0 : _options$workWeek[0],
                        skipTickGeneration: skipTickGeneration,
                        skipCalculationLimits: options.skipCalculationLimits,
                        generateExtraTick: options.generateExtraTick,
                        minTickInterval: options.minTickInterval,
                        rangeIsEmpty: rangeIsEmpty
                    })
                }

                function createMajorTick(axis, renderer, skippedCategory) {
                    const options = axis.getOptions();
                    return (0, _tick.tick)(axis, renderer, options.tick, options.grid, skippedCategory, false)
                }

                function createMinorTick(axis, renderer) {
                    const options = axis.getOptions();
                    return (0, _tick.tick)(axis, renderer, options.minorTick, options.minorGrid)
                }

                function createBoundaryTick(axis, renderer, isFirst) {
                    const options = axis.getOptions();
                    return (0, _tick.tick)(axis, renderer, (0, _extend.extend)({}, options.tick, {
                        visible: options.showCustomBoundaryTicks
                    }), options.grid, void 0, false, isFirst ? -1 : 1)
                }

                function callAction(elements, action, actionArgument1, actionArgument2) {
                    (elements || []).forEach((e => e[action](actionArgument1, actionArgument2)))
                }

                function initTickCoords(ticks) {
                    callAction(ticks, "initCoords")
                }

                function drawTickMarks(ticks, options) {
                    callAction(ticks, "drawMark", options)
                }

                function drawGrids(ticks, drawLine) {
                    callAction(ticks, "drawGrid", drawLine)
                }

                function updateTicksPosition(ticks, options, animate) {
                    callAction(ticks, "updateTickPosition", options, animate)
                }

                function updateGridsPosition(ticks, animate) {
                    callAction(ticks, "updateGridPosition", animate)
                }

                function cleanUpInvalidTicks(ticks) {
                    let i = ticks.length - 1;
                    for (i; i >= 0; i--) {
                        if (!removeInvalidTick(ticks, i)) {
                            break
                        }
                    }
                    for (i = 0; i < ticks.length; i++) {
                        if (removeInvalidTick(ticks, i)) {
                            i--
                        } else {
                            break
                        }
                    }
                }

                function removeInvalidTick(ticks, i) {
                    if (null === ticks[i].coords.x || null === ticks[i].coords.y) {
                        ticks.splice(i, 1);
                        return true
                    }
                    return false
                }

                function getOptimalAngle(boxes, labelOpt) {
                    const angle = 180 * _math.asin((boxes[0].height + labelOpt.minSpacing) / (boxes[1].x - boxes[0].x)) / _math.PI;
                    return angle < 45 ? -45 : -90
                }

                function updateLabels(ticks, step, func) {
                    ticks.forEach((function(tick, index) {
                        if (tick.getContentContainer()) {
                            if (index % step !== 0) {
                                tick.removeLabel()
                            } else if (func) {
                                func(tick, index)
                            }
                        }
                    }))
                }

                function getZoomBoundValue(optionValue, dataValue) {
                    if (void 0 === optionValue) {
                        return dataValue
                    } else if (null === optionValue) {
                        return
                    } else {
                        return optionValue
                    }
                }
                const Axis = function(renderSettings) {
                    this._renderer = renderSettings.renderer;
                    this._incidentOccurred = renderSettings.incidentOccurred;
                    this._eventTrigger = renderSettings.eventTrigger;
                    this._stripsGroup = renderSettings.stripsGroup;
                    this._stripLabelAxesGroup = renderSettings.stripLabelAxesGroup;
                    this._labelsAxesGroup = renderSettings.labelsAxesGroup;
                    this._constantLinesGroup = renderSettings.constantLinesGroup;
                    this._scaleBreaksGroup = renderSettings.scaleBreaksGroup;
                    this._axesContainerGroup = renderSettings.axesContainerGroup;
                    this._gridContainerGroup = renderSettings.gridGroup;
                    this._axisCssPrefix = renderSettings.widgetClass + "-" + (renderSettings.axisClass ? renderSettings.axisClass + "-" : "");
                    this._setType(renderSettings.axisType, renderSettings.drawingType);
                    this._createAxisGroups();
                    this._translator = this._createTranslator();
                    this.isArgumentAxis = renderSettings.isArgumentAxis;
                    this._viewport = {};
                    this._prevDataInfo = {};
                    this._firstDrawing = true;
                    this._initRange = {};
                    this._getTemplate = renderSettings.getTemplate
                };
                exports.Axis = Axis;
                Axis.prototype = {
                    constructor: Axis,
                    _drawAxis() {
                        const options = this._options;
                        if (!options.visible) {
                            return
                        }
                        this._axisElement = this._createAxisElement();
                        this._updateAxisElementPosition();
                        this._axisElement.attr({
                            "stroke-width": options.width,
                            stroke: options.color,
                            "stroke-opacity": options.opacity
                        }).sharp(this._getSharpParam(true), this.getAxisSharpDirection()).append(this._axisLineGroup)
                    },
                    _createPathElement(points, attr, sharpDirection) {
                        return this.sharp(this._renderer.path(points, "line").attr(attr), sharpDirection)
                    },
                    sharp(svgElement) {
                        let sharpDirection = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 1;
                        return svgElement.sharp(this._getSharpParam(), sharpDirection)
                    },
                    customPositionIsAvailable: () => false,
                    getOrthogonalAxis: _common.noop,
                    getCustomPosition: _common.noop,
                    getCustomBoundaryPosition: _common.noop,
                    resolveOverlappingForCustomPositioning: _common.noop,
                    hasNonBoundaryPosition: () => false,
                    customPositionIsBoundaryOrthogonalAxis: () => false,
                    getResolvedBoundaryPosition() {
                        return this.getOptions().position
                    },
                    getAxisSharpDirection() {
                        const position = this.getResolvedBoundaryPosition();
                        return this.hasNonBoundaryPosition() || position !== BOTTOM && position !== RIGHT ? 1 : -1
                    },
                    getSharpDirectionByCoords(coords) {
                        const canvas = this._getCanvasStartEnd();
                        const maxCoord = Math.max(canvas.start, canvas.end);
                        return this.getRadius ? 0 : maxCoord !== coords[this._isHorizontal ? "x" : "y"] ? 1 : -1
                    },
                    _getGridLineDrawer: function() {
                        const that = this;
                        return function(tick, gridStyle) {
                            const grid = that._getGridPoints(tick.coords);
                            if (grid.points) {
                                return that._createPathElement(grid.points, gridStyle, that.getSharpDirectionByCoords(tick.coords))
                            }
                            return null
                        }
                    },
                    _getGridPoints: function(coords) {
                        const isHorizontal = this._isHorizontal;
                        const tickPositionField = isHorizontal ? "x" : "y";
                        const orthogonalPositions = this._orthogonalPositions;
                        const positionFrom = orthogonalPositions.start;
                        const positionTo = orthogonalPositions.end;
                        const borderOptions = this.borderOptions;
                        const canvasStart = isHorizontal ? LEFT : TOP;
                        const canvasEnd = isHorizontal ? RIGHT : BOTTOM;
                        const axisCanvas = this.getCanvas();
                        const canvas = {
                            left: axisCanvas.left,
                            right: axisCanvas.width - axisCanvas.right,
                            top: axisCanvas.top,
                            bottom: axisCanvas.height - axisCanvas.bottom
                        };
                        const firstBorderLinePosition = borderOptions.visible && borderOptions[canvasStart] ? canvas[canvasStart] : void 0;
                        const lastBorderLinePosition = borderOptions.visible && borderOptions[canvasEnd] ? canvas[canvasEnd] : void 0;
                        const minDelta = 4 + firstBorderLinePosition;
                        const maxDelta = lastBorderLinePosition - 4;
                        if (this.areCoordsOutsideAxis(coords) || void 0 === coords[tickPositionField] || coords[tickPositionField] < minDelta || coords[tickPositionField] > maxDelta) {
                            return {
                                points: null
                            }
                        }
                        return {
                            points: isHorizontal ? null !== coords[tickPositionField] ? [coords[tickPositionField], positionFrom, coords[tickPositionField], positionTo] : null : null !== coords[tickPositionField] ? [positionFrom, coords[tickPositionField], positionTo, coords[tickPositionField]] : null
                        }
                    },
                    _getConstantLinePos: function(parsedValue, canvasStart, canvasEnd) {
                        const value = this._getTranslatedCoord(parsedValue);
                        if (!(0, _type.isDefined)(value) || value < _min(canvasStart, canvasEnd) || value > _max(canvasStart, canvasEnd)) {
                            return
                        }
                        return value
                    },
                    _getConstantLineGraphicAttributes: function(value) {
                        const positionFrom = this._orthogonalPositions.start;
                        const positionTo = this._orthogonalPositions.end;
                        return {
                            points: this._isHorizontal ? [value, positionFrom, value, positionTo] : [positionFrom, value, positionTo, value]
                        }
                    },
                    _createConstantLine: function(value, attr) {
                        return this._createPathElement(this._getConstantLineGraphicAttributes(value).points, attr, (coord = value, axisCanvas = this._getCanvasStartEnd(), Math.max(axisCanvas.start, axisCanvas.end) !== coord ? 1 : -1));
                        var coord, axisCanvas
                    },
                    _drawConstantLineLabelText: function(text, x, y, _ref2, group) {
                        let {
                            font: font,
                            cssClass: cssClass
                        } = _ref2;
                        return this._renderer.text(text, x, y).css((0, _utils.patchFontOptions)((0, _extend.extend)({}, this._options.label.font, font))).attr({
                            align: "center",
                            class: cssClass
                        }).append(group)
                    },
                    _drawConstantLineLabels: function(parsedValue, lineLabelOptions, value, group) {
                        let text = lineLabelOptions.text;
                        const options = this._options;
                        const labelOptions = options.label;
                        this._checkAlignmentConstantLineLabels(lineLabelOptions);
                        text = text ?? this.formatLabel(parsedValue, labelOptions);
                        const coords = this._getConstantLineLabelsCoords(value, lineLabelOptions);
                        return this._drawConstantLineLabelText(text, coords.x, coords.y, lineLabelOptions, group)
                    },
                    _getStripPos: function(startValue, endValue, canvasStart, canvasEnd, range) {
                        const isContinuous = !!(range.minVisible || range.maxVisible);
                        const categories = (range.categories || []).reduce((function(result, cat) {
                            result.push(cat.valueOf());
                            return result
                        }), []);
                        let start;
                        let end;
                        let swap;
                        let startCategoryIndex;
                        let endCategoryIndex;
                        if (!isContinuous) {
                            if ((0, _type.isDefined)(startValue) && (0, _type.isDefined)(endValue)) {
                                const parsedStartValue = this.parser(startValue);
                                const parsedEndValue = this.parser(endValue);
                                startCategoryIndex = categories.indexOf((null === parsedStartValue || void 0 === parsedStartValue ? void 0 : parsedStartValue.valueOf()) ?? void 0);
                                endCategoryIndex = categories.indexOf((null === parsedEndValue || void 0 === parsedEndValue ? void 0 : parsedEndValue.valueOf()) ?? void 0);
                                if (-1 === startCategoryIndex || -1 === endCategoryIndex) {
                                    return {
                                        from: 0,
                                        to: 0,
                                        outOfCanvas: true
                                    }
                                }
                                if (startCategoryIndex > endCategoryIndex) {
                                    swap = endValue;
                                    endValue = startValue;
                                    startValue = swap
                                }
                            }
                        }
                        if ((0, _type.isDefined)(startValue)) {
                            startValue = this.validateUnit(startValue, "E2105", "strip");
                            start = this._getTranslatedCoord(startValue, -1)
                        } else {
                            start = canvasStart
                        }
                        if ((0, _type.isDefined)(endValue)) {
                            endValue = this.validateUnit(endValue, "E2105", "strip");
                            end = this._getTranslatedCoord(endValue, 1)
                        } else {
                            end = canvasEnd
                        }
                        const stripPosition = start < end ? {
                            from: start,
                            to: end
                        } : {
                            from: end,
                            to: start
                        };
                        const visibleArea = this.getVisibleArea();
                        if (stripPosition.from <= visibleArea[0] && stripPosition.to <= visibleArea[0] || stripPosition.from >= visibleArea[1] && stripPosition.to >= visibleArea[1]) {
                            stripPosition.outOfCanvas = true
                        }
                        return stripPosition
                    },
                    _getStripGraphicAttributes: function(fromPoint, toPoint) {
                        let x;
                        let y;
                        let width;
                        let height;
                        const orthogonalPositions = this._orthogonalPositions;
                        const positionFrom = orthogonalPositions.start;
                        const positionTo = orthogonalPositions.end;
                        if (this._isHorizontal) {
                            x = fromPoint;
                            y = _min(positionFrom, positionTo);
                            width = toPoint - fromPoint;
                            height = _abs(positionFrom - positionTo)
                        } else {
                            x = _min(positionFrom, positionTo);
                            y = fromPoint;
                            width = _abs(positionFrom - positionTo);
                            height = _abs(fromPoint - toPoint)
                        }
                        return {
                            x: x,
                            y: y,
                            width: width,
                            height: height
                        }
                    },
                    _createStrip: function(attrs) {
                        return this._renderer.rect(attrs.x, attrs.y, attrs.width, attrs.height)
                    },
                    _adjustStripLabels: function() {
                        const that = this;
                        this._strips.forEach((function(strip) {
                            if (strip.label) {
                                strip.label.attr(that._getAdjustedStripLabelCoords(strip))
                            }
                        }))
                    },
                    _adjustLabelsCoord(offset, maxWidth, checkCanvas) {
                        const getContainerAttrs = tick => this._getLabelAdjustedCoord(tick, offset + (tick.labelOffset || 0), maxWidth, checkCanvas);
                        this._majorTicks.forEach((function(tick) {
                            if (tick.label) {
                                tick.updateMultilineTextAlignment();
                                tick.label.attr(getContainerAttrs(tick))
                            } else {
                                tick.templateContainer && tick.templateContainer.attr(getContainerAttrs(tick))
                            }
                        }))
                    },
                    _adjustLabels: function(offset) {
                        const options = this.getOptions();
                        const positionsAreConsistent = options.position === options.label.position;
                        const maxSize = this._majorTicks.reduce((function(size, tick) {
                            if (!tick.getContentContainer()) {
                                return size
                            }
                            const bBox = tick.labelRotationAngle ? (0, _utils.rotateBBox)(tick.labelBBox, [tick.labelCoords.x, tick.labelCoords.y], -tick.labelRotationAngle) : tick.labelBBox;
                            return {
                                width: _max(size.width || 0, bBox.width),
                                height: _max(size.height || 0, bBox.height),
                                offset: _max(size.offset || 0, tick.labelOffset || 0)
                            }
                        }), {});
                        const additionalOffset = positionsAreConsistent ? this._isHorizontal ? maxSize.height : maxSize.width : 0;
                        this._adjustLabelsCoord(offset, maxSize.width);
                        return offset + additionalOffset + (additionalOffset && this._options.label.indentFromAxis) + (positionsAreConsistent ? maxSize.offset : 0)
                    },
                    _getLabelAdjustedCoord: function(tick, offset, maxWidth) {
                        offset = offset || 0;
                        const options = this._options;
                        const templateBox = tick.templateContainer && tick.templateContainer.getBBox();
                        const box = templateBox || (0, _utils.rotateBBox)(tick.labelBBox, [tick.labelCoords.x, tick.labelCoords.y], -tick.labelRotationAngle || 0);
                        const textAlign = tick.labelAlignment || options.label.alignment;
                        const isDiscrete = "discrete" === this._options.type;
                        const isFlatLabel = tick.labelRotationAngle % 90 === 0;
                        const indentFromAxis = options.label.indentFromAxis;
                        const labelPosition = options.label.position;
                        const axisPosition = this._axisPosition;
                        const labelCoords = tick.labelCoords;
                        const labelX = labelCoords.x;
                        let translateX;
                        let translateY;
                        if (this._isHorizontal) {
                            if (labelPosition === BOTTOM) {
                                translateY = axisPosition + indentFromAxis - box.y + offset
                            } else {
                                translateY = axisPosition - indentFromAxis - (box.y + box.height) - offset
                            }
                            if (textAlign === RIGHT) {
                                translateX = isDiscrete && isFlatLabel ? tick.coords.x - (box.x + box.width) : labelX - box.x - box.width
                            } else if (textAlign === LEFT) {
                                translateX = isDiscrete && isFlatLabel ? labelX - box.x - (tick.coords.x - labelX) : labelX - box.x
                            } else {
                                translateX = labelX - box.x - box.width / 2
                            }
                        } else {
                            translateY = labelCoords.y - box.y - box.height / 2;
                            if (labelPosition === LEFT) {
                                if (textAlign === LEFT) {
                                    translateX = axisPosition - indentFromAxis - maxWidth - box.x
                                } else if (textAlign === CENTER) {
                                    translateX = axisPosition - indentFromAxis - maxWidth / 2 - box.x - box.width / 2
                                } else {
                                    translateX = axisPosition - indentFromAxis - box.x - box.width
                                }
                                translateX -= offset
                            } else {
                                if (textAlign === RIGHT) {
                                    translateX = axisPosition + indentFromAxis + maxWidth - box.x - box.width
                                } else if (textAlign === CENTER) {
                                    translateX = axisPosition + indentFromAxis + maxWidth / 2 - box.x - box.width / 2
                                } else {
                                    translateX = axisPosition + indentFromAxis - box.x
                                }
                                translateX += offset
                            }
                        }
                        return {
                            translateX: translateX,
                            translateY: translateY
                        }
                    },
                    _createAxisConstantLineGroups: function() {
                        const renderer = this._renderer;
                        const classSelector = this._axisCssPrefix;
                        const constantLinesClass = classSelector + "constant-lines";
                        const insideGroup = renderer.g().attr({
                            class: constantLinesClass
                        });
                        const outsideGroup1 = renderer.g().attr({
                            class: constantLinesClass
                        });
                        const outsideGroup2 = renderer.g().attr({
                            class: constantLinesClass
                        });
                        return {
                            inside: insideGroup,
                            outside1: outsideGroup1,
                            left: outsideGroup1,
                            top: outsideGroup1,
                            outside2: outsideGroup2,
                            right: outsideGroup2,
                            bottom: outsideGroup2,
                            remove: function() {
                                this.inside.remove();
                                this.outside1.remove();
                                this.outside2.remove()
                            },
                            clear: function() {
                                this.inside.clear();
                                this.outside1.clear();
                                this.outside2.clear()
                            }
                        }
                    },
                    _createAxisGroups: function() {
                        const renderer = this._renderer;
                        const classSelector = this._axisCssPrefix;
                        this._axisGroup = renderer.g().attr({
                            class: classSelector + "axis"
                        }).enableLinks();
                        this._axisStripGroup = renderer.g().attr({
                            class: classSelector + "strips"
                        });
                        this._axisGridGroup = renderer.g().attr({
                            class: classSelector + "grid"
                        });
                        this._axisElementsGroup = renderer.g().attr({
                            class: classSelector + "elements"
                        });
                        this._axisLineGroup = renderer.g().attr({
                            class: classSelector + "line"
                        }).linkOn(this._axisGroup, "axisLine").linkAppend();
                        this._axisTitleGroup = renderer.g().attr({
                            class: classSelector + "title"
                        }).append(this._axisGroup);
                        this._axisConstantLineGroups = {
                            above: this._createAxisConstantLineGroups(),
                            under: this._createAxisConstantLineGroups()
                        };
                        this._axisStripLabelGroup = renderer.g().attr({
                            class: classSelector + "axis-labels"
                        })
                    },
                    _clearAxisGroups: function() {
                        const that = this;
                        that._axisGroup.remove();
                        that._axisStripGroup.remove();
                        that._axisStripLabelGroup.remove();
                        that._axisConstantLineGroups.above.remove();
                        that._axisConstantLineGroups.under.remove();
                        that._axisGridGroup.remove();
                        that._axisTitleGroup.clear();
                        if (!that._options.label.template || !that.isRendered()) {
                            that._axisElementsGroup.remove();
                            that._axisElementsGroup.clear()
                        }
                        that._axisLineGroup && that._axisLineGroup.clear();
                        that._axisStripGroup && that._axisStripGroup.clear();
                        that._axisGridGroup && that._axisGridGroup.clear();
                        that._axisConstantLineGroups.above.clear();
                        that._axisConstantLineGroups.under.clear();
                        that._axisStripLabelGroup && that._axisStripLabelGroup.clear()
                    },
                    _getLabelFormatObject: function(value, labelOptions, range, point, tickInterval, ticks) {
                        range = range || this._getViewportRange();
                        const formatObject = {
                            value: value,
                            valueText: (0, _smart_formatter.smartFormatter)(value, {
                                labelOptions: labelOptions,
                                ticks: ticks || convertTicksToValues(this._majorTicks),
                                tickInterval: tickInterval ?? this._tickInterval,
                                dataType: this._options.dataType,
                                logarithmBase: this._options.logarithmBase,
                                type: this._options.type,
                                showTransition: !this._options.marker.visible,
                                point: point
                            }) || "",
                            min: range.minVisible,
                            max: range.maxVisible
                        };
                        if (point) {
                            formatObject.point = point
                        }
                        return formatObject
                    },
                    formatLabel: function(value, labelOptions, range, point, tickInterval, ticks) {
                        const formatObject = this._getLabelFormatObject(value, labelOptions, range, point, tickInterval, ticks);
                        return (0, _type.isFunction)(labelOptions.customizeText) ? labelOptions.customizeText.call(formatObject, formatObject) : formatObject.valueText
                    },
                    formatHint: function(value, labelOptions, range) {
                        const formatObject = this._getLabelFormatObject(value, labelOptions, range);
                        return (0, _type.isFunction)(labelOptions.customizeHint) ? labelOptions.customizeHint.call(formatObject, formatObject) : void 0
                    },
                    formatRange(startValue, endValue, interval, argumentFormat) {
                        return (0, _smart_formatter.formatRange)({
                            startValue: startValue,
                            endValue: endValue,
                            tickInterval: interval,
                            argumentFormat: argumentFormat,
                            axisOptions: this.getOptions()
                        })
                    },
                    _setTickOffset: function() {
                        const options = this._options;
                        const discreteAxisDivisionMode = options.discreteAxisDivisionMode;
                        this._tickOffset = +("crossLabels" !== discreteAxisDivisionMode || !discreteAxisDivisionMode)
                    },
                    aggregatedPointBetweenTicks() {
                        return "crossTicks" === this._options.aggregatedPointsPosition
                    },
                    resetApplyingAnimation: function(isFirstDrawing) {
                        this._resetApplyingAnimation = true;
                        if (isFirstDrawing) {
                            this._firstDrawing = true
                        }
                    },
                    isFirstDrawing() {
                        return this._firstDrawing
                    },
                    getMargins: function() {
                        const that = this;
                        const {
                            position: position,
                            offset: offset,
                            customPosition: customPosition,
                            placeholderSize: placeholderSize,
                            grid: grid,
                            tick: tick,
                            crosshairMargin: crosshairMargin
                        } = that._options;
                        const isDefinedCustomPositionOption = (0, _type.isDefined)(customPosition);
                        const boundaryPosition = that.getResolvedBoundaryPosition();
                        const canvas = that.getCanvas();
                        const cLeft = canvas.left;
                        const cTop = canvas.top;
                        const cRight = canvas.width - canvas.right;
                        const cBottom = canvas.height - canvas.bottom;
                        const edgeMarginCorrection = _max(grid.visible && grid.width || 0, tick.visible && tick.width || 0);
                        const constantLineAboveSeries = that._axisConstantLineGroups.above;
                        const constantLineUnderSeries = that._axisConstantLineGroups.under;
                        const boxes = [that._axisElementsGroup, constantLineAboveSeries.outside1, constantLineAboveSeries.outside2, constantLineUnderSeries.outside1, constantLineUnderSeries.outside2, that._axisLineGroup].map((group => group && group.getBBox())).concat(function(group) {
                            const box = group && group.getBBox();
                            if (!box || box.isEmpty) {
                                return box
                            }
                            if (that._isHorizontal) {
                                box.x = cLeft;
                                box.width = cRight - cLeft
                            } else {
                                box.y = cTop;
                                box.height = cBottom - cTop
                            }
                            return box
                        }(that._axisTitleGroup));
                        const margins = (0, _axes_utils.calculateCanvasMargins)(boxes, canvas);
                        margins[position] += crosshairMargin;
                        if (that.hasNonBoundaryPosition() && isDefinedCustomPositionOption) {
                            margins[boundaryPosition] = 0
                        }
                        if (placeholderSize) {
                            margins[position] = placeholderSize
                        }
                        if (edgeMarginCorrection) {
                            if (that._isHorizontal && canvas.right < edgeMarginCorrection && margins.right < edgeMarginCorrection) {
                                margins.right = edgeMarginCorrection
                            }
                            if (!that._isHorizontal && canvas.bottom < edgeMarginCorrection && margins.bottom < edgeMarginCorrection) {
                                margins.bottom = edgeMarginCorrection
                            }
                        }
                        if (!isDefinedCustomPositionOption && (0, _type.isDefined)(offset)) {
                            const moveByOffset = that.customPositionIsBoundary() && (offset > 0 && (boundaryPosition === LEFT || boundaryPosition === TOP) || offset < 0 && (boundaryPosition === RIGHT || boundaryPosition === BOTTOM));
                            margins[boundaryPosition] -= moveByOffset ? offset : 0
                        }
                        return margins
                    },
                    validateUnit: function(unit, idError, parameters) {
                        const that = this;
                        unit = that.parser(unit);
                        if (void 0 === unit && idError) {
                            that._incidentOccurred(idError, [parameters])
                        }
                        return unit
                    },
                    _setType: function(axisType, drawingType) {
                        let axisTypeMethods;
                        switch (axisType) {
                            case "xyAxes":
                                axisTypeMethods = _xy_axes.default;
                                break;
                            case "polarAxes":
                                axisTypeMethods = polarMethods
                        }(0, _extend.extend)(this, axisTypeMethods[drawingType])
                    },
                    _getSharpParam: function() {
                        return true
                    },
                    _disposeBreaksGroup: _common.noop,
                    dispose: function() {
                        [this._axisElementsGroup, this._axisStripGroup, this._axisGroup].forEach((function(g) {
                            g.dispose()
                        }));
                        this._strips = this._title = null;
                        this._axisStripGroup = this._axisConstantLineGroups = this._axisStripLabelGroup = this._axisBreaksGroup = null;
                        this._axisLineGroup = this._axisElementsGroup = this._axisGridGroup = null;
                        this._axisGroup = this._axisTitleGroup = null;
                        this._axesContainerGroup = this._stripsGroup = this._constantLinesGroup = this._labelsAxesGroup = null;
                        this._renderer = this._options = this._textOptions = this._textFontStyles = null;
                        this._translator = null;
                        this._majorTicks = this._minorTicks = null;
                        this._disposeBreaksGroup();
                        this._templatesRendered && this._templatesRendered.reject()
                    },
                    getOptions: function() {
                        return this._options
                    },
                    setPane: function(pane) {
                        this.pane = pane;
                        this._options.pane = pane
                    },
                    setTypes: function(type, axisType, typeSelector) {
                        this._options.type = type || this._options.type;
                        this._options[typeSelector] = axisType || this._options[typeSelector];
                        this._updateTranslator()
                    },
                    resetTypes: function(typeSelector) {
                        this._options.type = this._initTypes.type;
                        this._options[typeSelector] = this._initTypes[typeSelector]
                    },
                    getTranslator: function() {
                        return this._translator
                    },
                    updateOptions: function(options) {
                        const that = this;
                        const labelOpt = options.label;
                        ! function(options) {
                            const labelOptions = options.label;
                            let position = options.position;
                            const defaultPosition = options.isHorizontal ? BOTTOM : LEFT;
                            const secondaryPosition = options.isHorizontal ? TOP : RIGHT;
                            let labelPosition = labelOptions.position;
                            if (position !== defaultPosition && position !== secondaryPosition) {
                                position = defaultPosition
                            }
                            if (!labelPosition || "outside" === labelPosition) {
                                labelPosition = position
                            } else if ("inside" === labelPosition) {
                                labelPosition = {
                                    [TOP]: BOTTOM,
                                    [BOTTOM]: TOP,
                                    [LEFT]: RIGHT,
                                    [RIGHT]: LEFT
                                } [position]
                            }
                            if (labelPosition !== defaultPosition && labelPosition !== secondaryPosition) {
                                labelPosition = position
                            }
                            if (labelOptions.alignment !== CENTER && !labelOptions.userAlignment) {
                                labelOptions.alignment = {
                                    [TOP]: CENTER,
                                    [BOTTOM]: CENTER,
                                    [LEFT]: RIGHT,
                                    [RIGHT]: LEFT
                                } [labelPosition]
                            }
                            options.position = position;
                            labelOptions.position = labelPosition;
                            options.hoverMode = options.hoverMode ? options.hoverMode.toLowerCase() : "none";
                            labelOptions.minSpacing = labelOptions.minSpacing ?? 5;
                            options.type && (options.type = options.type.toLowerCase());
                            options.argumentType && (options.argumentType = options.argumentType.toLowerCase());
                            options.valueType && (options.valueType = options.valueType.toLowerCase())
                        }(options);
                        that._options = options;
                        options.tick = options.tick || {};
                        options.minorTick = options.minorTick || {};
                        options.grid = options.grid || {};
                        options.minorGrid = options.minorGrid || {};
                        options.title = options.title || {};
                        options.marker = options.marker || {};
                        that._initTypes = {
                            type: options.type,
                            argumentType: options.argumentType,
                            valueType: options.valueType
                        };
                        that._setTickOffset();
                        that._isHorizontal = options.isHorizontal;
                        that.pane = options.pane;
                        that.name = options.name;
                        that.priority = options.priority;
                        that._hasLabelFormat = "" !== labelOpt.format && (0, _type.isDefined)(labelOpt.format);
                        that._textOptions = {
                            opacity: labelOpt.opacity,
                            align: "center",
                            class: labelOpt.cssClass
                        };
                        that._textFontStyles = (0, _utils.patchFontOptions)(labelOpt.font);
                        if (options.type === _axes_constants.default.logarithmic) {
                            if (options.logarithmBaseError) {
                                that._incidentOccurred("E2104");
                                delete options.logarithmBaseError
                            }
                        }
                        that._updateTranslator();
                        that._createConstantLines();
                        that._strips = (options.strips || []).map((o => (0, _strip.default)(that, o)));
                        that._majorTicks = that._minorTicks = null;
                        that._firstDrawing = true
                    },
                    calculateInterval: function(value, prevValue) {
                        const options = this._options;
                        if (!options || options.type !== _axes_constants.default.logarithmic) {
                            return _abs(value - prevValue)
                        }
                        const {
                            allowNegatives: allowNegatives,
                            linearThreshold: linearThreshold
                        } = new _range.Range(this.getTranslator().getBusinessRange());
                        return _abs((0, _utils.getLogExt)(value, options.logarithmBase, allowNegatives, linearThreshold) - (0, _utils.getLogExt)(prevValue, options.logarithmBase, allowNegatives, linearThreshold))
                    },
                    getCanvasRange() {
                        const translator = this._translator;
                        return {
                            startValue: translator.from(translator.translate("canvas_position_start")),
                            endValue: translator.from(translator.translate("canvas_position_end"))
                        }
                    },
                    _processCanvas: function(canvas) {
                        return canvas
                    },
                    updateCanvas: function(canvas, canvasRedesign) {
                        if (!canvasRedesign) {
                            const positions = this._orthogonalPositions = {
                                start: !this._isHorizontal ? canvas.left : canvas.top,
                                end: !this._isHorizontal ? canvas.width - canvas.right : canvas.height - canvas.bottom
                            };
                            positions.center = positions.start + (positions.end - positions.start) / 2
                        } else {
                            this._orthogonalPositions = null
                        }
                        this._canvas = canvas;
                        this._translator.updateCanvas(this._processCanvas(canvas));
                        this._initAxisPositions()
                    },
                    getCanvas: function() {
                        return this._canvas
                    },
                    getAxisShift() {
                        return this._axisShift || 0
                    },
                    hideTitle: function() {
                        const that = this;
                        if (that._options.title.text) {
                            that._incidentOccurred("W2105", [that._isHorizontal ? "horizontal" : "vertical"]);
                            that._axisTitleGroup.clear()
                        }
                    },
                    getTitle: function() {
                        return this._title
                    },
                    hideOuterElements: function() {
                        const that = this;
                        const options = that._options;
                        if ((options.label.visible || that._outsideConstantLines.length) && !that._translator.getBusinessRange().isEmpty()) {
                            that._incidentOccurred("W2106", [that._isHorizontal ? "horizontal" : "vertical"]);
                            that._axisElementsGroup.clear();
                            callAction(that._outsideConstantLines, "removeLabel")
                        }
                    },
                    _resolveLogarithmicOptionsForRange(range) {
                        const options = this._options;
                        if (options.type === _axes_constants.default.logarithmic) {
                            range.addRange({
                                allowNegatives: void 0 !== options.allowNegatives ? options.allowNegatives : range.min <= 0
                            });
                            if (!isNaN(options.linearThreshold)) {
                                range.linearThreshold = options.linearThreshold
                            }
                        }
                    },
                    adjustViewport(businessRange) {
                        const options = this._options;
                        const isDiscrete = options.type === _axes_constants.default.discrete;
                        let categories = this._seriesData && this._seriesData.categories || [];
                        const wholeRange = this.adjustRange((0, _utils.getVizRangeObject)(options.wholeRange));
                        const visualRange = this.getViewport() || {};
                        const result = new _range.Range(businessRange);
                        this._addConstantLinesToRange(result);
                        let minDefined = (0, _type.isDefined)(visualRange.startValue);
                        let maxDefined = (0, _type.isDefined)(visualRange.endValue);
                        if (!isDiscrete) {
                            minDefined = minDefined && (!(0, _type.isDefined)(wholeRange.endValue) || visualRange.startValue < wholeRange.endValue);
                            maxDefined = maxDefined && (!(0, _type.isDefined)(wholeRange.startValue) || visualRange.endValue > wholeRange.startValue)
                        }
                        const minVisible = minDefined ? visualRange.startValue : result.minVisible;
                        const maxVisible = maxDefined ? visualRange.endValue : result.maxVisible;
                        if (!isDiscrete) {
                            result.min = wholeRange.startValue ?? result.min;
                            result.max = wholeRange.endValue ?? result.max
                        } else {
                            const categoriesInfo = (0, _utils.getCategoriesInfo)(categories, wholeRange.startValue, wholeRange.endValue);
                            categories = categoriesInfo.categories;
                            result.categories = categories
                        }
                        const adjustedVisualRange = (0, _utils.adjustVisualRange)({
                            axisType: options.type,
                            dataType: options.dataType,
                            base: options.logarithmBase
                        }, {
                            startValue: minDefined ? visualRange.startValue : void 0,
                            endValue: maxDefined ? visualRange.endValue : void 0,
                            length: visualRange.length
                        }, {
                            categories: categories,
                            min: wholeRange.startValue,
                            max: wholeRange.endValue
                        }, {
                            categories: categories,
                            min: minVisible,
                            max: maxVisible
                        });
                        result.minVisible = adjustedVisualRange.startValue;
                        result.maxVisible = adjustedVisualRange.endValue;
                        !(0, _type.isDefined)(result.min) && (result.min = result.minVisible);
                        !(0, _type.isDefined)(result.max) && (result.max = result.maxVisible);
                        result.addRange({});
                        this._resolveLogarithmicOptionsForRange(result);
                        return result
                    },
                    adjustRange(range) {
                        range = range || {};
                        const isDiscrete = this._options.type === _axes_constants.default.discrete;
                        const isLogarithmic = this._options.type === _axes_constants.default.logarithmic;
                        const disabledNegatives = false === this._options.allowNegatives;
                        if (isLogarithmic) {
                            range.startValue = disabledNegatives && range.startValue <= 0 ? null : range.startValue;
                            range.endValue = disabledNegatives && range.endValue <= 0 ? null : range.endValue
                        }
                        if (!isDiscrete && (0, _type.isDefined)(range.startValue) && (0, _type.isDefined)(range.endValue) && range.startValue > range.endValue) {
                            const tmp = range.endValue;
                            range.endValue = range.startValue;
                            range.startValue = tmp
                        }
                        return range
                    },
                    _getVisualRangeUpdateMode(viewport, newRange, oppositeValue) {
                        let value = this._options.visualRangeUpdateMode;
                        const translator = this._translator;
                        const range = this._seriesData;
                        const prevDataInfo = this._prevDataInfo;
                        if (prevDataInfo.isEmpty && !prevDataInfo.containsConstantLine) {
                            return KEEP
                        }
                        if (!this.isArgumentAxis) {
                            const viewport = this.getViewport();
                            const isViewportNotDefined = !(0, _type.isDefined)(viewport.startValue) && !(0, _type.isDefined)(viewport.endValue) && !(0, _type.isDefined)(viewport.length);
                            if (isViewportNotDefined) {
                                const visualRange = this.visualRange();
                                const isVisualRangeNotDefined = !(0, _type.isDefined)(visualRange.startValue) && !(0, _type.isDefined)(visualRange.endValue);
                                if (isVisualRangeNotDefined) {
                                    return RESET
                                }
                            }
                        }
                        if (this.isArgumentAxis) {
                            if (-1 === [SHIFT, KEEP, RESET].indexOf(value)) {
                                if (range.axisType === _axes_constants.default.discrete) {
                                    const categories = range.categories;
                                    const newCategories = newRange.categories;
                                    const visualRange = this.visualRange();
                                    if (categories && newCategories && categories.length && -1 !== newCategories.map((c => c.valueOf())).join(",").indexOf(categories.map((c => c.valueOf())).join(",")) && (visualRange.startValue.valueOf() !== categories[0].valueOf() || visualRange.endValue.valueOf() !== categories[categories.length - 1].valueOf())) {
                                        value = KEEP
                                    } else {
                                        value = RESET
                                    }
                                } else {
                                    const minPoint = translator.translate(range.min);
                                    const minVisiblePoint = translator.translate(viewport.startValue);
                                    const maxPoint = translator.translate(range.max);
                                    const maxVisiblePoint = translator.translate(viewport.endValue);
                                    if (minPoint === minVisiblePoint && maxPoint === maxVisiblePoint) {
                                        value = RESET
                                    } else if (minPoint !== minVisiblePoint && maxPoint === maxVisiblePoint) {
                                        value = SHIFT
                                    } else {
                                        value = KEEP
                                    }
                                }
                                if (value === KEEP && prevDataInfo.isEmpty && prevDataInfo.containsConstantLine) {
                                    value = RESET
                                }
                            }
                        } else if (-1 === [KEEP, RESET].indexOf(value)) {
                            if (oppositeValue === KEEP) {
                                value = KEEP
                            } else {
                                value = RESET
                            }
                        }
                        return value
                    },
                    _handleBusinessRangeChanged(oppositeVisualRangeUpdateMode, axisReinitialized, newRange) {
                        const that = this;
                        const visualRange = this.visualRange();
                        if (axisReinitialized || that._translator.getBusinessRange().isEmpty()) {
                            return
                        }
                        const visualRangeUpdateMode = that._lastVisualRangeUpdateMode = that._getVisualRangeUpdateMode(visualRange, newRange, oppositeVisualRangeUpdateMode);
                        if (visualRangeUpdateMode === KEEP) {
                            that._setVisualRange([visualRange.startValue, visualRange.endValue])
                        } else if (visualRangeUpdateMode === RESET) {
                            that._setVisualRange([null, null])
                        } else if (visualRangeUpdateMode === SHIFT) {
                            that._setVisualRange({
                                length: that.getVisualRangeLength()
                            })
                        }
                    },
                    getVisualRangeLength(range) {
                        const currentBusinessRange = range || this._translator.getBusinessRange();
                        const {
                            type: type
                        } = this._options;
                        let length;
                        if (type === _axes_constants.default.logarithmic) {
                            length = (0, _math2.adjust)(this.calculateInterval(currentBusinessRange.maxVisible, currentBusinessRange.minVisible))
                        } else if (type === _axes_constants.default.discrete) {
                            const categoriesInfo = (0, _utils.getCategoriesInfo)(currentBusinessRange.categories, currentBusinessRange.minVisible, currentBusinessRange.maxVisible);
                            length = categoriesInfo.categories.length
                        } else {
                            length = currentBusinessRange.maxVisible - currentBusinessRange.minVisible
                        }
                        return length
                    },
                    getVisualRangeCenter(range, useMerge) {
                        const translator = this.getTranslator();
                        const businessRange = translator.getBusinessRange();
                        const currentBusinessRange = useMerge ? (0, _extend.extend)(true, {}, businessRange, range || {}) : range || businessRange;
                        const {
                            type: type,
                            logarithmBase: logarithmBase
                        } = this._options;
                        let center;
                        if (!(0, _type.isDefined)(currentBusinessRange.minVisible) || !(0, _type.isDefined)(currentBusinessRange.maxVisible)) {
                            return
                        }
                        if (type === _axes_constants.default.logarithmic) {
                            const {
                                allowNegatives: allowNegatives,
                                linearThreshold: linearThreshold,
                                minVisible: minVisible,
                                maxVisible: maxVisible
                            } = currentBusinessRange;
                            center = (0, _utils.raiseToExt)((0, _math2.adjust)((0, _utils.getLogExt)(maxVisible, logarithmBase, allowNegatives, linearThreshold) + (0, _utils.getLogExt)(minVisible, logarithmBase, allowNegatives, linearThreshold)) / 2, logarithmBase, allowNegatives, linearThreshold)
                        } else if (type === _axes_constants.default.discrete) {
                            const categoriesInfo = (0, _utils.getCategoriesInfo)(currentBusinessRange.categories, currentBusinessRange.minVisible, currentBusinessRange.maxVisible);
                            const index = Math.ceil(categoriesInfo.categories.length / 2) - 1;
                            center = businessRange.categories.indexOf(categoriesInfo.categories[index])
                        } else {
                            center = translator.toValue((currentBusinessRange.maxVisible.valueOf() + currentBusinessRange.minVisible.valueOf()) / 2)
                        }
                        return center
                    },
                    setBusinessRange(range, axisReinitialized, oppositeVisualRangeUpdateMode, argCategories) {
                        const that = this;
                        const options = that._options;
                        const isDiscrete = options.type === _axes_constants.default.discrete;
                        that._handleBusinessRangeChanged(oppositeVisualRangeUpdateMode, axisReinitialized, range);
                        that._seriesData = new _range.Range(range);
                        const dataIsEmpty = that._seriesData.isEmpty();
                        const rangeWithConstantLines = new _range.Range(that._seriesData);
                        that._addConstantLinesToRange(rangeWithConstantLines);
                        that._prevDataInfo = {
                            isEmpty: dataIsEmpty,
                            containsConstantLine: rangeWithConstantLines.containsConstantLine
                        };
                        that._seriesData.addRange({
                            categories: options.categories,
                            dataType: options.dataType,
                            axisType: options.type,
                            base: options.logarithmBase,
                            invert: options.inverted
                        });
                        that._resolveLogarithmicOptionsForRange(that._seriesData);
                        if (!isDiscrete) {
                            if (!(0, _type.isDefined)(that._seriesData.min) && !(0, _type.isDefined)(that._seriesData.max)) {
                                const visualRange = that.getViewport();
                                visualRange && that._seriesData.addRange({
                                    min: visualRange.startValue,
                                    max: visualRange.endValue
                                })
                            }
                            const synchronizedValue = options.synchronizedValue;
                            if ((0, _type.isDefined)(synchronizedValue)) {
                                that._seriesData.addRange({
                                    min: synchronizedValue,
                                    max: synchronizedValue
                                })
                            }
                        }
                        that._seriesData.minVisible = that._seriesData.minVisible ?? that._seriesData.min;
                        that._seriesData.maxVisible = that._seriesData.maxVisible ?? that._seriesData.max;
                        if (!that.isArgumentAxis && options.showZero) {
                            that._seriesData.correctValueZeroLevel()
                        }
                        that._seriesData.sortCategories(that.getCategoriesSorter(argCategories));
                        that._seriesData.userBreaks = that._seriesData.isEmpty() ? [] : that._getScaleBreaks(options, that._seriesData, that._series, that.isArgumentAxis);
                        that._translator.updateBusinessRange(that._getViewportRange())
                    },
                    _addConstantLinesToRange(dataRange) {
                        this._outsideConstantLines.concat(this._insideConstantLines || []).forEach((cl => {
                            if (cl.options.extendAxis) {
                                const value = cl.getParsedValue();
                                dataRange.addRange({
                                    containsConstantLine: true,
                                    minVisible: value,
                                    maxVisible: value,
                                    min: !(0, _type.isDefined)(dataRange.min) ? value : dataRange.min,
                                    max: !(0, _type.isDefined)(dataRange.max) ? value : dataRange.max
                                })
                            }
                        }))
                    },
                    setGroupSeries: function(series) {
                        this._series = series
                    },
                    getLabelsPosition: function() {
                        const options = this._options;
                        const position = options.position;
                        const labelShift = options.label.indentFromAxis + (this._axisShift || 0) + this._constantLabelOffset;
                        const axisPosition = this._axisPosition;
                        return position === TOP || position === LEFT ? axisPosition - labelShift : axisPosition + labelShift
                    },
                    getFormattedValue: function(value, options, point) {
                        const labelOptions = this._options.label;
                        return (0, _type.isDefined)(value) ? this.formatLabel(value, (0, _extend.extend)(true, {}, labelOptions, options), void 0, point) : null
                    },
                    _getBoundaryTicks: function(majors, viewPort) {
                        const that = this;
                        const length = majors.length;
                        const options = that._options;
                        const customBounds = options.customBoundTicks;
                        const min = viewPort.minVisible;
                        const max = viewPort.maxVisible;
                        const addMinMax = options.showCustomBoundaryTicks ? that._boundaryTicksVisibility : {};
                        let boundaryTicks = [];
                        if (options.type === _axes_constants.default.discrete) {
                            if (that._tickOffset && 0 !== majors.length) {
                                boundaryTicks = [majors[0], majors[majors.length - 1]]
                            }
                        } else if (customBounds) {
                            if (addMinMax.min && (0, _type.isDefined)(customBounds[0])) {
                                boundaryTicks.push(customBounds[0])
                            }
                            if (addMinMax.max && (0, _type.isDefined)(customBounds[1])) {
                                boundaryTicks.push(customBounds[1])
                            }
                        } else {
                            if (addMinMax.min && (0 === length || majors[0] > min)) {
                                boundaryTicks.push(min)
                            }
                            if (addMinMax.max && (0 === length || majors[length - 1] < max)) {
                                boundaryTicks.push(max)
                            }
                        }
                        return boundaryTicks
                    },
                    setPercentLabelFormat: function() {
                        if (!this._hasLabelFormat) {
                            this._options.label.format = "percent"
                        }
                    },
                    resetAutoLabelFormat: function() {
                        if (!this._hasLabelFormat) {
                            delete this._options.label.format
                        }
                    },
                    getMultipleAxesSpacing: function() {
                        return this._options.multipleAxesSpacing || 0
                    },
                    getTicksValues: function() {
                        return {
                            majorTicksValues: convertTicksToValues(this._majorTicks),
                            minorTicksValues: convertTicksToValues(this._minorTicks)
                        }
                    },
                    estimateTickInterval: function(canvas) {
                        this.updateCanvas(canvas);
                        return this._tickInterval !== this._getTicks(this._getViewportRange(), _common.noop, true).tickInterval
                    },
                    setTicks: function(ticks) {
                        const majors = ticks.majorTicks || [];
                        this._majorTicks = majors.map(createMajorTick(this, this._renderer, this._getSkippedCategory(majors)));
                        this._minorTicks = (ticks.minorTicks || []).map(createMinorTick(this, this._renderer));
                        this._isSynchronized = true
                    },
                    _adjustDivisionFactor: function(val) {
                        return val
                    },
                    _getTicks: function(viewPort, incidentOccurred, skipTickGeneration) {
                        const options = this._options;
                        const customTicks = options.customTicks;
                        const customMinorTicks = options.customMinorTicks;
                        return getTickGenerator(options, incidentOccurred || this._incidentOccurred, skipTickGeneration, this._translator.getBusinessRange().isEmpty(), this._adjustDivisionFactor.bind(this), viewPort)({
                            min: viewPort.minVisible,
                            max: viewPort.maxVisible,
                            categories: viewPort.categories,
                            isSpacedMargin: viewPort.isSpacedMargin
                        }, this._getScreenDelta(), options.tickInterval, "ignore" === options.label.overlappingBehavior || options.forceUserTickInterval, {
                            majors: customTicks,
                            minors: customMinorTicks
                        }, options.minorTickInterval, options.minorTickCount, this._initialBreaks)
                    },
                    _createTicksAndLabelFormat: function(range, incidentOccurred) {
                        const options = this._options;
                        const ticks = this._getTicks(range, incidentOccurred, false);
                        if (!range.isEmpty() && options.type === _axes_constants.default.discrete && "datetime" === options.dataType && !this._hasLabelFormat && ticks.ticks.length) {
                            options.label.format = _format_helper.default.getDateFormatByTicks(ticks.ticks)
                        }
                        return ticks
                    },
                    getAggregationInfo(useAllAggregatedPoints, range) {
                        var _that$_seriesData;
                        const options = this._options;
                        const businessRange = new _range.Range(this.getTranslator().getBusinessRange()).addRange(range);
                        const visualRange = this.getViewport();
                        const minVisible = (null === visualRange || void 0 === visualRange ? void 0 : visualRange.startValue) ?? businessRange.minVisible;
                        const maxVisible = (null === visualRange || void 0 === visualRange ? void 0 : visualRange.endValue) ?? businessRange.maxVisible;
                        const aggregationInterval = options.aggregationInterval;
                        const aggregationGroupWidth = this._getAggregationGroupWidth();
                        const minInterval = !options.aggregationGroupWidth && !aggregationInterval && range.interval;
                        const generateTicks = function(options, axisDivisionFactor, viewPort, screenDelta, minTickInterval) {
                            const tickGeneratorOptions = (0, _extend.extend)({}, options, {
                                endOnTick: true,
                                axisDivisionFactor: axisDivisionFactor,
                                skipCalculationLimits: true,
                                generateExtraTick: true,
                                minTickInterval: minTickInterval
                            });
                            return function(tickInterval, skipTickGeneration, min, max, breaks) {
                                return getTickGenerator(tickGeneratorOptions, _common.noop, skipTickGeneration, viewPort.isEmpty(), (v => v), viewPort)({
                                    min: min,
                                    max: max,
                                    categories: viewPort.categories,
                                    isSpacedMargin: viewPort.isSpacedMargin
                                }, screenDelta, tickInterval, (0, _type.isDefined)(tickInterval), void 0, void 0, void 0, breaks)
                            }
                        }(options, aggregationGroupWidth, businessRange, this._getScreenDelta(), minInterval);
                        const tickInterval = generateTicks(aggregationInterval, true, minVisible, maxVisible, null === (_that$_seriesData = this._seriesData) || void 0 === _that$_seriesData ? void 0 : _that$_seriesData.breaks).tickInterval;
                        const ticks = this._generateTick(useAllAggregatedPoints, businessRange, minVisible, maxVisible, tickInterval, generateTicks);
                        this._aggregationInterval = tickInterval;
                        return {
                            interval: tickInterval,
                            ticks: ticks
                        }
                    },
                    _getAggregationGroupWidth() {
                        const {
                            checkInterval: checkInterval,
                            sizePointNormalState: sizePointNormalState
                        } = this._marginOptions || {};
                        const {
                            aggregationGroupWidth: aggregationGroupWidth,
                            axisDivisionFactor: axisDivisionFactor
                        } = this._options;
                        if (aggregationGroupWidth) {
                            return aggregationGroupWidth
                        }
                        if (sizePointNormalState) {
                            return Math.min(sizePointNormalState, axisDivisionFactor)
                        }
                        if (checkInterval) {
                            return axisDivisionFactor
                        }
                        return aggregationGroupWidth
                    },
                    _generateTick(useAllAggregatedPoints, businessRange, minVisible, maxVisible, tickInterval, generateTicks) {
                        const min = useAllAggregatedPoints ? businessRange.min : minVisible;
                        const max = useAllAggregatedPoints ? businessRange.max : maxVisible;
                        if (!(0, _type.isDefined)(min) || !(0, _type.isDefined)(max)) {
                            return []
                        }
                        const that = this;
                        const options = that._options;
                        const add = (0, _utils.getAddFunction)({
                            base: options.logarithmBase,
                            axisType: options.type,
                            dataType: options.dataType
                        }, false);
                        let start = min;
                        let end = max;
                        if (!useAllAggregatedPoints && (0, _type.isDefined)(tickInterval)) {
                            const maxMinDistance = Math.max(that.calculateInterval(max, min), "datetime" === options.dataType ? _date.default.dateToMilliseconds(tickInterval) : tickInterval);
                            start = add(min, maxMinDistance, -1);
                            end = add(max, maxMinDistance)
                        }
                        start = start < businessRange.min ? businessRange.min : start;
                        end = end > businessRange.max ? businessRange.max : end;
                        const breaks = that._getScaleBreaks(options, {
                            minVisible: start,
                            maxVisible: end
                        }, that._series, that.isArgumentAxis);
                        const filteredBreaks = that._filterBreaks(breaks, {
                            minVisible: start,
                            maxVisible: end
                        }, options.breakStyle);
                        return generateTicks(tickInterval, false, start, end, filteredBreaks).ticks
                    },
                    getTickInterval() {
                        return this._tickInterval
                    },
                    getAggregationInterval() {
                        return this._aggregationInterval
                    },
                    createTicks: function(canvas) {
                        const that = this;
                        const renderer = that._renderer;
                        const options = that._options;
                        if (!canvas) {
                            return
                        }
                        that._isSynchronized = false;
                        that.updateCanvas(canvas);
                        const range = that._getViewportRange();
                        that._initialBreaks = range.breaks = this._seriesData.breaks = that._filterBreaks(this._seriesData.userBreaks, range, options.breakStyle);
                        that._estimatedTickInterval = that._getTicks(that.adjustViewport(this._seriesData), _common.noop, true).tickInterval;
                        const margins = this._calculateValueMargins();
                        range.addRange({
                            minVisible: margins.minValue,
                            maxVisible: margins.maxValue,
                            isSpacedMargin: margins.isSpacedMargin
                        });
                        const ticks = that._createTicksAndLabelFormat(range);
                        const boundaryTicks = that._getBoundaryTicks(ticks.ticks, that._getViewportRange());
                        if (options.showCustomBoundaryTicks && boundaryTicks.length) {
                            that._boundaryTicks = [boundaryTicks[0]].map(createBoundaryTick(that, renderer, true));
                            if (boundaryTicks.length > 1) {
                                that._boundaryTicks = that._boundaryTicks.concat([boundaryTicks[1]].map(createBoundaryTick(that, renderer, false)))
                            }
                        } else {
                            that._boundaryTicks = []
                        }
                        const minors = (ticks.minorTicks || []).filter((function(minor) {
                            return !boundaryTicks.some((function(boundary) {
                                return (0, _utils.valueOf)(boundary) === (0, _utils.valueOf)(minor)
                            }))
                        }));
                        that._tickInterval = ticks.tickInterval;
                        that._minorTickInterval = ticks.minorTickInterval;
                        const oldMajorTicks = that._majorTicks || [];
                        const majorTicksByValues = oldMajorTicks.reduce(((r, t) => {
                            r[t.value.valueOf()] = t;
                            return r
                        }), {});
                        const sameType = (0, _type.type)(ticks.ticks[0]) === (0, _type.type)(oldMajorTicks[0] && oldMajorTicks[0].value);
                        const skippedCategory = that._getSkippedCategory(ticks.ticks);
                        const majorTicks = ticks.ticks.map((v => {
                            const tick = majorTicksByValues[v.valueOf()];
                            if (tick && sameType) {
                                delete majorTicksByValues[v.valueOf()];
                                tick.setSkippedCategory(skippedCategory);
                                return tick
                            } else {
                                return createMajorTick(that, renderer, skippedCategory)(v)
                            }
                        }));
                        that._majorTicks = majorTicks;
                        const oldMinorTicks = that._minorTicks || [];
                        that._minorTicks = minors.map(((v, i) => {
                            const minorTick = oldMinorTicks[i];
                            if (minorTick) {
                                minorTick.updateValue(v);
                                return minorTick
                            }
                            return createMinorTick(that, renderer)(v)
                        }));
                        that._ticksToRemove = Object.keys(majorTicksByValues).map((k => majorTicksByValues[k])).concat(oldMinorTicks.slice(that._minorTicks.length, oldMinorTicks.length));
                        that._ticksToRemove.forEach((t => {
                            var _t$label;
                            return null === (_t$label = t.label) || void 0 === _t$label ? void 0 : _t$label.removeTitle()
                        }));
                        if (ticks.breaks) {
                            that._seriesData.breaks = ticks.breaks
                        }
                        that._reinitTranslator(that._getViewportRange())
                    },
                    _reinitTranslator: function(range) {
                        const translator = this._translator;
                        if (this._isSynchronized) {
                            return
                        }
                        translator.updateBusinessRange(range)
                    },
                    _getViewportRange() {
                        return this.adjustViewport(this._seriesData)
                    },
                    setMarginOptions: function(options) {
                        this._marginOptions = options
                    },
                    getMarginOptions() {
                        return this._marginOptions ?? {}
                    },
                    _calculateRangeInterval: function(interval) {
                        const isDateTime = "datetime" === this._options.dataType;
                        const minArgs = [];
                        const addToArgs = function(value) {
                            (0, _type.isDefined)(value) && minArgs.push(isDateTime ? _date.default.dateToMilliseconds(value) : value)
                        };
                        addToArgs(this._tickInterval);
                        addToArgs(this._estimatedTickInterval);
                        (0, _type.isDefined)(interval) && minArgs.push(interval);
                        addToArgs(this._aggregationInterval);
                        return this._calculateWorkWeekInterval(_min.apply(this, minArgs))
                    },
                    _calculateWorkWeekInterval(businessInterval) {
                        const options = this._options;
                        if ("datetime" === options.dataType && options.workdaysOnly && businessInterval) {
                            const workWeek = options.workWeek.length * dateIntervals_day;
                            const weekend = dateIntervals_week - workWeek;
                            if (workWeek !== businessInterval && weekend < businessInterval) {
                                const weekendsCount = Math.ceil(businessInterval / dateIntervals_week);
                                businessInterval -= weekend * weekendsCount
                            } else if (weekend >= businessInterval && businessInterval > dateIntervals_day) {
                                businessInterval = dateIntervals_day
                            }
                        }
                        return businessInterval
                    },
                    _getConvertIntervalCoefficient(intervalInPx, screenDelta) {
                        const ratioOfCanvasRange = this._translator.ratioOfCanvasRange();
                        return ratioOfCanvasRange / (ratioOfCanvasRange * screenDelta / (intervalInPx + screenDelta))
                    },
                    _calculateValueMargins(ticks) {
                        this._resetMargins();
                        const that = this;
                        const margins = that.getMarginOptions();
                        const marginSize = (margins.size || 0) / 2;
                        const options = that._options;
                        const dataRange = that._getViewportRange();
                        const viewPort = that.getViewport();
                        const screenDelta = that._getScreenDelta();
                        const isDiscrete = -1 !== (options.type || "").indexOf(_axes_constants.default.discrete);
                        const valueMarginsEnabled = options.valueMarginsEnabled && !isDiscrete && !that.customPositionIsBoundaryOrthogonalAxis();
                        const translator = that._translator;
                        const minValueMargin = options.minValueMargin;
                        const maxValueMargin = options.maxValueMargin;
                        let minPadding = 0;
                        let maxPadding = 0;
                        let interval = 0;
                        let rangeInterval;
                        if (dataRange.stubData || !screenDelta) {
                            return {
                                startPadding: 0,
                                endPadding: 0
                            }
                        }
                        if (that.isArgumentAxis && margins.checkInterval) {
                            rangeInterval = that._calculateRangeInterval(dataRange.interval);
                            const pxInterval = translator.getInterval(rangeInterval);
                            if (isFinite(pxInterval)) {
                                interval = Math.ceil(pxInterval / (2 * that._getConvertIntervalCoefficient(pxInterval, screenDelta)))
                            } else {
                                rangeInterval = 0
                            }
                        }
                        let minPercentPadding;
                        let maxPercentPadding;
                        const maxPaddingValue = .8 * screenDelta / 2;
                        if (valueMarginsEnabled) {
                            if ((0, _type.isDefined)(minValueMargin)) {
                                minPercentPadding = isFinite(minValueMargin) ? minValueMargin : 0
                            } else if (!that.isArgumentAxis && margins.checkInterval && (0, _utils.valueOf)(dataRange.minVisible) > 0 && (0, _utils.valueOf)(dataRange.minVisible) === (0, _utils.valueOf)(dataRange.min)) {
                                minPadding = 5
                            } else {
                                minPadding = Math.max(marginSize, interval);
                                minPadding = Math.min(maxPaddingValue, minPadding)
                            }
                            if ((0, _type.isDefined)(maxValueMargin)) {
                                maxPercentPadding = isFinite(maxValueMargin) ? maxValueMargin : 0
                            } else if (!that.isArgumentAxis && margins.checkInterval && (0, _utils.valueOf)(dataRange.maxVisible) < 0 && (0, _utils.valueOf)(dataRange.maxVisible) === (0, _utils.valueOf)(dataRange.max)) {
                                maxPadding = 5
                            } else {
                                maxPadding = Math.max(marginSize, interval);
                                maxPadding = Math.min(maxPaddingValue, maxPadding)
                            }
                        }
                        const percentStick = margins.percentStick && !this.isArgumentAxis;
                        if (percentStick) {
                            if (1 === _abs(dataRange.max)) {
                                maxPadding = 0
                            }
                            if (1 === _abs(dataRange.min)) {
                                minPadding = 0
                            }
                        }
                        const canvasStartEnd = that._getCanvasStartEnd();
                        const commonMargin = 1 + (minPercentPadding || 0) + (maxPercentPadding || 0);
                        const screenDeltaWithMargins = (screenDelta - minPadding - maxPadding) / commonMargin || screenDelta;
                        if (void 0 !== minPercentPadding || void 0 !== maxPercentPadding) {
                            if (void 0 !== minPercentPadding) {
                                minPadding = screenDeltaWithMargins * minPercentPadding
                            }
                            if (void 0 !== maxPercentPadding) {
                                maxPadding = screenDeltaWithMargins * maxPercentPadding
                            }
                        }
                        let minValue;
                        let maxValue;
                        if (options.type !== _axes_constants.default.discrete && ticks && ticks.length > 1 && !options.skipViewportExtending && !viewPort.action && false !== options.endOnTick) {
                            const length = ticks.length;
                            const firstTickPosition = translator.translate(ticks[0].value);
                            const lastTickPosition = translator.translate(ticks[length - 1].value);
                            const invertMultiplier = firstTickPosition > lastTickPosition ? -1 : 1;
                            const minTickPadding = _max(invertMultiplier * (canvasStartEnd.start - firstTickPosition), 0);
                            const maxTickPadding = _max(invertMultiplier * (lastTickPosition - canvasStartEnd.end), 0);
                            if (minTickPadding > minPadding || maxTickPadding > maxPadding) {
                                const commonPadding = maxTickPadding + minTickPadding;
                                const coeff = that._getConvertIntervalCoefficient(commonPadding, screenDelta);
                                if (minTickPadding >= minPadding) {
                                    minValue = ticks[0].value
                                }
                                if (maxTickPadding >= maxPadding) {
                                    maxValue = ticks[length - 1].value
                                }
                                minPadding = _max(minTickPadding, minPadding) / coeff;
                                maxPadding = _max(maxTickPadding, maxPadding) / coeff
                            }
                        }
                        minPercentPadding = void 0 === minPercentPadding ? minPadding / screenDeltaWithMargins : minPercentPadding;
                        maxPercentPadding = void 0 === maxPercentPadding ? maxPadding / screenDeltaWithMargins : maxPercentPadding;
                        if (!isDiscrete) {
                            if (this._translator.isInverted()) {
                                minValue = minValue ?? translator.from(canvasStartEnd.start + screenDelta * minPercentPadding, -1);
                                maxValue = maxValue ?? translator.from(canvasStartEnd.end - screenDelta * maxPercentPadding, 1)
                            } else {
                                minValue = minValue ?? translator.from(canvasStartEnd.start - screenDelta * minPercentPadding, -1);
                                maxValue = maxValue ?? translator.from(canvasStartEnd.end + screenDelta * maxPercentPadding, 1)
                            }
                        }
                        const {
                            correctedMin: correctedMin,
                            correctedMax: correctedMax,
                            start: start,
                            end: end
                        } = that.getCorrectedValuesToZero(minValue, maxValue);
                        minPadding = start ?? minPadding;
                        maxPadding = end ?? maxPadding;
                        return {
                            startPadding: translator.isInverted() ? maxPadding : minPadding,
                            endPadding: translator.isInverted() ? minPadding : maxPadding,
                            minValue: correctedMin ?? minValue,
                            maxValue: correctedMax ?? maxValue,
                            interval: rangeInterval,
                            isSpacedMargin: minPadding === maxPadding && 0 !== minPadding
                        }
                    },
                    getCorrectedValuesToZero(minValue, maxValue) {
                        const that = this;
                        const translator = that._translator;
                        const canvasStartEnd = that._getCanvasStartEnd();
                        const dataRange = that._getViewportRange();
                        const screenDelta = that._getScreenDelta();
                        const options = that._options;
                        let start;
                        let end;
                        let correctedMin;
                        let correctedMax;
                        const correctZeroLevel = (minPoint, maxPoint) => {
                            const minExpectedPadding = _abs(canvasStartEnd.start - minPoint);
                            const maxExpectedPadding = _abs(canvasStartEnd.end - maxPoint);
                            const coeff = that._getConvertIntervalCoefficient(minExpectedPadding + maxExpectedPadding, screenDelta);
                            start = minExpectedPadding / coeff;
                            end = maxExpectedPadding / coeff
                        };
                        if (!that.isArgumentAxis && "datetime" !== options.dataType) {
                            if (minValue * dataRange.min <= 0 && minValue * dataRange.minVisible <= 0) {
                                correctZeroLevel(translator.translate(0), translator.translate(maxValue));
                                correctedMin = 0
                            }
                            if (maxValue * dataRange.max <= 0 && maxValue * dataRange.maxVisible <= 0) {
                                correctZeroLevel(translator.translate(minValue), translator.translate(0));
                                correctedMax = 0
                            }
                        }
                        return {
                            start: isFinite(start) ? start : null,
                            end: isFinite(end) ? end : null,
                            correctedMin: correctedMin,
                            correctedMax: correctedMax
                        }
                    },
                    applyMargins() {
                        if (this._isSynchronized) {
                            return
                        }
                        const margins = this._calculateValueMargins(this._majorTicks);
                        const canvas = (0, _extend.extend)({}, this._canvas, {
                            startPadding: margins.startPadding,
                            endPadding: margins.endPadding
                        });
                        this._translator.updateCanvas(this._processCanvas(canvas));
                        if (isFinite(margins.interval)) {
                            const br = this._translator.getBusinessRange();
                            br.addRange({
                                interval: margins.interval
                            });
                            this._translator.updateBusinessRange(br)
                        }
                    },
                    _resetMargins: function() {
                        this._reinitTranslator(this._getViewportRange());
                        if (this._canvas) {
                            this._translator.updateCanvas(this._processCanvas(this._canvas))
                        }
                    },
                    _createConstantLines() {
                        const constantLines = (this._options.constantLines || []).map((o => (0, _constant_line.default)(this, o)));
                        this._outsideConstantLines = constantLines.filter((l => "outside" === l.labelPosition));
                        this._insideConstantLines = constantLines.filter((l => "inside" === l.labelPosition))
                    },
                    draw: function(canvas, borderOptions) {
                        const that = this;
                        const options = this._options;
                        that.borderOptions = borderOptions || {
                            visible: false
                        };
                        that._resetMargins();
                        that.createTicks(canvas);
                        that.applyMargins();
                        that._clearAxisGroups();
                        initTickCoords(that._majorTicks);
                        initTickCoords(that._minorTicks);
                        initTickCoords(that._boundaryTicks);
                        that._axisGroup.append(that._axesContainerGroup);
                        that._drawAxis();
                        that._drawTitle();
                        drawTickMarks(that._majorTicks, options.tick);
                        drawTickMarks(that._minorTicks, options.minorTick);
                        drawTickMarks(that._boundaryTicks, options.tick);
                        const drawGridLine = that._getGridLineDrawer();
                        drawGrids(that._majorTicks, drawGridLine);
                        drawGrids(that._minorTicks, drawGridLine);
                        callAction(that._majorTicks, "drawLabel", that._getViewportRange(), that._getTemplate(options.label.template));
                        that._templatesRendered && that._templatesRendered.reject();
                        that._templatesRendered = new _deferred.Deferred;
                        that._majorTicks.forEach((function(tick) {
                            tick.labelRotationAngle = 0;
                            tick.labelAlignment = void 0;
                            tick.labelOffset = 0
                        }));
                        callAction(that._outsideConstantLines.concat(that._insideConstantLines), "draw");
                        callAction(that._strips, "draw");
                        that._dateMarkers = that._drawDateMarkers() || [];
                        that._stripLabelAxesGroup && that._axisStripLabelGroup.append(that._stripLabelAxesGroup);
                        that._gridContainerGroup && that._axisGridGroup.append(that._gridContainerGroup);
                        that._stripsGroup && that._axisStripGroup.append(that._stripsGroup);
                        that._labelsAxesGroup && that._axisElementsGroup.append(that._labelsAxesGroup);
                        if (that._constantLinesGroup) {
                            that._axisConstantLineGroups.above.inside.append(that._constantLinesGroup.above);
                            that._axisConstantLineGroups.above.outside1.append(that._constantLinesGroup.above);
                            that._axisConstantLineGroups.above.outside2.append(that._constantLinesGroup.above);
                            that._axisConstantLineGroups.under.inside.append(that._constantLinesGroup.under);
                            that._axisConstantLineGroups.under.outside1.append(that._constantLinesGroup.under);
                            that._axisConstantLineGroups.under.outside2.append(that._constantLinesGroup.under)
                        }
                        that._measureTitle();
                        (0, _axes_utils.measureLabels)(that._majorTicks);
                        !options.label.template && that._applyWordWrap();
                        (0, _axes_utils.measureLabels)(that._outsideConstantLines);
                        (0, _axes_utils.measureLabels)(that._insideConstantLines);
                        (0, _axes_utils.measureLabels)(that._strips);
                        (0, _axes_utils.measureLabels)(that._dateMarkers);
                        that._adjustConstantLineLabels(that._insideConstantLines);
                        that._adjustStripLabels();
                        let offset = that._constantLabelOffset = that._adjustConstantLineLabels(that._outsideConstantLines);
                        if (!that._translator.getBusinessRange().isEmpty()) {
                            that._setLabelsPlacement();
                            offset = that._adjustLabels(offset)
                        }
                        _deferred.when.apply(this, that._majorTicks.map((tick => tick.getTemplateDeferred()))).done((() => {
                            that._templatesRendered.resolve()
                        }));
                        offset = that._adjustDateMarkers(offset);
                        that._adjustTitle(offset)
                    },
                    getTemplatesDef() {
                        return this._templatesRendered
                    },
                    setRenderedState(state) {
                        this._drawn = state
                    },
                    isRendered() {
                        return this._drawn
                    },
                    _applyWordWrap() {
                        const that = this;
                        let convertedTickInterval;
                        let textWidth;
                        let textHeight;
                        const options = this._options;
                        const tickInterval = that._tickInterval;
                        if ((0, _type.isDefined)(tickInterval)) {
                            convertedTickInterval = that.getTranslator().getInterval("datetime" === options.dataType ? _date.default.dateToMilliseconds(tickInterval) : tickInterval)
                        }
                        const displayMode = that._validateDisplayMode(options.label.displayMode);
                        const overlappingMode = that._validateOverlappingMode(options.label.overlappingBehavior, displayMode);
                        const wordWrapMode = options.label.wordWrap || "none";
                        const overflowMode = options.label.textOverflow || "none";
                        if (("none" !== wordWrapMode || "none" !== overflowMode) && "rotate" !== displayMode && "rotate" !== overlappingMode && "auto" !== overlappingMode) {
                            const usefulSpace = (0, _type.isDefined)(options.placeholderSize) ? options.placeholderSize - options.label.indentFromAxis : void 0;
                            if (that._isHorizontal) {
                                textWidth = convertedTickInterval;
                                textHeight = usefulSpace
                            } else {
                                textWidth = usefulSpace;
                                textHeight = convertedTickInterval
                            }
                            let correctByWidth = false;
                            let correctByHeight = false;
                            if (textWidth) {
                                if (that._majorTicks.some((tick => tick.labelBBox.width > textWidth))) {
                                    correctByWidth = true
                                }
                            }
                            if (textHeight) {
                                if (that._majorTicks.some((tick => tick.labelBBox.height > textHeight))) {
                                    correctByHeight = true
                                }
                            }
                            if (correctByWidth || correctByHeight) {
                                that._majorTicks.forEach((tick => {
                                    tick.label && tick.label.setMaxSize(textWidth, textHeight, options.label)
                                }));
                                (0, _axes_utils.measureLabels)(that._majorTicks)
                            }
                        }
                    },
                    _measureTitle: _common.noop,
                    animate() {
                        callAction(this._majorTicks, "animateLabels")
                    },
                    updateSize(canvas, animate) {
                        let updateTitle = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : true;
                        const that = this;
                        that.updateCanvas(canvas);
                        if (updateTitle) {
                            that._checkTitleOverflow();
                            that._measureTitle();
                            that._updateTitleCoords()
                        }
                        that._reinitTranslator(that._getViewportRange());
                        that.applyMargins();
                        const animationEnabled = !that._firstDrawing && animate;
                        const options = that._options;
                        initTickCoords(that._majorTicks);
                        initTickCoords(that._minorTicks);
                        initTickCoords(that._boundaryTicks);
                        if (that._resetApplyingAnimation && !that._firstDrawing) {
                            that._resetStartCoordinates()
                        }
                        cleanUpInvalidTicks(that._majorTicks);
                        cleanUpInvalidTicks(that._minorTicks);
                        cleanUpInvalidTicks(that._boundaryTicks);
                        if (that._axisElement) {
                            that._updateAxisElementPosition()
                        }
                        updateTicksPosition(that._majorTicks, options.tick, animationEnabled);
                        updateTicksPosition(that._minorTicks, options.minorTick, animationEnabled);
                        updateTicksPosition(that._boundaryTicks, options.tick);
                        callAction(that._majorTicks, "updateLabelPosition", animationEnabled);
                        that._outsideConstantLines.concat(that._insideConstantLines || []).forEach((l => l.updatePosition(animationEnabled)));
                        callAction(that._strips, "updatePosition", animationEnabled);
                        updateGridsPosition(that._majorTicks, animationEnabled);
                        updateGridsPosition(that._minorTicks, animationEnabled);
                        if (animationEnabled) {
                            callAction(that._ticksToRemove || [], "fadeOutElements")
                        }
                        that.prepareAnimation();
                        that._ticksToRemove = null;
                        if (!that._translator.getBusinessRange().isEmpty()) {
                            that._firstDrawing = false
                        }
                        that._resetApplyingAnimation = false;
                        that._updateLabelsPosition()
                    },
                    _updateLabelsPosition: _common.noop,
                    prepareAnimation() {
                        const action = "saveCoords";
                        callAction(this._majorTicks, action);
                        callAction(this._minorTicks, action);
                        callAction(this._insideConstantLines, action);
                        callAction(this._outsideConstantLines, action);
                        callAction(this._strips, action)
                    },
                    _resetStartCoordinates() {
                        const action = "resetCoordinates";
                        callAction(this._majorTicks, action);
                        callAction(this._minorTicks, action);
                        callAction(this._insideConstantLines, action);
                        callAction(this._outsideConstantLines, action);
                        callAction(this._strips, action)
                    },
                    applyClipRects: function(elementsClipID, canvasClipID) {
                        this._axisGroup.attr({
                            "clip-path": canvasClipID
                        });
                        this._axisStripGroup.attr({
                            "clip-path": elementsClipID
                        });
                        this._axisElementsGroup.attr({
                            "clip-path": canvasClipID
                        })
                    },
                    _validateVisualRange(optionValue) {
                        const range = (0, _utils.getVizRangeObject)(optionValue);
                        if (void 0 !== range.startValue) {
                            range.startValue = this.validateUnit(range.startValue)
                        }
                        if (void 0 !== range.endValue) {
                            range.endValue = this.validateUnit(range.endValue)
                        }
                        return (0, _utils.convertVisualRangeObject)(range, !_isArray(optionValue))
                    },
                    _validateOptions(options) {
                        options.wholeRange = this._validateVisualRange(options.wholeRange);
                        options.visualRange = options._customVisualRange = this._validateVisualRange(options._customVisualRange);
                        this._setVisualRange(options._customVisualRange)
                    },
                    validate() {
                        const options = this._options;
                        const dataType = this.isArgumentAxis ? options.argumentType : options.valueType;
                        const parser = dataType ? (0, _parse_utils.getParser)(dataType) : function(unit) {
                            return unit
                        };
                        this.parser = parser;
                        options.dataType = dataType;
                        this._validateOptions(options)
                    },
                    resetVisualRange(isSilent) {
                        this._seriesData.minVisible = this._seriesData.min;
                        this._seriesData.maxVisible = this._seriesData.max;
                        this.handleZooming([null, null], {
                            start: !!isSilent,
                            end: !!isSilent
                        })
                    },
                    _setVisualRange(visualRange, allowPartialUpdate) {
                        const range = this.adjustRange((0, _utils.getVizRangeObject)(visualRange));
                        if (allowPartialUpdate) {
                            (0, _type.isDefined)(range.startValue) && (this._viewport.startValue = range.startValue);
                            (0, _type.isDefined)(range.endValue) && (this._viewport.endValue = range.endValue)
                        } else {
                            this._viewport = range
                        }
                    },
                    _applyZooming(visualRange, allowPartialUpdate) {
                        this._resetVisualRangeOption();
                        this._setVisualRange(visualRange, allowPartialUpdate);
                        const viewPort = this.getViewport();
                        this._seriesData.userBreaks = this._getScaleBreaks(this._options, {
                            minVisible: viewPort.startValue,
                            maxVisible: viewPort.endValue
                        }, this._series, this.isArgumentAxis);
                        this._translator.updateBusinessRange(this._getViewportRange())
                    },
                    getZoomStartEventArg(event, actionType) {
                        return {
                            axis: this,
                            range: this.visualRange(),
                            cancel: false,
                            event: event,
                            actionType: actionType
                        }
                    },
                    _getZoomEndEventArg(previousRange, event, actionType, zoomFactor, shift) {
                        const newRange = this.visualRange();
                        return {
                            axis: this,
                            previousRange: previousRange,
                            range: newRange,
                            cancel: false,
                            event: event,
                            actionType: actionType,
                            zoomFactor: zoomFactor,
                            shift: shift,
                            rangeStart: newRange.startValue,
                            rangeEnd: newRange.endValue
                        }
                    },
                    getZoomBounds() {
                        const wholeRange = (0, _utils.getVizRangeObject)(this._options.wholeRange);
                        const range = this.getTranslator().getBusinessRange();
                        const secondPriorityRange = {
                            startValue: getZoomBoundValue(this._initRange.startValue, range.min),
                            endValue: getZoomBoundValue(this._initRange.endValue, range.max)
                        };
                        return {
                            startValue: getZoomBoundValue(wholeRange.startValue, secondPriorityRange.startValue),
                            endValue: getZoomBoundValue(wholeRange.endValue, secondPriorityRange.endValue)
                        }
                    },
                    setInitRange() {
                        this._initRange = {};
                        if (0 === Object.keys(this._options.wholeRange || {}).length) {
                            this._initRange = this.getZoomBounds()
                        }
                    },
                    _resetVisualRangeOption() {
                        this._options._customVisualRange = {}
                    },
                    getTemplatesGroups() {
                        const ticks = this._majorTicks;
                        if (ticks) {
                            return this._majorTicks.map((tick => tick.templateContainer)).filter((item => (0, _type.isDefined)(item)))
                        } else {
                            return []
                        }
                    },
                    setCustomVisualRange(range) {
                        this._options._customVisualRange = range
                    },
                    visualRange() {
                        const that = this;
                        const args = arguments;
                        let visualRange;
                        if (0 === args.length) {
                            const adjustedRange = that._getAdjustedBusinessRange();
                            let startValue = adjustedRange.minVisible;
                            let endValue = adjustedRange.maxVisible;
                            if (that._options.type === _axes_constants.default.discrete) {
                                startValue = startValue ?? adjustedRange.categories[0];
                                endValue = endValue ?? adjustedRange.categories[adjustedRange.categories.length - 1];
                                return {
                                    startValue: startValue,
                                    endValue: endValue,
                                    categories: (0, _utils.getCategoriesInfo)(adjustedRange.categories, startValue, endValue).categories
                                }
                            }
                            return {
                                startValue: startValue,
                                endValue: endValue
                            }
                        } else if (_isArray(args[0])) {
                            visualRange = args[0]
                        } else if ((0, _type.isPlainObject)(args[0])) {
                            visualRange = (0, _extend.extend)({}, args[0])
                        } else {
                            visualRange = [args[0], args[1]]
                        }
                        const zoomResults = that.handleZooming(visualRange, args[1]);
                        if (!zoomResults.isPrevented) {
                            that._visualRange(that, zoomResults)
                        }
                    },
                    handleZooming(visualRange, preventEvents, domEvent, action) {
                        const that = this;
                        preventEvents = preventEvents || {};
                        if ((0, _type.isDefined)(visualRange)) {
                            visualRange = that._validateVisualRange(visualRange);
                            visualRange.action = action
                        }
                        const zoomStartEvent = that.getZoomStartEventArg(domEvent, action);
                        const previousRange = zoomStartEvent.range;
                        !preventEvents.start && that._eventTrigger("zoomStart", zoomStartEvent);
                        const zoomResults = {
                            isPrevented: zoomStartEvent.cancel,
                            skipEventRising: preventEvents.skipEventRising,
                            range: visualRange || zoomStartEvent.range
                        };
                        if (!zoomStartEvent.cancel) {
                            (0, _type.isDefined)(visualRange) && that._applyZooming(visualRange, preventEvents.allowPartialUpdate);
                            if (!(0, _type.isDefined)(that._storedZoomEndParams)) {
                                that._storedZoomEndParams = {
                                    startRange: previousRange,
                                    type: this.getOptions().type
                                }
                            }
                            that._storedZoomEndParams.event = domEvent;
                            that._storedZoomEndParams.action = action;
                            that._storedZoomEndParams.prevent = !!preventEvents.end
                        }
                        return zoomResults
                    },
                    handleZoomEnd() {
                        const that = this;
                        if ((0, _type.isDefined)(that._storedZoomEndParams) && !that._storedZoomEndParams.prevent) {
                            const previousRange = that._storedZoomEndParams.startRange;
                            const domEvent = that._storedZoomEndParams.event;
                            const action = that._storedZoomEndParams.action;
                            const previousBusinessRange = {
                                minVisible: previousRange.startValue,
                                maxVisible: previousRange.endValue,
                                categories: previousRange.categories
                            };
                            const typeIsNotChanged = that.getOptions().type === that._storedZoomEndParams.type;
                            const shift = typeIsNotChanged ? (0, _math2.adjust)(that.getVisualRangeCenter() - that.getVisualRangeCenter(previousBusinessRange, false)) : NaN;
                            const zoomFactor = typeIsNotChanged ? +(Math.round(that.getVisualRangeLength(previousBusinessRange) / (that.getVisualRangeLength() || 1) + "e+2") + "e-2") : NaN;
                            const zoomEndEvent = that._getZoomEndEventArg(previousRange, domEvent, action, zoomFactor, shift);
                            zoomEndEvent.cancel = that.checkZoomingLowerLimitOvercome(1 === zoomFactor ? "pan" : "zoom", zoomFactor).stopInteraction;
                            that._eventTrigger("zoomEnd", zoomEndEvent);
                            if (zoomEndEvent.cancel) {
                                that._restorePreviousVisualRange(previousRange)
                            }
                            that._storedZoomEndParams = null
                        }
                    },
                    _restorePreviousVisualRange(previousRange) {
                        this._storedZoomEndParams = null;
                        this._applyZooming(previousRange);
                        this._visualRange(this, previousRange)
                    },
                    checkZoomingLowerLimitOvercome(actionType, zoomFactor, range) {
                        const that = this;
                        const options = that._options;
                        const translator = that._translator;
                        let minZoom = options.minVisualRangeLength;
                        let correctedRange = range;
                        let visualRange;
                        let isOvercoming = "zoom" === actionType && zoomFactor >= 1;
                        const businessRange = translator.getBusinessRange();
                        if (range) {
                            visualRange = that.adjustRange((0, _utils.getVizRangeObject)(range));
                            visualRange = {
                                minVisible: visualRange.startValue,
                                maxVisible: visualRange.endValue,
                                categories: businessRange.categories
                            }
                        }
                        const beforeVisualRangeLength = that.getVisualRangeLength(businessRange);
                        const afterVisualRangeLength = that.getVisualRangeLength(visualRange);
                        if ((0, _type.isDefined)(minZoom) || "discrete" === options.type) {
                            minZoom = translator.convert(minZoom);
                            if (visualRange && minZoom < beforeVisualRangeLength && minZoom >= afterVisualRangeLength) {
                                correctedRange = (0, _utils.getVizRangeObject)(translator.getRangeByMinZoomValue(minZoom, visualRange));
                                isOvercoming = false
                            } else {
                                isOvercoming &= minZoom > afterVisualRangeLength
                            }
                        } else {
                            const canvasLength = that._translator.canvasLength;
                            const fullRange = {
                                minVisible: businessRange.min,
                                maxVisible: businessRange.max,
                                categories: businessRange.categories
                            };
                            isOvercoming &= that.getVisualRangeLength(fullRange) / canvasLength >= afterVisualRangeLength
                        }
                        return {
                            stopInteraction: !!isOvercoming,
                            correctedRange: correctedRange
                        }
                    },
                    isExtremePosition(isMax) {
                        let extremeDataValue;
                        let seriesData;
                        if ("discrete" === this._options.type) {
                            seriesData = this._translator.getBusinessRange();
                            extremeDataValue = isMax ? seriesData.categories[seriesData.categories.length - 1] : seriesData.categories[0]
                        } else {
                            seriesData = this.getZoomBounds();
                            extremeDataValue = isMax ? seriesData.endValue : seriesData.startValue
                        }
                        const translator = this.getTranslator();
                        const extremePoint = translator.translate(extremeDataValue);
                        const visualRange = this.visualRange();
                        const visualRangePoint = isMax ? translator.translate(visualRange.endValue) : translator.translate(visualRange.startValue);
                        return _abs(visualRangePoint - extremePoint) < 5
                    },
                    getViewport() {
                        return this._viewport
                    },
                    getFullTicks: function() {
                        const majors = this._majorTicks || [];
                        if (this._options.type === _axes_constants.default.discrete) {
                            return convertTicksToValues(majors)
                        } else {
                            return convertTicksToValues(majors.concat(this._minorTicks, this._boundaryTicks)).sort((function(a, b) {
                                return (0, _utils.valueOf)(a) - (0, _utils.valueOf)(b)
                            }))
                        }
                    },
                    measureLabels: function(canvas, withIndents) {
                        const that = this;
                        const options = that._options;
                        const widthAxis = options.visible ? options.width : 0;
                        let ticks;
                        const indent = withIndents ? options.label.indentFromAxis + .5 * options.tick.length : 0;
                        let tickInterval;
                        const viewportRange = that._getViewportRange();
                        if (viewportRange.isEmpty() || !options.label.visible || !that._axisElementsGroup) {
                            return {
                                height: widthAxis,
                                width: widthAxis,
                                x: 0,
                                y: 0
                            }
                        }
                        if (that._majorTicks) {
                            ticks = convertTicksToValues(that._majorTicks)
                        } else {
                            that.updateCanvas(canvas);
                            ticks = that._createTicksAndLabelFormat(viewportRange, _common.noop);
                            tickInterval = ticks.tickInterval;
                            ticks = ticks.ticks
                        }
                        const maxText = ticks.reduce((function(prevLabel, tick, index) {
                            const label = that.formatLabel(tick, options.label, viewportRange, void 0, tickInterval, ticks);
                            if (prevLabel.length < label.length) {
                                return label
                            } else {
                                return prevLabel
                            }
                        }), that.formatLabel(ticks[0], options.label, viewportRange, void 0, tickInterval, ticks));
                        const text = that._renderer.text(maxText, 0, 0).css(that._textFontStyles).attr(that._textOptions).append(that._renderer.root);
                        const box = text.getBBox();
                        text.remove();
                        return {
                            x: box.x,
                            y: box.y,
                            width: box.width + indent,
                            height: box.height + indent
                        }
                    },
                    _setLabelsPlacement: function() {
                        if (!this._options.label.visible) {
                            return
                        }
                        const that = this;
                        const labelOpt = that._options.label;
                        const displayMode = that._validateDisplayMode(labelOpt.displayMode);
                        const overlappingMode = that._validateOverlappingMode(labelOpt.overlappingBehavior, displayMode);
                        const ignoreOverlapping = "none" === overlappingMode || "ignore" === overlappingMode;
                        const behavior = {
                            rotationAngle: labelOpt.rotationAngle,
                            staggeringSpacing: labelOpt.staggeringSpacing
                        };
                        let notRecastStep;
                        const boxes = that._majorTicks.map((function(tick) {
                            return tick.labelBBox
                        }));
                        let step = that._getStep(boxes);
                        switch (displayMode) {
                            case "rotate":
                                if (ignoreOverlapping) {
                                    notRecastStep = true;
                                    step = 1
                                }
                                that._applyLabelMode(displayMode, step, boxes, labelOpt, notRecastStep);
                                break;
                            case "stagger":
                                if (ignoreOverlapping) {
                                    step = 2
                                }
                                that._applyLabelMode(displayMode, _max(step, 2), boxes, labelOpt);
                                break;
                            default:
                                that._applyLabelOverlapping(boxes, overlappingMode, step, behavior)
                        }
                    },
                    _applyLabelOverlapping: function(boxes, mode, step, behavior) {
                        const that = this;
                        const labelOpt = that._options.label;
                        const majorTicks = that._majorTicks;
                        if ("none" === mode || "ignore" === mode) {
                            return
                        }
                        if (step > 1 && boxes.some((function(box, index, array) {
                                if (0 === index) {
                                    return false
                                }
                                return _axes_constants.default.areLabelsOverlap(box, array[index - 1], labelOpt.minSpacing, labelOpt.alignment)
                            }))) {
                            that._applyLabelMode(mode, step, boxes, behavior)
                        }
                        that._checkBoundedLabelsOverlapping(majorTicks, boxes, mode);
                        that._checkShiftedLabels(majorTicks, boxes, labelOpt.minSpacing, labelOpt.alignment)
                    },
                    _applyLabelMode: function(mode, step, boxes, behavior, notRecastStep) {
                        const that = this;
                        const majorTicks = that._majorTicks;
                        const labelOpt = that._options.label;
                        const angle = behavior.rotationAngle;
                        let labelHeight;
                        let alignment;
                        let func;
                        switch (mode) {
                            case "rotate":
                                if (!labelOpt.userAlignment) {
                                    alignment = angle < 0 ? RIGHT : LEFT;
                                    if (angle % 90 === 0) {
                                        alignment = CENTER
                                    }
                                }
                                step = notRecastStep ? step : that._getStep(boxes, angle);
                                func = function(tick) {
                                    const contentContainer = tick.getContentContainer();
                                    if (!contentContainer) {
                                        return
                                    }
                                    contentContainer.rotate(angle);
                                    tick.labelRotationAngle = angle;
                                    alignment && (tick.labelAlignment = alignment)
                                };
                                updateLabels(majorTicks, step, func);
                                break;
                            case "stagger":
                                labelHeight = that._getMaxLabelHeight(boxes, behavior.staggeringSpacing);
                                func = function(tick, index) {
                                    if (index / (step - 1) % 2 !== 0) {
                                        tick.labelOffset = labelHeight
                                    }
                                };
                                updateLabels(majorTicks, step - 1, func);
                                break;
                            case "auto":
                            case "_auto":
                                if (2 === step) {
                                    that._applyLabelMode("stagger", step, boxes, behavior)
                                } else {
                                    that._applyLabelMode("rotate", step, boxes, {
                                        rotationAngle: getOptimalAngle(boxes, labelOpt)
                                    })
                                }
                                break;
                            default:
                                updateLabels(majorTicks, step)
                        }
                    },
                    getMarkerTrackers: _common.noop,
                    _drawDateMarkers: _common.noop,
                    _adjustDateMarkers: _common.noop,
                    coordsIn: _common.noop,
                    areCoordsOutsideAxis: _common.noop,
                    _getSkippedCategory: _common.noop,
                    _initAxisPositions: _common.noop,
                    _drawTitle: _common.noop,
                    _updateTitleCoords: _common.noop,
                    _adjustConstantLineLabels: _common.noop,
                    _createTranslator: function() {
                        return new _translator2d.Translator2D({}, {}, {})
                    },
                    _updateTranslator: function() {
                        const translator = this._translator;
                        translator.update(translator.getBusinessRange(), this._canvas || {}, this._getTranslatorOptions())
                    },
                    _getTranslatorOptions: function() {
                        var _options$workWeek2, _options$breakStyle;
                        const options = this._options;
                        return {
                            isHorizontal: this._isHorizontal,
                            shiftZeroValue: !this.isArgumentAxis,
                            interval: options.semiDiscreteInterval,
                            firstDayOfWeek: null === (_options$workWeek2 = options.workWeek) || void 0 === _options$workWeek2 ? void 0 : _options$workWeek2[0],
                            stick: this._getStick(),
                            breaksSize: (null === (_options$breakStyle = options.breakStyle) || void 0 === _options$breakStyle ? void 0 : _options$breakStyle.width) ?? 0
                        }
                    },
                    getVisibleArea() {
                        const canvas = this._getCanvasStartEnd();
                        return [canvas.start, canvas.end].sort(((a, b) => a - b))
                    },
                    _getCanvasStartEnd: function() {
                        const isHorizontal = this._isHorizontal;
                        const canvas = this._canvas || {};
                        const invert = this._translator.getBusinessRange().invert;
                        const coords = isHorizontal ? [canvas.left, canvas.width - canvas.right] : [canvas.height - canvas.bottom, canvas.top];
                        invert && coords.reverse();
                        return {
                            start: coords[0],
                            end: coords[1]
                        }
                    },
                    _getScreenDelta: function() {
                        const canvas = this._getCanvasStartEnd();
                        const breaks = this._seriesData ? this._seriesData.breaks || [] : [];
                        const breaksLength = breaks.length;
                        const screenDelta = _abs(canvas.start - canvas.end);
                        return screenDelta - (breaksLength ? breaks[breaksLength - 1].cumulativeWidth : 0)
                    },
                    _getScaleBreaks: function() {
                        return []
                    },
                    _filterBreaks: function() {
                        return []
                    },
                    _adjustTitle: _common.noop,
                    _checkTitleOverflow: _common.noop,
                    getSpiderTicks: _common.noop,
                    setSpiderTicks: _common.noop,
                    _checkBoundedLabelsOverlapping: _common.noop,
                    _checkShiftedLabels: _common.noop,
                    drawScaleBreaks: _common.noop,
                    _visualRange: _common.noop,
                    _rotateConstantLine: _common.noop,
                    applyVisualRangeSetter(visualRangeSetter) {
                        this._visualRange = visualRangeSetter
                    },
                    getCategoriesSorter(argCategories) {
                        let sort;
                        if (this.isArgumentAxis) {
                            sort = argCategories
                        } else {
                            const categoriesSortingMethod = this._options.categoriesSortingMethod;
                            sort = categoriesSortingMethod ?? this._options.categories
                        }
                        return sort
                    },
                    _getAdjustedBusinessRange() {
                        return this.adjustViewport(this._translator.getBusinessRange())
                    }
                }
            },
        21259:
            /*!***********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/axes/constant_line.js ***!
              \***********************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = function(axis, options) {
                    const labelOptions = options.label || {};
                    const labelPosition = labelOptions.position || "inside";
                    let parsedValue;
                    let valueIsParsed = false;
                    let lastStoredCoordinates;
                    axis._checkAlignmentConstantLineLabels(labelOptions);
                    let storedCoord;
                    return {
                        options: options,
                        labelOptions: labelOptions,
                        labelPosition: labelPosition,
                        label: null,
                        line: null,
                        getParsedValue() {
                            if (!valueIsParsed) {
                                parsedValue = axis.validateUnit(options.value, "E2105", "constantLine");
                                valueIsParsed = true;
                                return parsedValue
                            }
                            return parsedValue
                        },
                        draw() {
                            if (!(0, _type.isDefined)(options.value) || axis._translator.getBusinessRange().isEmpty()) {
                                return this
                            }
                            const canvas = axis._getCanvasStartEnd();
                            const parsedValue = this.getParsedValue();
                            this.coord = axis._getConstantLinePos(parsedValue, canvas.start, canvas.end);
                            const rootGroup = options.displayBehindSeries ? axis._axisConstantLineGroups.under : axis._axisConstantLineGroups.above;
                            let group = rootGroup[labelPosition];
                            if (!group) {
                                const side = axis._isHorizontal ? labelOptions.verticalAlignment : labelOptions.horizontalAlignment;
                                group = rootGroup[side]
                            }
                            if (!(0, _type.isDefined)(this.coord)) {
                                return this
                            }
                            const path = axis._createConstantLine(this.coord, {
                                stroke: options.color,
                                "stroke-width": options.width,
                                dashStyle: options.dashStyle
                            });
                            this.line = path.append(rootGroup.inside);
                            this.label = labelOptions.visible ? axis._drawConstantLineLabels(parsedValue, labelOptions, this.coord, group) : null;
                            this.updatePosition();
                            return this
                        },
                        getContentContainer() {
                            return this.label
                        },
                        removeLabel() {
                            this.label && this.label.remove()
                        },
                        updatePosition(animate) {
                            const canvas = axis._getCanvasStartEnd();
                            const coord = axis._getConstantLinePos(this.getParsedValue(), canvas.start, canvas.end);
                            if (!(0, _type.isDefined)(coord)) {
                                return
                            }
                            this.coord = coord;
                            if (animate && storedCoord) {
                                this.label && this.label.attr(axis._getConstantLineLabelsCoords(storedCoord, this.labelOptions));
                                this.line && this.line.attr(axis._getConstantLineGraphicAttributes(storedCoord));
                                this.label && this.label.animate(axis._getConstantLineLabelsCoords(this.coord, this.labelOptions));
                                this.line && this.line.animate(axis._getConstantLineGraphicAttributes(this.coord))
                            } else {
                                this.label && this.label.attr(axis._getConstantLineLabelsCoords(this.coord, this.labelOptions));
                                this.line && this.line.attr(axis._getConstantLineGraphicAttributes(this.coord));
                                axis._rotateConstantLine(this.line, this.coord)
                            }
                        },
                        saveCoords() {
                            lastStoredCoordinates = storedCoord;
                            storedCoord = this.coord
                        },
                        resetCoordinates() {
                            storedCoord = lastStoredCoordinates
                        }
                    }
                };
                var _type = __webpack_require__( /*! ../../core/utils/type */ 11528);
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        61914:
            /*!*************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/axes/datetime_breaks.js ***!
              \*************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.generateDateBreaks = function(min, max, workWeek, singleWorkdays, holidays) {
                    const weekendDayIndices = function(workDays) {
                        const indices = (workdays = workDays, days.filter((function(day) {
                            return !workdays.some((function(workDay) {
                                return workDay === day
                            }))
                        })));
                        var workdays;
                        if (indices.length < 7) {
                            while (getNextDayIndex(indices[indices.length - 1]) === indices[0]) {
                                indices.unshift(indices.pop())
                            }
                        }
                        return indices
                    }(workWeek);
                    const breaks = function(min, max, weekendDayIndices) {
                        let day = min.getDate();
                        const breaks = [];
                        const weekends = weekendDayIndices.reduce((function(obj, day) {
                            let currentWeekEnd = obj[1];
                            if (void 0 === currentWeekEnd.start) {
                                currentWeekEnd = {
                                    start: day,
                                    end: getNextDayIndex(day)
                                };
                                obj[0].push(currentWeekEnd);
                                return [obj[0], currentWeekEnd]
                            } else if (currentWeekEnd.end === day) {
                                currentWeekEnd.end = getNextDayIndex(day);
                                return obj
                            }
                            currentWeekEnd = {
                                start: day,
                                end: getNextDayIndex(day)
                            };
                            obj[0].push(currentWeekEnd);
                            return [obj[0], currentWeekEnd]
                        }), [
                            [], {}
                        ]);
                        weekends[0].forEach((function(weekend) {
                            let currentDate = new Date(min);
                            currentDate = _date.default.trimTime(currentDate);
                            while (currentDate < max) {
                                day = currentDate.getDay();
                                const date = currentDate.getDate();
                                if (dayBetweenWeekend(weekend, day)) {
                                    const from = new Date(currentDate);
                                    currentDate.setDate(date + getDaysDistance(day, weekend.end));
                                    const to = new Date(currentDate);
                                    breaks.push({
                                        from: from,
                                        to: to
                                    })
                                }
                                currentDate.setDate(currentDate.getDate() + 1)
                            }
                        }));
                        return breaks
                    }(min, max, weekendDayIndices);
                    breaks.push.apply(breaks, function(min, max, holidays, weekendDayIndices) {
                        let day;
                        const dayInWeekend = function(dayIndex) {
                            return dayIndex === day
                        };
                        const adjustedMin = _date.default.trimTime(min);
                        const adjustedMax = _date.default.trimTime(max);
                        adjustedMax.setDate(max.getDate() + 1);
                        return holidays.reduce((function(breaks, holiday) {
                            let holidayStart;
                            let holidayEnd;
                            holiday = new Date(holiday);
                            day = holiday.getDay();
                            if (!weekendDayIndices.some(dayInWeekend) && holiday >= adjustedMin && holiday <= adjustedMax) {
                                holidayStart = _date.default.trimTime(holiday);
                                holidayEnd = new Date(holidayStart);
                                holidayEnd.setDate(holidayStart.getDate() + 1);
                                breaks.push({
                                    from: holidayStart,
                                    to: holidayEnd
                                })
                            }
                            return breaks
                        }), [])
                    }(min, max, holidays || [], weekendDayIndices));
                    return function(breaks) {
                        return breaks.map((function(b) {
                            return {
                                from: b.from,
                                to: b.to,
                                gapSize: _date.default.convertMillisecondsToDateUnits(b.to - b.from)
                            }
                        }))
                    }(function(breaks, exactWorkDays) {
                        const result = breaks.slice();
                        let i;
                        const processWorkDay = function(workday) {
                            workday = _date.default.trimTime(new Date(workday));
                            if (result[i].from <= workday && result[i].to > workday) {
                                const separatedBreak = function(scaleBreak, day) {
                                    const result = [];
                                    const dayEnd = new Date(day);
                                    dayEnd.setDate(day.getDate() + 1);
                                    if (day > scaleBreak.from) {
                                        result.push({
                                            from: scaleBreak.from,
                                            to: day
                                        })
                                    }
                                    if (dayEnd < scaleBreak.to) {
                                        result.push({
                                            from: dayEnd,
                                            to: scaleBreak.to
                                        })
                                    }
                                    return result
                                }(result[i], workday);
                                if (2 === separatedBreak.length) {
                                    result.splice(i, 1, separatedBreak[0], separatedBreak[1])
                                } else if (1 === separatedBreak.length) {
                                    result.splice(i, 1, separatedBreak[0])
                                } else {
                                    result.splice(i, 1)
                                }
                            }
                        };
                        for (i = 0; i < result.length; i++) {
                            exactWorkDays.forEach(processWorkDay)
                        }
                        return result
                    }(breaks, singleWorkdays || []))
                };
                var _date = (e = __webpack_require__( /*! ../../core/utils/date */ 41380), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                const days = [0, 1, 2, 3, 4, 5, 6];

                function getNextDayIndex(dayIndex) {
                    return (dayIndex + 1) % 7
                }

                function dayBetweenWeekend(weekend, day) {
                    let start = weekend.start;
                    const end = weekend.end;
                    while (start !== end) {
                        if (start === day) {
                            return true
                        }
                        start = getNextDayIndex(start)
                    }
                    return false
                }

                function getDaysDistance(day, end) {
                    let length = 0;
                    while (day !== end) {
                        day = getNextDayIndex(day);
                        length++
                    }
                    return length
                }
            },
        75014:
            /*!********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/axes/polar_axes.js ***!
              \********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.linearSpider = exports.linear = exports.circularSpider = exports.circular = void 0;
                var _utils = __webpack_require__( /*! ../core/utils */ 28779);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 11528);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576);
                var _axes_constants = _interopRequireDefault(__webpack_require__( /*! ./axes_constants */ 63885));
                var _xy_axes = _interopRequireDefault(__webpack_require__( /*! ./xy_axes */ 9441));
                var _tick = __webpack_require__( /*! ./tick */ 99043);
                var _axes_utils = __webpack_require__( /*! ./axes_utils */ 86017);
                var _common = __webpack_require__( /*! ../../core/utils/common */ 17781);

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const {
                    PI: PI,
                    abs: abs,
                    atan: atan,
                    round: round
                } = Math;
                const _min = Math.min;
                const _max = Math.max;
                const xyAxesLinear = _xy_axes.default.linear;

                function getPolarQuarter(angle) {
                    let quarter;
                    angle = (0, _utils.normalizeAngle)(angle);
                    if (angle >= 315 && angle <= 360 || angle < 45 && angle >= 0) {
                        quarter = 1
                    } else if (angle >= 45 && angle < 135) {
                        quarter = 2
                    } else if (angle >= 135 && angle < 225) {
                        quarter = 3
                    } else if (angle >= 225 && angle < 315) {
                        quarter = 4
                    }
                    return quarter
                }
                const circularAxes = {
                    _calculateValueMargins(ticks) {
                        let {
                            minVisible: minVisible,
                            maxVisible: maxVisible
                        } = this._getViewportRange();
                        if (ticks && ticks.length > 1) {
                            minVisible = minVisible < ticks[0].value ? minVisible : ticks[0].value;
                            maxVisible = minVisible > ticks[ticks.length - 1].value ? maxVisible : ticks[ticks.length - 1].value
                        }
                        return {
                            minValue: minVisible,
                            maxValue: maxVisible
                        }
                    },
                    applyMargins() {
                        const margins = this._calculateValueMargins(this._majorTicks);
                        const br = this._translator.getBusinessRange();
                        br.addRange({
                            minVisible: margins.minValue,
                            maxVisible: margins.maxValue,
                            interval: this._calculateRangeInterval(br.interval)
                        });
                        this._translator.updateBusinessRange(br)
                    },
                    _getTranslatorOptions: function() {
                        return {
                            isHorizontal: true,
                            conversionValue: true,
                            addSpiderCategory: this._getSpiderCategoryOption(),
                            stick: this._getStick()
                        }
                    },
                    getCenter: function() {
                        return this._center
                    },
                    getRadius: function() {
                        return this._radius
                    },
                    getAngles: function() {
                        const options = this._options;
                        return [options.startAngle, options.endAngle]
                    },
                    _updateRadius(canvas) {
                        const rad = _min(canvas.width - canvas.left - canvas.right, canvas.height - canvas.top - canvas.bottom) / 2;
                        this._radius = rad < 0 ? 0 : rad
                    },
                    _updateCenter: function(canvas) {
                        this._center = {
                            x: canvas.left + (canvas.width - canvas.right - canvas.left) / 2,
                            y: canvas.top + (canvas.height - canvas.top - canvas.bottom) / 2
                        }
                    },
                    _processCanvas: function(canvas) {
                        this._updateRadius(canvas);
                        this._updateCenter(canvas);
                        return {
                            left: 0,
                            right: 0,
                            width: this._getScreenDelta()
                        }
                    },
                    _createAxisElement: function() {
                        return this._renderer.circle()
                    },
                    _updateAxisElementPosition: function() {
                        const center = this.getCenter();
                        this._axisElement.attr({
                            cx: center.x,
                            cy: center.y,
                            r: this.getRadius()
                        })
                    },
                    _boundaryTicksVisibility: {
                        min: true
                    },
                    _getSpiderCategoryOption: function() {
                        return this._options.firstPointOnStartAngle
                    },
                    _validateOptions(options) {
                        const that = this;
                        let originValue = options.originValue;
                        const wholeRange = options.wholeRange = {};
                        const period = options.period;
                        if ((0, _type.isDefined)(originValue)) {
                            originValue = that.validateUnit(originValue)
                        }
                        if (period > 0 && options.argumentType === _axes_constants.default.numeric) {
                            originValue = originValue || 0;
                            wholeRange.endValue = originValue + period;
                            that._viewport = (0, _utils.getVizRangeObject)([originValue, wholeRange.endValue])
                        }
                        if ((0, _type.isDefined)(originValue)) {
                            wholeRange.startValue = originValue
                        }
                    },
                    getMargins() {
                        const tickOptions = this._options.tick;
                        const tickOuterLength = _max(tickOptions.visible ? tickOptions.length / 2 + tickOptions.shift : 0, 0);
                        const radius = this.getRadius();
                        const {
                            x: x,
                            y: y
                        } = this._center;
                        const labelBoxes = this._majorTicks.map((t => t.label && t.label.getBBox())).filter((b => b));
                        const canvas = (0, _extend.extend)({}, this._canvas, {
                            left: x - radius,
                            top: y - radius,
                            right: this._canvas.width - (x + radius),
                            bottom: this._canvas.height - (y + radius)
                        });
                        const margins = (0, _axes_utils.calculateCanvasMargins)(labelBoxes, canvas);
                        Object.keys(margins).forEach((k => margins[k] = margins[k] < tickOuterLength ? tickOuterLength : margins[k]));
                        return margins
                    },
                    _updateLabelsPosition() {
                        (0, _axes_utils.measureLabels)(this._majorTicks);
                        this._adjustLabelsCoord(0, 0, true);
                        this._checkBoundedLabelsOverlapping(this._majorTicks, this._majorTicks.map((t => t.labelBBox)))
                    },
                    _setVisualRange: _common.noop,
                    applyVisualRangeSetter: _common.noop,
                    _getStick: function() {
                        return this._options.firstPointOnStartAngle || this._options.type !== _axes_constants.default.discrete
                    },
                    _getTranslatedCoord: function(value, offset) {
                        return this._translator.translate(value, offset) - 90
                    },
                    _getCanvasStartEnd: function() {
                        return {
                            start: -90,
                            end: 270
                        }
                    },
                    _getStripGraphicAttributes: function(fromAngle, toAngle) {
                        const center = this.getCenter();
                        const angle = this.getAngles()[0];
                        const r = this.getRadius();
                        return {
                            x: center.x,
                            y: center.y,
                            innerRadius: 0,
                            outerRadius: r,
                            startAngle: -toAngle - angle,
                            endAngle: -fromAngle - angle
                        }
                    },
                    _createStrip: function(coords) {
                        return this._renderer.arc(coords.x, coords.y, coords.innerRadius, coords.outerRadius, coords.startAngle, coords.endAngle)
                    },
                    _getStripLabelCoords: function(from, to) {
                        const coords = this._getStripGraphicAttributes(from, to);
                        const angle = coords.startAngle + (coords.endAngle - coords.startAngle) / 2;
                        const cosSin = (0, _utils.getCosAndSin)(angle);
                        const halfRad = this.getRadius() / 2;
                        const center = this.getCenter();
                        const x = round(center.x + halfRad * cosSin.cos);
                        const y = round(center.y - halfRad * cosSin.sin);
                        return {
                            x: x,
                            y: y,
                            align: _axes_constants.default.center
                        }
                    },
                    _getConstantLineGraphicAttributes: function(value) {
                        const center = this.getCenter();
                        const r = this.getRadius();
                        return {
                            points: [center.x, center.y, center.x + r, center.y]
                        }
                    },
                    _createConstantLine: function(value, attr) {
                        return this._createPathElement(this._getConstantLineGraphicAttributes(value).points, attr)
                    },
                    _rotateConstantLine(line, value) {
                        const {
                            x: x,
                            y: y
                        } = this.getCenter();
                        line.rotate(value + this.getAngles()[0], x, y)
                    },
                    _getConstantLineLabelsCoords: function(value) {
                        const cosSin = (0, _utils.getCosAndSin)(-value - this.getAngles()[0]);
                        const halfRad = this.getRadius() / 2;
                        const center = this.getCenter();
                        const x = round(center.x + halfRad * cosSin.cos);
                        const y = round(center.y - halfRad * cosSin.sin);
                        return {
                            x: x,
                            y: y
                        }
                    },
                    _checkAlignmentConstantLineLabels: _common.noop,
                    _adjustDivisionFactor: function(val) {
                        return 180 * val / (this.getRadius() * PI)
                    },
                    _getScreenDelta: function() {
                        const angles = this.getAngles();
                        return abs(angles[0] - angles[1])
                    },
                    _getTickMarkPoints: function(coords, length, _ref) {
                        let {
                            shift: shift = 0
                        } = _ref;
                        const center = this.getCenter();
                        const radiusWithTicks = this.getRadius() + length * {
                            inside: -1,
                            center: -.5,
                            outside: 0
                        } [this._options.tickOrientation || "center"];
                        return [center.x + radiusWithTicks + shift, center.y, center.x + radiusWithTicks + length + shift, center.y]
                    },
                    _getLabelAdjustedCoord: function(tick, _offset, _maxWidth, checkCanvas) {
                        const that = this;
                        const labelCoords = tick.labelCoords;
                        const labelY = labelCoords.y;
                        const labelAngle = labelCoords.angle;
                        const cosSin = (0, _utils.getCosAndSin)(labelAngle);
                        const cos = cosSin.cos;
                        const sin = cosSin.sin;
                        const box = tick.labelBBox;
                        const halfWidth = box.width / 2;
                        const halfHeight = box.height / 2;
                        const indentFromAxis = that._options.label.indentFromAxis || 0;
                        const x = labelCoords.x + indentFromAxis * cos;
                        const y = labelY + (labelY - box.y - halfHeight) + indentFromAxis * sin;
                        let shiftX = 0;
                        let shiftY = 0;
                        switch (getPolarQuarter(labelAngle)) {
                            case 1:
                                shiftX = halfWidth;
                                shiftY = halfHeight * sin;
                                break;
                            case 2:
                                shiftX = halfWidth * cos;
                                shiftY = halfHeight;
                                break;
                            case 3:
                                shiftX = -halfWidth;
                                shiftY = halfHeight * sin;
                                break;
                            case 4:
                                shiftX = halfWidth * cos;
                                shiftY = -halfHeight
                        }
                        if (checkCanvas) {
                            const canvas = that._canvas;
                            const boxShiftX = x - labelCoords.x + shiftX;
                            const boxShiftY = y - labelCoords.y + shiftY;
                            if (box.x + boxShiftX < canvas.originalLeft) {
                                shiftX -= box.x + boxShiftX - canvas.originalLeft
                            }
                            if (box.x + box.width + boxShiftX > canvas.width - canvas.originalRight) {
                                shiftX -= box.x + box.width + boxShiftX - (canvas.width - canvas.originalRight)
                            }
                            if (box.y + boxShiftY < canvas.originalTop) {
                                shiftY -= box.y + boxShiftY - canvas.originalTop
                            }
                            if (box.y + box.height + boxShiftY > canvas.height - canvas.originalBottom) {
                                shiftY -= box.y + box.height + boxShiftY - (canvas.height - canvas.originalBottom)
                            }
                        }
                        return {
                            x: x + shiftX,
                            y: y + shiftY
                        }
                    },
                    _getGridLineDrawer: function() {
                        const that = this;
                        return function(tick, gridStyle) {
                            const center = that.getCenter();
                            return that._createPathElement(that._getGridPoints().points, gridStyle).rotate(tick.coords.angle, center.x, center.y)
                        }
                    },
                    _getGridPoints: function() {
                        const r = this.getRadius();
                        const center = this.getCenter();
                        return {
                            points: [center.x, center.y, center.x + r, center.y]
                        }
                    },
                    _getTranslatedValue: function(value, offset) {
                        const startAngle = this.getAngles()[0];
                        const angle = this._translator.translate(value, -offset);
                        const coords = (0, _utils.convertPolarToXY)(this.getCenter(), startAngle, angle, this.getRadius());
                        return {
                            x: coords.x,
                            y: coords.y,
                            angle: this.getTranslatedAngle(angle)
                        }
                    },
                    _getAdjustedStripLabelCoords: function(strip) {
                        const box = strip.labelBBox;
                        return {
                            translateY: strip.label.attr("y") - box.y - box.height / 2
                        }
                    },
                    coordsIn: function(x, y) {
                        return (0, _utils.convertXYToPolar)(this.getCenter(), x, y).r > this.getRadius()
                    },
                    _rotateTick: function(element, coords) {
                        const center = this.getCenter();
                        element.rotate(coords.angle, center.x, center.y)
                    },
                    _validateOverlappingMode: function(mode) {
                        return _axes_constants.default.validateOverlappingMode(mode)
                    },
                    _validateDisplayMode: function() {
                        return "standard"
                    },
                    _getStep: function(boxes) {
                        const radius = this.getRadius() + (this._options.label.indentFromAxis || 0);
                        const maxLabelBox = boxes.reduce((function(prevValue, box) {
                            const curValue = prevValue;
                            if (prevValue.width < box.width) {
                                curValue.width = box.width
                            }
                            if (prevValue.height < box.height) {
                                curValue.height = box.height
                            }
                            return curValue
                        }), {
                            width: 0,
                            height: 0
                        });
                        const angle1 = abs(2 * atan(maxLabelBox.height / (2 * radius - maxLabelBox.width)) * 180 / PI);
                        const angle2 = abs(2 * atan(maxLabelBox.width / (2 * radius - maxLabelBox.height)) * 180 / PI);
                        return _axes_constants.default.getTicksCountInRange(this._majorTicks, "angle", _max(angle1, angle2))
                    },
                    _checkBoundedLabelsOverlapping: function(majorTicks, boxes, mode) {
                        const labelOpt = this._options.label;
                        mode = mode || this._validateOverlappingMode(labelOpt.overlappingBehavior);
                        if ("hide" !== mode) {
                            return
                        }
                        const lastVisibleLabelIndex = majorTicks.reduce(((lastVisibleLabelIndex, tick, index) => tick.label ? index : lastVisibleLabelIndex), null);
                        if (!lastVisibleLabelIndex) {
                            return
                        }
                        if (_axes_constants.default.areLabelsOverlap(boxes[0], boxes[lastVisibleLabelIndex], labelOpt.minSpacing, _axes_constants.default.center)) {
                            "first" === labelOpt.hideFirstOrLast ? majorTicks[0].removeLabel() : majorTicks[lastVisibleLabelIndex].removeLabel()
                        }
                    },
                    shift: function(margins) {
                        this._axisGroup.attr({
                            translateX: margins.right,
                            translateY: margins.bottom
                        });
                        this._axisElementsGroup.attr({
                            translateX: margins.right,
                            translateY: margins.bottom
                        })
                    },
                    getTranslatedAngle(angle) {
                        const startAngle = this.getAngles()[0];
                        return angle + startAngle - 90
                    }
                };
                exports.circular = circularAxes;
                const circularSpider = exports.circularSpider = (0, _extend.extend)({}, circularAxes, {
                    _createAxisElement: function() {
                        return this._renderer.path([], "area")
                    },
                    _updateAxisElementPosition: function() {
                        this._axisElement.attr({
                            points: (0, _utils.map)(this.getSpiderTicks(), (function(tick) {
                                return {
                                    x: tick.coords.x,
                                    y: tick.coords.y
                                }
                            }))
                        })
                    },
                    _getStick: function() {
                        return true
                    },
                    _getSpiderCategoryOption: function() {
                        return true
                    },
                    getSpiderTicks: function() {
                        const ticks = this.getFullTicks();
                        this._spiderTicks = ticks.map((0, _tick.tick)(this, this.renderer, {}, {}, this._getSkippedCategory(ticks), true));
                        this._spiderTicks.forEach((function(tick) {
                            tick.initCoords()
                        }));
                        return this._spiderTicks
                    },
                    _getStripGraphicAttributes: function(fromAngle, toAngle) {
                        const center = this.getCenter();
                        const spiderTicks = this.getSpiderTicks();
                        let firstTick;
                        let lastTick;
                        let nextTick;
                        let tick;
                        const points = [];
                        let i = 0;
                        const len = spiderTicks.length;
                        while (i < len) {
                            tick = spiderTicks[i].coords;
                            if (tick.angle >= fromAngle && tick.angle <= toAngle) {
                                if (!firstTick) {
                                    firstTick = (spiderTicks[i - 1] || spiderTicks[spiderTicks.length - 1]).coords;
                                    points.push((tick.x + firstTick.x) / 2, (tick.y + firstTick.y) / 2)
                                }
                                points.push(tick.x, tick.y);
                                nextTick = (spiderTicks[i + 1] || spiderTicks[0]).coords;
                                lastTick = {
                                    x: (tick.x + nextTick.x) / 2,
                                    y: (tick.y + nextTick.y) / 2
                                }
                            }
                            i++
                        }
                        points.push(lastTick.x, lastTick.y);
                        points.push(center.x, center.y);
                        return {
                            points: points
                        }
                    },
                    _createStrip: function(_ref2) {
                        let {
                            points: points
                        } = _ref2;
                        return this._renderer.path(points, "area")
                    },
                    _getTranslatedCoord: function(value, offset) {
                        return this._translator.translate(value, offset) - 90
                    },
                    _setTickOffset: function() {
                        this._tickOffset = false
                    }
                });
                const linear = exports.linear = {
                    _resetMargins() {
                        this._reinitTranslator(this._getViewportRange())
                    },
                    _getStick: xyAxesLinear._getStick,
                    _getSpiderCategoryOption: _common.noop,
                    _getTranslatorOptions: function() {
                        return {
                            isHorizontal: true,
                            stick: this._getStick()
                        }
                    },
                    getRadius: circularAxes.getRadius,
                    getCenter: circularAxes.getCenter,
                    getAngles: circularAxes.getAngles,
                    _updateRadius: circularAxes._updateRadius,
                    _updateCenter: circularAxes._updateCenter,
                    _processCanvas(canvas) {
                        this._updateRadius(canvas);
                        this._updateCenter(canvas);
                        return {
                            left: 0,
                            right: 0,
                            startPadding: canvas.startPadding,
                            endPadding: canvas.endPadding,
                            width: this.getRadius()
                        }
                    },
                    _createAxisElement: xyAxesLinear._createAxisElement,
                    _updateAxisElementPosition: function() {
                        const centerCoord = this.getCenter();
                        this._axisElement.attr({
                            points: [centerCoord.x, centerCoord.y, centerCoord.x + this.getRadius(), centerCoord.y]
                        }).rotate(this.getAngles()[0] - 90, centerCoord.x, centerCoord.y)
                    },
                    _getScreenDelta: function() {
                        return this.getRadius()
                    },
                    _getTickMarkPoints: function(coords, length) {
                        return [coords.x - length / 2, coords.y, coords.x + length / 2, coords.y]
                    },
                    _getLabelAdjustedCoord: function(tick) {
                        const labelCoords = tick.labelCoords;
                        const labelY = labelCoords.y;
                        const cosSin = (0, _utils.getCosAndSin)(labelCoords.angle);
                        const indentFromAxis = this._options.label.indentFromAxis || 0;
                        const box = tick.labelBBox;
                        const x = labelCoords.x - abs(indentFromAxis * cosSin.sin) + abs(box.width / 2 * cosSin.cos) - box.width / 2;
                        const y = labelY + (labelY - box.y) - abs(box.height / 2 * cosSin.sin) + abs(indentFromAxis * cosSin.cos);
                        return {
                            x: x,
                            y: y
                        }
                    },
                    _getGridLineDrawer: function() {
                        const that = this;
                        return function(tick, gridStyle) {
                            const grid = that._getGridPoints(tick.coords);
                            return that._renderer.circle(grid.cx, grid.cy, grid.r).attr(gridStyle).sharp()
                        }
                    },
                    _getGridPoints: function(coords) {
                        const pos = this.getCenter();
                        const radius = (0, _utils.getDistance)(pos.x, pos.y, coords.x, coords.y);
                        if (radius > this.getRadius()) {
                            return {
                                cx: null,
                                cy: null,
                                r: null
                            }
                        }
                        return {
                            cx: pos.x,
                            cy: pos.y,
                            r: radius
                        }
                    },
                    _getTranslatedValue: function(value, offset) {
                        const startAngle = this.getAngles()[0];
                        const xy = (0, _utils.convertPolarToXY)(this.getCenter(), startAngle, 0, this._translator.translate(value, offset));
                        return {
                            x: xy.x,
                            y: xy.y,
                            angle: startAngle - 90
                        }
                    },
                    _getTranslatedCoord: function(value, offset) {
                        return this._translator.translate(value, offset)
                    },
                    _getCanvasStartEnd() {
                        const invert = this.getTranslator().getBusinessRange().invert;
                        const coords = [0, this.getRadius()];
                        invert && coords.reverse();
                        return {
                            start: coords[0],
                            end: coords[1]
                        }
                    },
                    _getStripGraphicAttributes: function(fromPoint, toPoint) {
                        const center = this.getCenter();
                        return {
                            x: center.x,
                            y: center.y,
                            innerRadius: fromPoint,
                            outerRadius: toPoint
                        }
                    },
                    _createStrip: function(attrs) {
                        return this._renderer.arc(attrs.x, attrs.y, attrs.innerRadius, attrs.outerRadius, 0, 360)
                    },
                    _getAdjustedStripLabelCoords: circularAxes._getAdjustedStripLabelCoords,
                    _getStripLabelCoords: function(from, to) {
                        const labelPos = from + (to - from) / 2;
                        const center = this.getCenter();
                        const y = round(center.y - labelPos);
                        return {
                            x: center.x,
                            y: y,
                            align: _axes_constants.default.center
                        }
                    },
                    _getConstantLineGraphicAttributes: function(value) {
                        const center = this.getCenter();
                        return {
                            cx: center.x,
                            cy: center.y,
                            r: value
                        }
                    },
                    _createConstantLine: function(value, attr) {
                        const attrs = this._getConstantLineGraphicAttributes(value);
                        return this._renderer.circle(attrs.cx, attrs.cy, attrs.r).attr(attr).sharp()
                    },
                    _getConstantLineLabelsCoords: function(value) {
                        const center = this.getCenter();
                        const y = round(center.y - value);
                        return {
                            x: center.x,
                            y: y
                        }
                    },
                    _checkAlignmentConstantLineLabels: _common.noop,
                    _rotateTick: function(element, coords, isGridLine) {
                        !isGridLine && element.rotate(coords.angle + 90, coords.x, coords.y)
                    },
                    _validateOverlappingMode: circularAxes._validateOverlappingMode,
                    _validateDisplayMode: circularAxes._validateDisplayMode,
                    _getStep: function(boxes) {
                        const quarter = getPolarQuarter(this.getAngles()[0]);
                        const spacing = this._options.label.minSpacing;
                        const func = 2 === quarter || 4 === quarter ? function(box) {
                            return box.width + spacing
                        } : function(box) {
                            return box.height
                        };
                        const maxLabelLength = boxes.reduce(((prevValue, box) => _max(prevValue, func(box))), 0);
                        return _axes_constants.default.getTicksCountInRange(this._majorTicks, 2 === quarter || 4 === quarter ? "x" : "y", maxLabelLength)
                    }
                };
                exports.linearSpider = (0, _extend.extend)({}, linear, {
                    _createPathElement: function(points, attr) {
                        return this._renderer.path(points, "area").attr(attr).sharp()
                    },
                    setSpiderTicks: function(ticks) {
                        this._spiderTicks = ticks
                    },
                    _getGridLineDrawer: function() {
                        const that = this;
                        return function(tick, gridStyle) {
                            return that._createPathElement(that._getGridPoints(tick.coords).points, gridStyle)
                        }
                    },
                    _getGridPoints: function(coords) {
                        const pos = this.getCenter();
                        const radius = (0, _utils.getDistance)(pos.x, pos.y, coords.x, coords.y);
                        return this._getGridPointsByRadius(radius)
                    },
                    _getGridPointsByRadius: function(radius) {
                        const pos = this.getCenter();
                        if (radius > this.getRadius()) {
                            return {
                                points: null
                            }
                        }
                        return {
                            points: (0, _utils.map)(this._spiderTicks, (function(tick) {
                                const cosSin = (0, _utils.getCosAndSin)(tick.coords.angle);
                                return {
                                    x: round(pos.x + radius * cosSin.cos),
                                    y: round(pos.y + radius * cosSin.sin)
                                }
                            }))
                        }
                    },
                    _getStripGraphicAttributes: function(fromPoint, toPoint) {
                        const innerPoints = this._getGridPointsByRadius(toPoint).points;
                        const outerPoints = this._getGridPointsByRadius(fromPoint).points;
                        return {
                            points: [outerPoints, innerPoints.reverse()]
                        }
                    },
                    _createStrip: circularSpider._createStrip,
                    _getConstantLineGraphicAttributes: function(value) {
                        return this._getGridPointsByRadius(value)
                    },
                    _createConstantLine: function(value, attr) {
                        return this._createPathElement(this._getConstantLineGraphicAttributes(value).points, attr)
                    }
                })
            },
        38528:
            /*!*************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/axes/smart_formatter.js ***!
              \*************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.formatRange = function(_ref2) {
                    let {
                        startValue: startValue,
                        endValue: endValue,
                        tickInterval: tickInterval,
                        argumentFormat: argumentFormat,
                        axisOptions: {
                            dataType: dataType,
                            type: type,
                            logarithmBase: logarithmBase
                        }
                    } = _ref2;
                    if ("discrete" === type) {
                        return ""
                    }
                    if ("datetime" === dataType) {
                        return function(startValue, endValue, tickInterval) {
                            const diff = getDatesDifferences(startValue, endValue);
                            const typeFormat = _date.default.getDateFormatByTickInterval(tickInterval);
                            const diffFormatType = _format_helper.default.getDateFormatByDifferences(diff, typeFormat);
                            const diffFormat = createFormat(diffFormatType);
                            const values = [];
                            if (tickInterval in diff) {
                                const rangeFormat = function(diff, interval) {
                                    let stop = false;
                                    for (const i in diff) {
                                        if (stop) {
                                            diff[i] = false
                                        } else if (i === interval) {
                                            stop = true
                                        } else {
                                            diff[i] = true
                                        }
                                    }
                                    return createFormat(_format_helper.default.getDateFormatByDifferences(diff))
                                }(getDatesDifferences(startValue, endValue), tickInterval);
                                const value = _format(startValue, rangeFormat);
                                if (value) {
                                    values.push(value)
                                }
                            } else {
                                const rangeFormat = function(diff) {
                                    let stop = false;
                                    for (const i in diff) {
                                        if (true === diff[i] || "hour" === i || stop) {
                                            diff[i] = false;
                                            stop = true
                                        } else if (false === diff[i]) {
                                            diff[i] = true
                                        }
                                    }
                                    return createFormat(_format_helper.default.getDateFormatByDifferences(diff))
                                }(getDatesDifferences(startValue, endValue));
                                const highValue = _format(startValue, rangeFormat);
                                if (highValue) {
                                    values.push(highValue)
                                }
                                values.push(`${_format(startValue,diffFormat)} - ${_format(endValue,diffFormat)}`)
                            }
                            return values.join(", ")
                        }(startValue, endValue, function(interval) {
                            if ((0, _type.isObject)(interval)) {
                                const dateUnits = Object.keys(interval);
                                const sum = dateUnits.reduce(((sum, k) => interval[k] + sum), 0);
                                if (1 === sum) {
                                    const dateUnit = dateUnits.filter((k => 1 === interval[k]))[0];
                                    return dateUnit.slice(0, dateUnit.length - 1)
                                }
                            }
                            return interval
                        }(tickInterval))
                    }
                    const formatOptions = {
                        ticks: [],
                        type: type,
                        dataType: dataType,
                        tickInterval: tickInterval,
                        logarithmBase: logarithmBase,
                        labelOptions: {
                            format: argumentFormat
                        }
                    };
                    return `${smartFormatter(startValue,formatOptions)} - ${smartFormatter(endValue,formatOptions)}`
                };
                exports.smartFormatter = smartFormatter;
                var _format_helper = _interopRequireDefault(__webpack_require__( /*! ../../format_helper */ 2082));
                var _type = __webpack_require__( /*! ../../core/utils/type */ 11528);
                var _date = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/date */ 41380));
                var _math = __webpack_require__( /*! ../../core/utils/math */ 50254);
                var _utils = __webpack_require__( /*! ../core/utils */ 28779);

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const _format = _format_helper.default.format;
                const {
                    abs: abs,
                    floor: floor
                } = Math;
                const EXPONENTIAL = "exponential";
                const formats = ["fixedPoint", "thousands", "millions", "billions", "trillions", EXPONENTIAL];
                const dateUnitIntervals = ["millisecond", "second", "minute", "hour", "day", "month", "year"];
                const INTERVALS_MAP = {
                    week: "day",
                    quarter: "month",
                    shorttime: "hour",
                    longtime: "second"
                };

                function getDatesDifferences(prevDate, curDate, nextDate, tickIntervalFormat) {
                    tickIntervalFormat = INTERVALS_MAP[tickIntervalFormat] || tickIntervalFormat;
                    const tickFormatIndex = dateUnitIntervals.indexOf(tickIntervalFormat);
                    if (nextDate) {
                        const nextDifferences = _date.default.getDatesDifferences(curDate, nextDate);
                        if (nextDifferences[tickIntervalFormat]) {
                            ! function(differences, tickFormatIndex) {
                                for (let i = tickFormatIndex; i < dateUnitIntervals.length - 1; i++) {
                                    const dateUnitInterval = dateUnitIntervals[i];
                                    if (i === tickFormatIndex) {
                                        setDateUnitInterval(differences, tickFormatIndex + (differences.millisecond ? 2 : 1));
                                        break
                                    } else if (differences[dateUnitInterval] && differences.count > 1) {
                                        resetDateUnitInterval(differences, i);
                                        break
                                    }
                                }
                            }(nextDifferences, tickFormatIndex)
                        }
                        return nextDifferences
                    } else {
                        const prevDifferences = _date.default.getDatesDifferences(prevDate, curDate);
                        const patched = function(differences, tickFormatIndex) {
                            let patched = false;
                            for (let i = dateUnitIntervals.length - 1; i >= tickFormatIndex; i--) {
                                const dateUnitInterval = dateUnitIntervals[i];
                                if (differences[dateUnitInterval]) {
                                    if (i - tickFormatIndex > 1) {
                                        for (let j = 0; j <= tickFormatIndex; j++) {
                                            resetDateUnitInterval(differences, j);
                                            patched = true
                                        }
                                        break
                                    }
                                }
                            }
                            return patched
                        }(prevDifferences, tickFormatIndex);
                        if (!patched && 1 === prevDifferences.count) {
                            setDateUnitInterval(prevDifferences, tickFormatIndex)
                        }
                        return prevDifferences
                    }
                }

                function resetDateUnitInterval(differences, intervalIndex) {
                    const dateUnitInterval = dateUnitIntervals[intervalIndex];
                    if (differences[dateUnitInterval]) {
                        differences[dateUnitInterval] = false;
                        differences.count--
                    }
                }

                function setDateUnitInterval(differences, intervalIndex) {
                    const dateUnitInterval = dateUnitIntervals[intervalIndex];
                    if (false === differences[dateUnitInterval]) {
                        differences[dateUnitInterval] = true;
                        differences.count++
                    }
                }

                function getTransitionTickIndex(ticks, value) {
                    let i;
                    let curDiff;
                    let minDiff;
                    let nearestTickIndex = 0;
                    minDiff = abs(value - ticks[0]);
                    for (i = 1; i < ticks.length; i++) {
                        curDiff = abs(value - ticks[i]);
                        if (curDiff < minDiff) {
                            minDiff = curDiff;
                            nearestTickIndex = i
                        }
                    }
                    return nearestTickIndex
                }

                function splitDecimalNumber(value) {
                    return value.toString().split(".")
                }

                function createFormat(type) {
                    let formatter;
                    if ((0, _type.isFunction)(type)) {
                        formatter = type;
                        type = null
                    }
                    return {
                        type: type,
                        formatter: formatter
                    }
                }

                function getFormatExponential(tick, tickInterval) {
                    const stringTick = abs(tick).toString();
                    if ((0, _type.isExponential)(tick)) {
                        return Math.max(abs((0, _math.getExponent)(tick) - (0, _math.getExponent)(tickInterval)), abs((0, _math.getPrecision)(tick) - (0, _math.getPrecision)(tickInterval)))
                    } else {
                        return abs((str = stringTick.split(".")[1], str.length - parseInt(str).toString().length) - (0, _math.getExponent)(tickInterval) + 1)
                    }
                    var str
                }

                function smartFormatter(tick, options) {
                    let tickInterval = options.tickInterval;
                    const stringTick = abs(tick).toString();
                    let format = options.labelOptions.format;
                    const ticks = options.ticks;
                    const isLogarithmic = "logarithmic" === options.type;
                    if (1 === ticks.length && 0 === ticks.indexOf(tick) && !(0, _type.isDefined)(tickInterval)) {
                        tickInterval = abs(tick) >= 1 ? 1 : (0, _math.adjust)(1 - abs(tick), tick)
                    }
                    if (Object.is(tick, -0)) {
                        tick = 0
                    }
                    if (!(0, _type.isDefined)(format) && "discrete" !== options.type && tick && (10 === options.logarithmBase || !isLogarithmic)) {
                        if ("datetime" !== options.dataType && (0, _type.isDefined)(tickInterval)) {
                            if (ticks.length && -1 === ticks.indexOf(tick)) {
                                const indexOfTick = getTransitionTickIndex(ticks, tick);
                                tickInterval = (0, _math.adjust)(abs(tick - ticks[indexOfTick]), tick)
                            }
                            if (isLogarithmic) {
                                return function(tick) {
                                    const log10Tick = (0, _utils.getAdjustedLog10)(abs(tick));
                                    let type;
                                    if (log10Tick > 0) {
                                        type = formats[floor(log10Tick / 3)] || EXPONENTIAL
                                    } else if (log10Tick < -4) {
                                        type = EXPONENTIAL
                                    } else {
                                        return _format((0, _math.adjust)(tick))
                                    }
                                    return _format(tick, {
                                        type: type,
                                        precision: 0
                                    })
                                }(tick)
                            } else {
                                let separatedTickInterval = splitDecimalNumber(tickInterval);
                                if (separatedTickInterval < 2) {
                                    separatedTickInterval = splitDecimalNumber(tick)
                                }
                                if (separatedTickInterval.length > 1 && !(0, _type.isExponential)(tickInterval)) {
                                    format = {
                                        type: formats[0],
                                        precision: separatedTickInterval[1].length
                                    }
                                } else if ((0, _type.isExponential)(tickInterval) && (-1 !== stringTick.indexOf(".") || (0, _type.isExponential)(tick))) {
                                    format = {
                                        type: EXPONENTIAL,
                                        precision: getFormatExponential(tick, tickInterval)
                                    }
                                } else {
                                    format = function(tick, tickInterval) {
                                        const tickIntervalIndex = floor((0, _utils.getAdjustedLog10)(tickInterval));
                                        let tickIndex;
                                        let precision = 0;
                                        let actualIndex = tickIndex = floor((0, _utils.getAdjustedLog10)(abs(tick)));
                                        if (tickIndex - tickIntervalIndex >= 2) {
                                            actualIndex = tickIntervalIndex
                                        }
                                        let indexOfFormat = floor(actualIndex / 3);
                                        const offset = 3 * indexOfFormat;
                                        if (indexOfFormat < 0) {
                                            indexOfFormat = 0
                                        }
                                        const typeFormat = formats[indexOfFormat] || formats[formats.length - 1];
                                        if (offset > 0) {
                                            const separatedTickInterval = splitDecimalNumber(tickInterval / Math.pow(10, offset));
                                            if (separatedTickInterval[1]) {
                                                precision = separatedTickInterval[1].length
                                            }
                                        }
                                        return {
                                            precision: precision,
                                            type: typeFormat
                                        }
                                    }(tick, tickInterval)
                                }
                            }
                        } else if ("datetime" === options.dataType) {
                            format = function(tick, _ref) {
                                let {
                                    showTransition: showTransition,
                                    ticks: ticks,
                                    tickInterval: tickInterval
                                } = _ref;
                                let typeFormat = _date.default.getDateFormatByTickInterval(tickInterval);
                                let prevDateIndex;
                                let nextDateIndex;
                                if (showTransition && ticks.length) {
                                    const indexOfTick = ticks.map(Number).indexOf(+tick);
                                    if (1 === ticks.length && 0 === indexOfTick) {
                                        typeFormat = _format_helper.default.getDateFormatByTicks(ticks)
                                    } else {
                                        if (-1 === indexOfTick) {
                                            prevDateIndex = getTransitionTickIndex(ticks, tick)
                                        } else {
                                            prevDateIndex = 0 === indexOfTick ? ticks.length - 1 : indexOfTick - 1;
                                            nextDateIndex = 0 === indexOfTick ? 1 : -1
                                        }
                                        const datesDifferences = getDatesDifferences(ticks[prevDateIndex], tick, ticks[nextDateIndex], typeFormat);
                                        typeFormat = _format_helper.default.getDateFormatByDifferences(datesDifferences, typeFormat)
                                    }
                                }
                                return createFormat(typeFormat)
                            }(tick, options)
                        }
                    }
                    return _format(tick, format)
                }
            },
        38922:
            /*!***************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/axes/strip.js ***!
              \***************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = function(axis, options) {
                    let storedCoord;
                    let lastStoredCoordinates;
                    const labelOptions = options.label || {};
                    return {
                        options: options,
                        label: null,
                        rect: null,
                        _getCoord() {
                            const canvas = axis._getCanvasStartEnd();
                            const range = axis._translator.getBusinessRange();
                            return axis._getStripPos(options.startValue, options.endValue, canvas.start, canvas.end, range)
                        },
                        _drawLabel: coords => axis._renderer.text(labelOptions.text, coords.x, coords.y).css((0, _utils.patchFontOptions)((0, _extend.extend)({}, axis.getOptions().label.font, labelOptions.font))).attr({
                            align: "center",
                            class: labelOptions.cssClass
                        }).append(axis._axisStripLabelGroup),
                        draw() {
                            if (axis._translator.getBusinessRange().isEmpty()) {
                                return
                            }
                            if (((0, _type.isDefined)(options.startValue) || (0, _type.isDefined)(options.endValue)) && (0, _type.isDefined)(options.color)) {
                                const stripPos = this._getCoord();
                                this.labelCoords = labelOptions.text ? axis._getStripLabelCoords(stripPos.from, stripPos.to, labelOptions) : null;
                                if (stripPos.outOfCanvas || !(0, _type.isDefined)(stripPos.to) || !(0, _type.isDefined)(stripPos.from)) {
                                    return
                                }
                                this.rect = axis._createStrip(axis._getStripGraphicAttributes(stripPos.from, stripPos.to)).attr({
                                    fill: options.color
                                }).append(axis._axisStripGroup);
                                this.label = labelOptions.text ? this._drawLabel(this.labelCoords) : null
                            }
                        },
                        getContentContainer() {
                            return this.label
                        },
                        removeLabel() {},
                        updatePosition(animate) {
                            const stripPos = this._getCoord();
                            if (animate && storedCoord) {
                                this.label && this.label.attr(axis._getStripLabelCoords(storedCoord.from, storedCoord.to, options.label));
                                this.rect && this.rect.attr(axis._getStripGraphicAttributes(storedCoord.from, storedCoord.to));
                                this.label && this.label.animate(axis._getStripLabelCoords(stripPos.from, stripPos.to, options.label));
                                this.rect && this.rect.animate(axis._getStripGraphicAttributes(stripPos.from, stripPos.to))
                            } else {
                                this.label && this.label.attr(axis._getStripLabelCoords(stripPos.from, stripPos.to, options.label));
                                this.rect && this.rect.attr(axis._getStripGraphicAttributes(stripPos.from, stripPos.to))
                            }
                        },
                        saveCoords() {
                            lastStoredCoordinates = storedCoord;
                            storedCoord = this._getCoord()
                        },
                        resetCoordinates() {
                            storedCoord = lastStoredCoordinates
                        }
                    }
                };
                var _type = __webpack_require__( /*! ../../core/utils/type */ 11528);
                var _utils = __webpack_require__( /*! ../core/utils */ 28779);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576);
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        99043:
            /*!**************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/axes/tick.js ***!
              \**************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.tick = function(axis, renderer, tickOptions, gridOptions, skippedCategory, skipLabels, offset) {
                    const tickOffset = offset || axis._tickOffset;
                    const lineGroup = axis._axisLineGroup;
                    const elementsGroup = axis._axisElementsGroup;
                    const tickStyle = getPathStyle(tickOptions);
                    const gridStyle = getPathStyle(gridOptions);
                    const emptyStrRegExp = /^\s+$/;
                    const axisOptions = axis.getOptions();
                    const labelOptions = axisOptions.label;
                    const labelStyle = axis._textOptions;

                    function getLabelFontStyle(tick) {
                        let fontStyle = axis._textFontStyles;
                        const customizeColor = labelOptions.customizeColor;
                        if (customizeColor && customizeColor.call) {
                            fontStyle = (0, _extend.extend)({}, axis._textFontStyles, {
                                fill: customizeColor.call(tick, tick)
                            })
                        }
                        return fontStyle
                    }

                    function createLabelHint(tick, range) {
                        const labelHint = axis.formatHint(tick.value, labelOptions, range);
                        if ((0, _type.isDefined)(labelHint) && "" !== labelHint) {
                            tick.getContentContainer().setTitle(labelHint)
                        }
                    }
                    return function(value) {
                        const tick = {
                            value: value,
                            updateValue(newValue) {
                                this.value = value = newValue
                            },
                            initCoords: function() {
                                this.coords = axis._getTranslatedValue(value, tickOffset);
                                this.labelCoords = axis._getTranslatedValue(value)
                            },
                            saveCoords() {
                                (0, _deferred.when)(this._templateDef).done((() => {
                                    this._lastStoredCoordinates = {
                                        coords: this._storedCoords,
                                        labelCoords: this._storedLabelsCoords
                                    };
                                    this._storedCoords = this.coords;
                                    this._storedLabelsCoords = this.templateContainer ? this._getTemplateCoords() : this.labelCoords
                                }))
                            },
                            resetCoordinates() {
                                if (this._lastStoredCoordinates) {
                                    this._storedCoords = this._lastStoredCoordinates.coords;
                                    this._storedLabelsCoords = this._lastStoredCoordinates.labelCoords
                                }
                            },
                            drawMark(options) {
                                if (!tickOptions.visible || skippedCategory === value) {
                                    return
                                }
                                if (axis.areCoordsOutsideAxis(this.coords)) {
                                    return
                                }
                                if (this.mark) {
                                    this.mark.append(lineGroup);
                                    axis.sharp(this.mark, axis.getSharpDirectionByCoords(this.coords));
                                    this.updateTickPosition(options)
                                } else {
                                    this.mark = axis._createPathElement([], tickStyle, axis.getSharpDirectionByCoords(this.coords)).append(lineGroup);
                                    this.updateTickPosition(options)
                                }
                            },
                            setSkippedCategory(category) {
                                skippedCategory = category
                            },
                            _updateLine(lineElement, settings, storedSettings, animate, isGridLine) {
                                if (!lineElement) {
                                    return
                                }
                                if (null === settings.points || null === settings.r) {
                                    lineElement.remove();
                                    return
                                }
                                if (animate && storedSettings && null !== storedSettings.points) {
                                    settings.opacity = 1;
                                    lineElement.attr(storedSettings);
                                    lineElement.animate(settings)
                                } else {
                                    settings.opacity = animate ? 0 : 1;
                                    lineElement.attr(settings);
                                    animate && lineElement.animate({
                                        opacity: 1
                                    }, {
                                        delay: .5,
                                        partitionDuration: .5
                                    })
                                }
                                this.coords.angle && axis._rotateTick(lineElement, this.coords, isGridLine)
                            },
                            updateTickPosition: function(options, animate) {
                                this._updateLine(this.mark, {
                                    points: axis._getTickMarkPoints(tick.coords, tickOptions.length, options)
                                }, this._storedCoords && {
                                    points: axis._getTickMarkPoints(tick._storedCoords, tickOptions.length, options)
                                }, animate, false)
                            },
                            drawLabel: function(range, template) {
                                if (this.templateContainer && axis.isRendered()) {
                                    this.updateLabelPosition();
                                    return
                                }
                                const labelIsVisible = labelOptions.visible && !skipLabels && !axis.getTranslator().getBusinessRange().isEmpty() && !axis.areCoordsOutsideAxis(this.labelCoords);
                                if (!labelIsVisible) {
                                    if (this.label) {
                                        this.removeLabel()
                                    }
                                    return
                                }
                                const templateOption = labelOptions.template;
                                const text = axis.formatLabel(value, labelOptions, range);
                                if (this.label) {
                                    this.label.attr({
                                        text: text,
                                        rotate: 0
                                    }).append(elementsGroup);
                                    createLabelHint(this, range);
                                    this.updateLabelPosition();
                                    return
                                }
                                if (templateOption) {
                                    this.templateContainer = renderer.g().append(elementsGroup);
                                    this._templateDef && this._templateDef.reject();
                                    this._templateDef = new _deferred.Deferred;
                                    template.render({
                                        model: {
                                            valueText: text,
                                            value: this.value,
                                            labelFontStyle: getLabelFontStyle(this),
                                            labelStyle: labelStyle
                                        },
                                        container: this.templateContainer.element,
                                        onRendered: () => {
                                            this.updateLabelPosition();
                                            this._templateDef && this._templateDef.resolve()
                                        }
                                    })
                                } else if ((0, _type.isDefined)(text) && "" !== text && !emptyStrRegExp.test(text)) {
                                    this.label = renderer.text(text).css(getLabelFontStyle(this)).attr(labelStyle).append(elementsGroup);
                                    this.updateLabelPosition();
                                    createLabelHint(this, range)
                                }
                                const containerForData = this.getContentContainer();
                                containerForData && containerForData.data("chart-data-argument", this.value);
                                this.templateContainer && createLabelHint(this, range)
                            },
                            getTemplateDeferred() {
                                return this._templateDef
                            },
                            getContentContainer() {
                                return this.templateContainer || this.label
                            },
                            fadeOutElements() {
                                const startSettings = {
                                    opacity: 1
                                };
                                const endSettings = {
                                    opacity: 0
                                };
                                const animationSettings = {
                                    partitionDuration: .5
                                };
                                if (this.getContentContainer()) {
                                    this._fadeOutLabel()
                                }
                                if (this.grid) {
                                    this.grid.append(axis._axisGridGroup).attr(startSettings).animate(endSettings, animationSettings)
                                }
                                if (this.mark) {
                                    this.mark.append(axis._axisLineGroup).attr(startSettings).animate(endSettings, animationSettings)
                                }
                            },
                            _fadeInLabel() {
                                const group = axis._renderer.g().attr({
                                    opacity: 0
                                }).append(axis._axisElementsGroup).animate({
                                    opacity: 1
                                }, {
                                    delay: .5,
                                    partitionDuration: .5
                                });
                                this.getContentContainer().append(group)
                            },
                            _fadeOutLabel() {
                                const group = axis._renderer.g().attr({
                                    opacity: 1
                                }).animate({
                                    opacity: 0
                                }, {
                                    partitionDuration: .5
                                }).append(axis._axisElementsGroup).toBackground();
                                this.getContentContainer().append(group)
                            },
                            _getTemplateCoords() {
                                return axis._getLabelAdjustedCoord(this, (axis._constantLabelOffset || 0) + (tick.labelOffset || 0))
                            },
                            updateLabelPosition: function(animate) {
                                const templateContainer = this.templateContainer;
                                if (!this.getContentContainer()) {
                                    return
                                }
                                if (animate && this._storedLabelsCoords) {
                                    if (templateContainer) {
                                        templateContainer.attr(this._storedLabelsCoords);
                                        const lCoords = this._getTemplateCoords();
                                        templateContainer.animate(lCoords)
                                    } else {
                                        this.label.attr({
                                            x: this._storedLabelsCoords.x,
                                            y: this._storedLabelsCoords.y
                                        });
                                        this.label.animate({
                                            x: this.labelCoords.x,
                                            y: this.labelCoords.y
                                        })
                                    }
                                } else {
                                    if (templateContainer) {
                                        const lCoords = this._getTemplateCoords();
                                        templateContainer.attr(lCoords)
                                    } else {
                                        this.label.attr({
                                            x: this.labelCoords.x,
                                            y: this.labelCoords.y
                                        })
                                    }
                                    if (animate) {
                                        this._fadeInLabel()
                                    }
                                }
                            },
                            updateMultilineTextAlignment() {
                                if (labelOptions.template || !this.label) {
                                    return
                                }
                                this.label.attr({
                                    textsAlignment: this.labelAlignment || axis.getOptions().label.alignment
                                })
                            },
                            drawGrid: function(drawLine) {
                                if (gridOptions.visible && skippedCategory !== this.value) {
                                    if (this.grid) {
                                        this.grid.append(axis._axisGridGroup);
                                        axis.sharp(this.grid, axis.getSharpDirectionByCoords(this.coords));
                                        this.updateGridPosition()
                                    } else {
                                        this.grid = drawLine(this, gridStyle);
                                        this.grid && this.grid.append(axis._axisGridGroup)
                                    }
                                }
                            },
                            updateGridPosition: function(animate) {
                                this._updateLine(this.grid, axis._getGridPoints(tick.coords), this._storedCoords && axis._getGridPoints(this._storedCoords), animate, true)
                            },
                            removeLabel() {
                                const contentContainer = this.getContentContainer();
                                contentContainer && contentContainer.remove();
                                this._templateDef && this._templateDef.reject();
                                this._templateDef = this.templateContainer = this.label = null
                            }
                        };
                        return tick
                    }
                };
                var _type = __webpack_require__( /*! ../../core/utils/type */ 11528);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576);
                var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 87739);

                function getPathStyle(options) {
                    return {
                        stroke: options.color,
                        "stroke-width": options.width,
                        "stroke-opacity": options.opacity,
                        opacity: 1
                    }
                }
            },
        64449:
            /*!************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/axes/tick_generator.js ***!
              \************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.tickGenerator = void 0;
                var _utils = __webpack_require__( /*! ../core/utils */ 28779);
                var _date = (e = __webpack_require__( /*! ../../core/utils/date */ 41380), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                var _type = __webpack_require__( /*! ../../core/utils/type */ 11528);
                var _math = __webpack_require__( /*! ../../core/utils/math */ 50254);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576);
                const convertDateUnitToMilliseconds = _date.default.convertDateUnitToMilliseconds;
                const dateToMilliseconds = _date.default.dateToMilliseconds;
                const math = Math;
                const mathAbs = math.abs;
                const mathFloor = math.floor;
                const mathCeil = math.ceil;
                const mathPow = math.pow;
                const NUMBER_MULTIPLIERS = [1, 2, 2.5, 5];
                const LOGARITHMIC_MULTIPLIERS = [1, 2, 3, 5];
                const DATETIME_MULTIPLIERS = {
                    millisecond: [1, 2, 5, 10, 25, 50, 100, 250, 500],
                    second: [1, 2, 3, 5, 10, 15, 20, 30],
                    minute: [1, 2, 3, 5, 10, 15, 20, 30],
                    hour: [1, 2, 3, 4, 6, 8, 12],
                    day: [1, 2],
                    week: [1, 2],
                    month: [1, 2, 3, 6]
                };
                const DATETIME_MULTIPLIERS_WITH_BIG_WEEKEND = (0, _extend.extend)({}, DATETIME_MULTIPLIERS, {
                    day: [1]
                });
                const DATETIME_MINOR_MULTIPLIERS = {
                    millisecond: [1, 2, 5, 10, 25, 50, 100, 250, 500],
                    second: [1, 2, 3, 5, 10, 15, 20, 30],
                    minute: [1, 2, 3, 5, 10, 15, 20, 30],
                    hour: [1, 2, 3, 4, 6, 8, 12],
                    day: [1, 2, 3, 7, 14],
                    month: [1, 2, 3, 6]
                };
                const MINOR_DELIMITERS = [2, 4, 5, 8, 10];
                const getValue = value => value;
                const getLogValue = (base, allowNegatives, linearThreshold) => value => (0, _utils.getLogExt)(value, base, allowNegatives, linearThreshold);
                const correctValueByInterval = (post, round, getValue) => (value, interval) => (0, _math.adjust)(post(round((0, _math.adjust)(getValue(value) / interval)) * interval));

                function correctMinValueByEndOnTick(floorFunc, ceilFunc, resolveEndOnTick, endOnTick) {
                    if ((0, _type.isDefined)(endOnTick)) {
                        return endOnTick ? floorFunc : ceilFunc
                    }
                    return function(value, interval, businessViewInfo, forceEndOnTick) {
                        const floorTickValue = floorFunc(value, interval);
                        if (value - floorTickValue === 0 || !(0, _type.isDefined)(businessViewInfo) || resolveEndOnTick(value, floorTickValue, interval, businessViewInfo) || forceEndOnTick) {
                            return floorTickValue
                        }
                        return ceilFunc(value, interval)
                    }
                }

                function resolveEndOnTick(curValue, tickValue, interval, businessViewInfo) {
                    const prevTickDataDiff = interval - mathAbs(tickValue - curValue);
                    const intervalCount = math.max(mathCeil(businessViewInfo.businessDelta / interval), 2);
                    const businessRatio = businessViewInfo.screenDelta / (intervalCount * interval);
                    const potentialTickScreenDiff = math.round(businessRatio * prevTickDataDiff);
                    const delimiterFactor = (0, _utils.getLogExt)(businessRatio * interval / businessViewInfo.axisDivisionFactor, 2) + 1;
                    const delimiterMultiplier = (businessViewInfo.isSpacedMargin ? 2 : 1) * delimiterFactor;
                    const screenDelimiter = math.round(3 * delimiterMultiplier);
                    return businessViewInfo.businessDelta > businessViewInfo.interval && potentialTickScreenDiff >= screenDelimiter
                }

                function resolveEndOnTickLog(base) {
                    return function(curValue, tickValue, interval, businessViewInfo) {
                        return resolveEndOnTick((0, _utils.getLogExt)(curValue, base), (0, _utils.getLogExt)(tickValue, base), interval, businessViewInfo)
                    }
                }

                function resolveEndOnTickDate(curValue, tickValue, interval, businessViewInfo) {
                    return resolveEndOnTick(curValue.valueOf(), tickValue.valueOf(), dateToMilliseconds(interval), businessViewInfo)
                }

                function getBusinessDelta(data, breaks) {
                    let spacing = 0;
                    if (breaks) {
                        spacing = breaks.reduce(((prev, item) => prev + (item.to - item.from)), 0)
                    }
                    return mathAbs(data.max - data.min - spacing)
                }

                function getIntervalByFactor(businessDelta, screenDelta, axisDivisionFactor, addTickCount) {
                    let count = screenDelta / axisDivisionFactor - (addTickCount || 0);
                    count = count < 1 ? 1 : count;
                    return businessDelta / count
                }

                function getMultiplierFactor(interval, factorDelta) {
                    return mathPow(10, mathFloor((0, _utils.getLogExt)(interval, 10)) + (factorDelta || 0))
                }

                function calculateTickInterval(businessDelta, screenDelta, tickInterval, forceTickInterval, axisDivisionFactor, multipliers, allowDecimals, addTickCount, _, minTickInterval) {
                    const interval = getIntervalByFactor(businessDelta, screenDelta, axisDivisionFactor, addTickCount);
                    let result = 1;
                    const onlyIntegers = false === allowDecimals;
                    if (!forceTickInterval || !tickInterval) {
                        if (interval >= 1 || !onlyIntegers && interval > 0) {
                            result = adjustInterval(interval, multipliers, onlyIntegers)
                        }
                        if (!tickInterval || !forceTickInterval && tickInterval < result) {
                            tickInterval = result
                        }
                    }
                    if (!forceTickInterval && minTickInterval) {
                        minTickInterval = adjustInterval(minTickInterval, multipliers, onlyIntegers);
                        if (minTickInterval > tickInterval) {
                            tickInterval = minTickInterval
                        }
                    }
                    return tickInterval
                }

                function adjustInterval(interval, multipliers, onlyIntegers) {
                    const factor = getMultiplierFactor(interval, -1);
                    let result = 1;
                    multipliers = multipliers || NUMBER_MULTIPLIERS;
                    if (interval > 0) {
                        interval /= factor;
                        result = multipliers.concat(10 * multipliers[0]).map((m => 10 * m)).reduce(((r, m) => {
                            if (.1 === factor && onlyIntegers && 25 === m) {
                                return r
                            }
                            return r < interval ? m : r
                        }), 0);
                        result = (0, _math.adjust)(result * factor, factor)
                    }
                    return result
                }

                function calculateMinorTickInterval(businessDelta, screenDelta, tickInterval, axisDivisionFactor) {
                    const interval = getIntervalByFactor(businessDelta, screenDelta, axisDivisionFactor);
                    return tickInterval || MINOR_DELIMITERS.reduce(((r, d) => {
                        const cur = businessDelta / d;
                        return cur >= interval ? cur : r
                    }), 0)
                }

                function getAdjustIntervalLog(skipCalculationLimits) {
                    return function(interval, multipliers) {
                        let factor = getMultiplierFactor(interval);
                        multipliers = multipliers || LOGARITHMIC_MULTIPLIERS;
                        if (!skipCalculationLimits && factor < 1) {
                            factor = 1
                        }
                        return multipliers.concat(10 * multipliers[0]).reduce(((r, m) => r < interval ? m * factor : r), 0)
                    }
                }

                function numbersReducer(interval, key) {
                    return function(r, m) {
                        if (!r && interval <= convertDateUnitToMilliseconds(key, m)) {
                            r = {};
                            r[key + "s"] = m
                        }
                        return r
                    }
                }

                function yearsReducer(interval, factor) {
                    return function(r, m) {
                        const years = factor * m;
                        if (!r && interval <= convertDateUnitToMilliseconds("year", years) && 2.5 !== years) {
                            r = {
                                years: years
                            }
                        }
                        return r
                    }
                }

                function calculateTickIntervalDateTime(businessDelta, screenDelta, tickInterval, forceTickInterval, axisDivisionFactor, multipliers, allowDecimals, addTickCount, gapSize, minTickInterval) {
                    if (!forceTickInterval || !tickInterval) {
                        const result = adjustIntervalDateTime(getIntervalByFactor(businessDelta, screenDelta, axisDivisionFactor), multipliers, null, gapSize);
                        if (!tickInterval || !forceTickInterval && dateToMilliseconds(tickInterval) <= dateToMilliseconds(result)) {
                            tickInterval = result
                        }
                    }
                    if (!forceTickInterval && minTickInterval) {
                        minTickInterval = adjustIntervalDateTime(minTickInterval, multipliers, null, gapSize);
                        if (dateToMilliseconds(minTickInterval) > dateToMilliseconds(tickInterval)) {
                            tickInterval = minTickInterval
                        }
                    }
                    return tickInterval
                }

                function adjustIntervalDateTime(interval, multipliers, _, gapSize) {
                    let result;
                    multipliers = multipliers || function(gapSize) {
                        if (gapSize && gapSize > 2) {
                            return DATETIME_MULTIPLIERS_WITH_BIG_WEEKEND
                        } else {
                            return DATETIME_MULTIPLIERS
                        }
                    }(gapSize);
                    for (const key in multipliers) {
                        result = multipliers[key].reduce(numbersReducer(interval, key), result);
                        if (result) {
                            break
                        }
                    }
                    if (!result) {
                        for (let factor = 1;; factor *= 10) {
                            result = NUMBER_MULTIPLIERS.reduce(yearsReducer(interval, factor), result);
                            if (result) {
                                break
                            }
                        }
                    }
                    return result
                }

                function calculateMinorTickIntervalDateTime(businessDelta, screenDelta, tickInterval, axisDivisionFactor) {
                    return calculateTickIntervalDateTime(businessDelta, screenDelta, tickInterval, true, axisDivisionFactor, DATETIME_MINOR_MULTIPLIERS)
                }

                function getTickIntervalByCustomTicks(getValue, postProcess) {
                    return ticks => ticks ? postProcess(mathAbs((0, _math.adjust)(getValue(ticks[1]) - getValue(ticks[0])))) || void 0 : void 0
                }

                function addInterval(value, interval, isNegative) {
                    return _date.default.addInterval(value, interval, isNegative)
                }

                function addIntervalDate(value, interval, isNegative) {
                    return addInterval(value, interval, isNegative)
                }

                function addIntervalWithBreaks(addInterval, breaks, correctValue) {
                    breaks = breaks.filter((b => !b.gapSize));
                    return function(value, interval, isNegative) {
                        let breakSize;
                        value = addInterval(value, interval, isNegative);
                        if (!breaks.every((item => {
                                if (value >= addInterval(item.from, interval) && addInterval(value, interval) < item.to) {
                                    breakSize = item.to - item.from - 2 * (addInterval(item.from, interval) - item.from)
                                }
                                return !breakSize
                            }))) {
                            value = correctValue(addInterval(value, breakSize), interval)
                        }
                        return value
                    }
                }

                function calculateTicks(addInterval, correctMinValue, adjustInterval, resolveEndOnTick) {
                    return function(data, tickInterval, endOnTick, gaps, breaks, businessDelta, screenDelta, axisDivisionFactor, generateExtraTick) {
                        const correctTickValue = function(addInterval, breaks) {
                            return function(value) {
                                let gapSize;
                                if (!breaks.every((item => {
                                        if (value >= item.from && value < item.to) {
                                            gapSize = item.gapSize
                                        }
                                        return !gapSize
                                    }))) {
                                    value = addInterval(value, gapSize)
                                }
                                return value
                            }
                        }(addInterval, gaps);
                        const min = data.min;
                        const max = data.max;
                        const businessViewInfo = {
                            screenDelta: screenDelta,
                            businessDelta: businessDelta,
                            axisDivisionFactor: axisDivisionFactor,
                            isSpacedMargin: data.isSpacedMargin,
                            interval: tickInterval
                        };
                        let cur = correctMinValue(min, tickInterval, businessViewInfo);
                        const ticks = [];
                        if (null !== breaks && void 0 !== breaks && breaks.length) {
                            addInterval = addIntervalWithBreaks(addInterval, breaks, correctMinValue)
                        }
                        if (cur > max) {
                            cur = correctMinValue(min, adjustInterval(businessDelta / 2), businessViewInfo);
                            if (cur > max) {
                                endOnTick = true;
                                cur = correctMinValue(min, tickInterval, businessViewInfo, endOnTick)
                            }
                        }
                        cur = correctTickValue(cur);
                        let prev;
                        while (cur < max && cur !== prev || generateExtraTick && cur <= max) {
                            ticks.push(cur);
                            prev = cur;
                            cur = correctTickValue(addInterval(cur, tickInterval))
                        }
                        if (endOnTick || cur - max === 0 || !(0, _type.isDefined)(endOnTick) && resolveEndOnTick(max, cur, tickInterval, businessViewInfo)) {
                            ticks.push(cur)
                        }
                        return ticks
                    }
                }

                function calculateMinorTicks(updateTickInterval, addInterval, correctMinValue, correctTickValue, ceil) {
                    return function(min, max, majorTicks, minorTickInterval, tickInterval, breaks, maxCount) {
                        const factor = tickInterval / minorTickInterval;
                        const lastMajor = majorTicks[majorTicks.length - 1];
                        const firstMajor = majorTicks[0];
                        let tickBalance = maxCount - 1;
                        if (null !== breaks && void 0 !== breaks && breaks.length) {
                            addInterval = addIntervalWithBreaks(addInterval, breaks, correctMinValue)
                        }
                        minorTickInterval = updateTickInterval(minorTickInterval, firstMajor, firstMajor, factor);
                        if (0 === minorTickInterval) {
                            return []
                        }
                        let cur = correctTickValue(correctMinValue(min, tickInterval, min), minorTickInterval);
                        minorTickInterval = updateTickInterval(minorTickInterval, firstMajor, cur, factor);
                        let ticks = [];
                        while (cur < firstMajor && (!tickBalance || tickBalance > 0)) {
                            cur >= min && ticks.push(cur);
                            tickBalance--;
                            cur = addInterval(cur, minorTickInterval)
                        }
                        const middleTicks = majorTicks.reduce(((r, tick) => {
                            tickBalance = maxCount - 1;
                            if (null === r.prevTick) {
                                r.prevTick = tick;
                                return r
                            }
                            minorTickInterval = updateTickInterval(minorTickInterval, tick, r.prevTick, factor);
                            let cur = correctTickValue(r.prevTick, minorTickInterval);
                            while (cur < tick && (!tickBalance || tickBalance > 0)) {
                                cur !== r.prevTick && r.minors.push(cur);
                                tickBalance--;
                                cur = addInterval(cur, minorTickInterval)
                            }
                            r.prevTick = tick;
                            return r
                        }), {
                            prevTick: null,
                            minors: []
                        });
                        ticks = ticks.concat(middleTicks.minors);
                        const maxValue = ceil(max, tickInterval, min);
                        minorTickInterval = updateTickInterval(minorTickInterval, maxValue, maxValue, factor);
                        cur = correctTickValue(lastMajor, minorTickInterval);
                        let prev;
                        while (cur < max && cur !== prev) {
                            ticks.push(cur);
                            prev = cur;
                            cur = addInterval(cur, minorTickInterval)
                        }
                        if (lastMajor - max !== 0 && cur - max === 0) {
                            ticks.push(cur)
                        }
                        return ticks
                    }
                }

                function filterTicks(ticks, breaks) {
                    if (breaks.length) {
                        const result = breaks.reduce(((result, b) => {
                            const tmpTicks = [];
                            let i;
                            for (i = result[1]; i < ticks.length; i++) {
                                const tickValue = ticks[i];
                                if (tickValue < b.from) {
                                    tmpTicks.push(tickValue)
                                }
                                if (tickValue >= b.to) {
                                    break
                                }
                            }
                            return [result[0].concat(tmpTicks), i]
                        }), [
                            [], 0
                        ]);
                        return result[0].concat(ticks.slice(result[1]))
                    }
                    return ticks
                }

                function generator(options, getBusinessDelta, calculateTickInterval, calculateMinorTickInterval, getMajorTickIntervalByCustomTicks, getMinorTickIntervalByCustomTicks, convertTickInterval, calculateTicks, calculateMinorTicks, processScaleBreaks) {
                    function correctUserTickInterval(tickInterval, businessDelta, limit) {
                        if (tickInterval && businessDelta / convertTickInterval(tickInterval) >= limit + 1) {
                            options.incidentOccurred("W2003");
                            tickInterval = void 0
                        }
                        return tickInterval
                    }
                    return function(data, screenDelta, tickInterval, forceTickInterval, customTicks, minorTickInterval, minorTickCount, breaks) {
                        customTicks = customTicks || {};
                        const businessDelta = getBusinessDelta(data, breaks);
                        let result = function(customTicks) {
                            return {
                                tickInterval: getMajorTickIntervalByCustomTicks(customTicks.majors),
                                ticks: customTicks.majors || [],
                                minorTickInterval: getMinorTickIntervalByCustomTicks(customTicks.minors),
                                minorTicks: customTicks.minors || []
                            }
                        }(customTicks);
                        if (!isNaN(businessDelta)) {
                            if (0 === businessDelta && !customTicks.majors) {
                                result.ticks = [data.min]
                            } else {
                                result = function(ticks, data, businessDelta, screenDelta, tickInterval, forceTickInterval, customTicks, breaks) {
                                    if (customTicks.majors) {
                                        ticks.breaks = breaks;
                                        return ticks
                                    }
                                    const gaps = breaks.filter((b => b.gapSize));
                                    let majorTicks;
                                    tickInterval = options.skipCalculationLimits ? tickInterval : correctUserTickInterval(tickInterval, businessDelta, screenDelta);
                                    tickInterval = calculateTickInterval(businessDelta, screenDelta, tickInterval, forceTickInterval, options.axisDivisionFactor, options.numberMultipliers, options.allowDecimals, breaks.length, gaps[0] && gaps[0].gapSize.days, options.minTickInterval);
                                    if (!options.skipTickGeneration) {
                                        majorTicks = calculateTicks(data, tickInterval, options.endOnTick, gaps, breaks, businessDelta, screenDelta, options.axisDivisionFactor, options.generateExtraTick);
                                        breaks = processScaleBreaks(breaks, majorTicks, tickInterval);
                                        majorTicks = filterTicks(majorTicks, breaks);
                                        ticks.breaks = breaks;
                                        ticks.ticks = ticks.ticks.concat(majorTicks)
                                    }
                                    ticks.tickInterval = tickInterval;
                                    return ticks
                                }(result, data, businessDelta, screenDelta, tickInterval, forceTickInterval, customTicks, breaks || []);
                                if (!options.skipTickGeneration && businessDelta > 0) {
                                    result = function(ticks, data, businessDelta, screenDelta, minorTickInterval, minorTickCount, customTicks) {
                                        if (!options.calculateMinors) {
                                            return ticks
                                        }
                                        if (customTicks.minors) {
                                            return ticks
                                        }
                                        const minorBusinessDelta = convertTickInterval(ticks.tickInterval);
                                        const minorScreenDelta = screenDelta * minorBusinessDelta / businessDelta;
                                        const breaks = ticks.breaks;
                                        if (!minorTickInterval && minorTickCount) {
                                            minorTickInterval = getMinorTickIntervalByCustomTicks([minorBusinessDelta / (minorTickCount + 1), minorBusinessDelta / (minorTickCount + 1) * 2])
                                        } else {
                                            minorTickCount = void 0
                                        }
                                        minorTickInterval = correctUserTickInterval(minorTickInterval, minorBusinessDelta, minorScreenDelta);
                                        minorTickInterval = calculateMinorTickInterval(minorBusinessDelta, minorScreenDelta, minorTickInterval, options.minorAxisDivisionFactor);
                                        ticks.minorTicks = filterTicks(ticks.minorTicks.concat(calculateMinorTicks(data.min, data.max, ticks.ticks, minorTickInterval, ticks.tickInterval, breaks, minorTickCount)), breaks);
                                        ticks.minorTickInterval = minorTickInterval;
                                        return ticks
                                    }(result, data, businessDelta, screenDelta, minorTickInterval, minorTickCount, customTicks)
                                }
                            }
                        }
                        return result
                    }
                }

                function getBaseTick(breakValue, _ref, interval, getValue) {
                    let [tick, insideTick] = _ref;
                    if (!(0, _type.isDefined)(tick) || mathAbs(getValue(breakValue) - getValue(tick)) / interval > .25) {
                        if ((0, _type.isDefined)(insideTick) && mathAbs(getValue(insideTick) - getValue(tick)) / interval < 2) {
                            tick = insideTick
                        } else if (!(0, _type.isDefined)(tick)) {
                            tick = breakValue
                        }
                    }
                    return tick
                }

                function getScaleBreaksProcessor(convertTickInterval, getValue, addCorrection) {
                    return function(breaks, ticks, tickInterval) {
                        const interval = convertTickInterval(tickInterval);
                        const correction = .5 * interval;
                        return breaks.reduce(((result, b) => {
                            let breakTicks = ticks.filter((tick => tick <= b.from));
                            const from = addCorrection(getBaseTick(b.from, [].concat(breakTicks[breakTicks.length - 1], ticks[breakTicks.length]), interval, getValue), correction);
                            breakTicks = ticks.filter((tick => tick >= b.to));
                            const to = addCorrection(getBaseTick(b.to, [].concat(breakTicks[0], ticks[ticks.length - breakTicks.length - 1]), interval, getValue), -correction);
                            if (getValue(to) - getValue(from) < interval && !b.gapSize) {
                                return result
                            }
                            if (b.gapSize) {
                                return result.concat([b])
                            }
                            return result.concat([{
                                from: from,
                                to: to,
                                cumulativeWidth: b.cumulativeWidth
                            }])
                        }), [])
                    }
                }
                const correctValueByIntervalLog = (post, getRound, getValue) => (value, interval) => (0, _math.sign)(value) * (0, _math.adjust)(post(getRound(value)((0, _math.adjust)(getValue(value) / interval)) * interval));

                function logarithmicGenerator(options) {
                    const base = options.logBase;
                    const raise = ((base, allowNegatives, linearThreshold) => value => (0, _utils.raiseToExt)(value, base, allowNegatives, linearThreshold))(base, options.allowNegatives, options.linearThreshold);
                    const log = getLogValue(base, options.allowNegatives, options.linearThreshold);
                    const absLog = (base => value => 0 === value ? 0 : (0, _utils.getLog)(mathAbs(value), base))(base);
                    const absRaise = (base => value => (0, _utils.raiseTo)(value, base))(base);
                    const floor = correctValueByIntervalLog(absRaise, (value => value < 0 ? mathCeil : mathFloor), absLog);
                    const ceil = correctValueByIntervalLog(absRaise, (value => value < 0 ? mathFloor : mathCeil), absLog);
                    const ceilNumber = correctValueByInterval(getValue, mathCeil, getValue);
                    return generator(options, function(base, allowNegatives, linearThreshold) {
                        const getLog = getLogValue(base, allowNegatives, linearThreshold);
                        return function(data, breaks) {
                            let spacing = 0;
                            if (breaks) {
                                spacing = breaks.reduce(((prev, item) => prev + mathAbs(getLog(item.to / item.from))), 0)
                            }
                            return mathCeil(mathAbs(getLog(data.max) - getLog(data.min)) - spacing)
                        }
                    }(base, options.allowNegatives, options.linearThreshold), (skipCalculationLimits = options.skipCalculationLimits, function(businessDelta, screenDelta, tickInterval, forceTickInterval, axisDivisionFactor, multipliers, allowDecimals, _, __, minTickInterval) {
                        const interval = getIntervalByFactor(businessDelta, screenDelta, axisDivisionFactor);
                        let result = 0;
                        const adjustInterval = getAdjustIntervalLog(skipCalculationLimits);
                        if (!forceTickInterval || !tickInterval) {
                            if (interval > 0) {
                                result = adjustInterval(interval, multipliers)
                            }
                            if (!tickInterval || !forceTickInterval && tickInterval < result) {
                                tickInterval = result
                            }
                        }
                        if (!forceTickInterval && minTickInterval) {
                            minTickInterval = adjustInterval(minTickInterval, multipliers);
                            if (minTickInterval > tickInterval) {
                                tickInterval = minTickInterval
                            }
                        }
                        return tickInterval
                    }), calculateMinorTickInterval, getTickIntervalByCustomTicks(log, getValue), getTickIntervalByCustomTicks(getValue, getValue), getValue, calculateTicks(function(log, raise) {
                        return (value, interval, isNegative) => raise(addInterval(log(value), interval, isNegative))
                    }(log, raise), correctMinValueByEndOnTick(floor, ceil, resolveEndOnTickLog(base), options.endOnTick), getAdjustIntervalLog(options.skipCalculationLimits), resolveEndOnTickLog(base)), calculateMinorTicks(((_, tick, prevTick, factor) => Math.max(Math.abs(tick), Math.abs(prevTick)) / factor), addInterval, floor, ceilNumber, ceil), getScaleBreaksProcessor(getValue, log, ((value, correction) => raise(log(value) + correction))));
                    var skipCalculationLimits
                }
                exports.tickGenerator = function(options) {
                    let result;
                    if (options.rangeIsEmpty) {
                        result = function(options) {
                            return function(data, screenDelta, tickInterval, forceTickInterval) {
                                let count = mathFloor(screenDelta / options.axisDivisionFactor);
                                count = count < 1 ? 1 : count;
                                const interval = screenDelta / count;
                                return {
                                    ticks: interval > 0 ? Array.apply(null, new Array(count + 1)).map(((_, i) => interval * i)) : [],
                                    tickInterval: interval
                                }
                            }
                        }(options)
                    } else if ("discrete" === options.axisType) {
                        result = function(options) {
                            return function(data, screenDelta, tickInterval, forceTickInterval) {
                                const categories = (0, _utils.getCategoriesInfo)(data.categories, data.min, data.max).categories;
                                return {
                                    ticks: categories,
                                    tickInterval: mathCeil(categories.length * options.axisDivisionFactor / screenDelta)
                                }
                            }
                        }(options)
                    } else if ("logarithmic" === options.axisType) {
                        result = logarithmicGenerator(options)
                    } else if ("datetime" === options.dataType) {
                        result = function(options) {
                            function floor(value, interval) {
                                const floorNumber = correctValueByInterval(getValue, mathFloor, getValue);
                                let intervalObject = (0, _type.isString)(interval) ? _date.default.getDateIntervalByString(interval.toLowerCase()) : interval;
                                const divider = dateToMilliseconds(interval);
                                if (intervalObject.days % 7 === 0 || interval.quarters) {
                                    intervalObject = adjustIntervalDateTime(divider)
                                }
                                const correctDateWithUnitBeginning = v => _date.default.correctDateWithUnitBeginning(v, intervalObject, null, options.firstDayOfWeek);
                                const floorAtStartDate = v => new Date(mathFloor((v.getTime() - 6e4 * v.getTimezoneOffset()) / divider) * divider + 6e4 * v.getTimezoneOffset());
                                value = correctDateWithUnitBeginning(value);
                                if ("years" in intervalObject) {
                                    value.setFullYear(floorNumber(value.getFullYear(), intervalObject.years))
                                } else if ("quarters" in intervalObject) {
                                    value = correctDateWithUnitBeginning(floorAtStartDate(value))
                                } else if ("months" in intervalObject) {
                                    value.setMonth(floorNumber(value.getMonth(), intervalObject.months))
                                } else if ("weeks" in intervalObject || "days" in intervalObject) {
                                    value = correctDateWithUnitBeginning(floorAtStartDate(value))
                                } else if ("hours" in intervalObject) {
                                    value.setHours(floorNumber(value.getHours(), intervalObject.hours))
                                } else if ("minutes" in intervalObject) {
                                    value.setMinutes(floorNumber(value.getMinutes(), intervalObject.minutes))
                                } else if ("seconds" in intervalObject) {
                                    value.setSeconds(floorNumber(value.getSeconds(), intervalObject.seconds))
                                } else if ("milliseconds" in intervalObject) {
                                    value = floorAtStartDate(value)
                                }
                                return value
                            }
                            const calculateTickIntervalByCustomTicks = getTickIntervalByCustomTicks(getValue, _date.default.convertMillisecondsToDateUnits);
                            return generator(options, getBusinessDelta, calculateTickIntervalDateTime, calculateMinorTickIntervalDateTime, calculateTickIntervalByCustomTicks, calculateTickIntervalByCustomTicks, dateToMilliseconds, calculateTicks(addIntervalDate, correctMinValueByEndOnTick(floor, (function(value, interval) {
                                let newValue = floor(value, interval);
                                while (value - newValue > 0) {
                                    newValue = addIntervalDate(newValue, interval)
                                }
                                return newValue
                            }), resolveEndOnTickDate, options.endOnTick), adjustIntervalDateTime, resolveEndOnTickDate), calculateMinorTicks(getValue, addIntervalDate, floor, addIntervalDate, getValue), getScaleBreaksProcessor(dateToMilliseconds, getValue, ((value, correction) => new Date(value.getTime() + correction))))
                        }(options)
                    } else {
                        result = function(options) {
                            const floor = correctValueByInterval(getValue, mathFloor, getValue);
                            const ceil = correctValueByInterval(getValue, mathCeil, getValue);
                            const calculateTickIntervalByCustomTicks = getTickIntervalByCustomTicks(getValue, getValue);
                            return generator(options, getBusinessDelta, calculateTickInterval, calculateMinorTickInterval, calculateTickIntervalByCustomTicks, calculateTickIntervalByCustomTicks, getValue, calculateTicks(addInterval, correctMinValueByEndOnTick(floor, ceil, resolveEndOnTick, options.endOnTick), adjustInterval, resolveEndOnTick), calculateMinorTicks(getValue, addInterval, floor, addInterval, getValue), getScaleBreaksProcessor(getValue, getValue, ((value, correction) => value + correction)))
                        }(options)
                    }
                    return result
                }
            },
        9441:
            /*!*****************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/axes/xy_axes.js ***!
              \*****************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _range = __webpack_require__( /*! ../translators/range */ 99857);
                var _format_helper = _interopRequireDefault(__webpack_require__( /*! ../../format_helper */ 2082));
                var _date = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/date */ 41380));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576);
                var _datetime_breaks = __webpack_require__( /*! ./datetime_breaks */ 61914);
                var _common = __webpack_require__( /*! ../../core/utils/common */ 17781);
                var _utils = __webpack_require__( /*! ../core/utils */ 28779);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 11528);
                var _axes_constants = _interopRequireDefault(__webpack_require__( /*! ./axes_constants */ 63885));

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const getNextDateUnit = _date.default.getNextDateUnit;
                const correctDateWithUnitBeginning = _date.default.correctDateWithUnitBeginning;
                const _math = Math;
                const _max = _math.max;
                const TOP = _axes_constants.default.top;
                const BOTTOM = _axes_constants.default.bottom;
                const LEFT = _axes_constants.default.left;
                const RIGHT = _axes_constants.default.right;
                const CENTER = _axes_constants.default.center;
                const TICKS_CORRECTIONS = {
                    left: -1,
                    top: -1,
                    right: 0,
                    bottom: 0,
                    center: -.5
                };

                function sortingBreaks(breaks) {
                    return breaks.sort((function(a, b) {
                        return a.from - b.from
                    }))
                }

                function getMarkerFormat(curDate, prevDate, tickInterval, markerInterval) {
                    let format = markerInterval;
                    const datesDifferences = prevDate && _date.default.getDatesDifferences(prevDate, curDate);
                    if (prevDate && "year" !== tickInterval) {
                        ! function(datesDifferences, tickInterval) {
                            let dateUnitInterval;
                            let i;
                            if ("week" === tickInterval) {
                                tickInterval = "day"
                            }
                            if ("quarter" === tickInterval) {
                                tickInterval = "month"
                            }
                            if (datesDifferences[tickInterval]) {
                                for (i = 0; i < _date.default.dateUnitIntervals.length; i++) {
                                    dateUnitInterval = _date.default.dateUnitIntervals[i];
                                    if (datesDifferences[dateUnitInterval]) {
                                        datesDifferences[dateUnitInterval] = false;
                                        datesDifferences.count--
                                    }
                                    if (dateUnitInterval === tickInterval) {
                                        break
                                    }
                                }
                            }
                        }(datesDifferences, tickInterval);
                        format = _format_helper.default.getDateFormatByDifferences(datesDifferences)
                    }
                    return format
                }

                function getMaxSide(act, boxes) {
                    return boxes.reduce((function(prevValue, box) {
                        return _max(prevValue, act(box))
                    }), 0)
                }

                function getConstantLineLabelMarginForVerticalAlignment(constantLines, alignment, labelHeight) {
                    return constantLines.some((function(options) {
                        return options.label.verticalAlignment === alignment
                    })) && labelHeight || 0
                }

                function getLeftMargin(bBox) {
                    return _math.abs(bBox.x) || 0
                }

                function getRightMargin(bBox) {
                    return _math.abs(bBox.width - _math.abs(bBox.x)) || 0
                }
                exports.default = {
                    linear: {
                        _getStep: function(boxes, rotationAngle) {
                            const spacing = this._options.label.minSpacing;
                            const func = this._isHorizontal ? function(box) {
                                return box.width + spacing
                            } : function(box) {
                                return box.height
                            };
                            let maxLabelLength = getMaxSide(func, boxes);
                            if (rotationAngle) {
                                maxLabelLength = function(bBox, rotationAngle) {
                                    rotationAngle = _math.abs(rotationAngle);
                                    rotationAngle = rotationAngle % 180 >= 90 ? 90 - rotationAngle % 90 : rotationAngle % 90;
                                    const a = rotationAngle * (_math.PI / 180);
                                    if (a >= _math.atan(bBox.height / bBox.width)) {
                                        return bBox.height / _math.abs(_math.sin(a))
                                    } else {
                                        return bBox.width
                                    }
                                }({
                                    width: maxLabelLength,
                                    height: this._getMaxLabelHeight(boxes, 0)
                                }, rotationAngle)
                            }
                            return _axes_constants.default.getTicksCountInRange(this._majorTicks, this._isHorizontal ? "x" : "y", maxLabelLength)
                        },
                        _getMaxLabelHeight: function(boxes, spacing) {
                            return getMaxSide((function(box) {
                                return box.height
                            }), boxes) + spacing
                        },
                        _validateOverlappingMode: function(mode, displayMode) {
                            if (this._isHorizontal && ("rotate" === displayMode || "stagger" === displayMode) || !this._isHorizontal) {
                                return _axes_constants.default.validateOverlappingMode(mode)
                            }
                            return mode
                        },
                        _validateDisplayMode: function(mode) {
                            return this._isHorizontal ? mode : "standard"
                        },
                        getMarkerTrackers: function() {
                            return this._markerTrackers
                        },
                        _getSharpParam: function(opposite) {
                            return this._isHorizontal ^ opposite ? "h" : "v"
                        },
                        _createAxisElement: function() {
                            return this._renderer.path([], "line")
                        },
                        _updateAxisElementPosition: function() {
                            const axisCoord = this._axisPosition;
                            const canvas = this._getCanvasStartEnd();
                            this._axisElement.attr({
                                points: this._isHorizontal ? [canvas.start, axisCoord, canvas.end, axisCoord] : [axisCoord, canvas.start, axisCoord, canvas.end]
                            })
                        },
                        _getTranslatedCoord: function(value, offset) {
                            return this._translator.translate(value, offset)
                        },
                        _initAxisPositions() {
                            const that = this;
                            if (that.customPositionIsAvailable()) {
                                that._customBoundaryPosition = that.getCustomBoundaryPosition()
                            }
                            if (!that.customPositionIsAvailable() || that.customPositionIsBoundary()) {
                                that._axisPosition = that.getPredefinedPosition(that.getResolvedBoundaryPosition())
                            } else {
                                that._axisPosition = that.getCustomPosition()
                            }
                        },
                        _getTickMarkPoints(coords, length, tickOptions) {
                            const isHorizontal = this._isHorizontal;
                            const tickOrientation = this._options.tickOrientation;
                            const labelPosition = this._options.label.position;
                            let tickStartCoord;
                            if ((0, _type.isDefined)(tickOrientation)) {
                                tickStartCoord = TICKS_CORRECTIONS[tickOrientation] * length
                            } else {
                                let shift = tickOptions.shift || 0;
                                if (!isHorizontal && labelPosition === LEFT || isHorizontal && labelPosition !== BOTTOM) {
                                    shift = -shift
                                }
                                tickStartCoord = shift + this.getTickStartPositionShift(length)
                            }
                            return [coords.x + (isHorizontal ? 0 : tickStartCoord), coords.y + (isHorizontal ? tickStartCoord : 0), coords.x + (isHorizontal ? 0 : tickStartCoord + length), coords.y + (isHorizontal ? tickStartCoord + length : 0)]
                        },
                        getTickStartPositionShift(length) {
                            const width = this._options.width;
                            const position = this.getResolvedBoundaryPosition();
                            return length % 2 === 1 ? width % 2 === 0 && (position === LEFT || position === TOP) || width % 2 === 1 && (position === RIGHT || position === BOTTOM) && !this.hasNonBoundaryPosition() ? Math.floor(-length / 2) : -Math.floor(length / 2) : -length / 2 + (width % 2 === 0 ? 0 : position === BOTTOM || position === RIGHT ? -1 : 1)
                        },
                        _getTitleCoords: function() {
                            const horizontal = this._isHorizontal;
                            let x = this._axisPosition;
                            let y = this._axisPosition;
                            const align = this._options.title.alignment;
                            const canvas = this._getCanvasStartEnd();
                            const fromStartToEnd = horizontal || this._options.position === LEFT;
                            const canvasStart = fromStartToEnd ? canvas.start : canvas.end;
                            const canvasEnd = fromStartToEnd ? canvas.end : canvas.start;
                            const coord = align === LEFT ? canvasStart : align === RIGHT ? canvasEnd : canvas.start + (canvas.end - canvas.start) / 2;
                            if (horizontal) {
                                x = coord
                            } else {
                                y = coord
                            }
                            return {
                                x: x,
                                y: y
                            }
                        },
                        _drawTitleText: function(group, coords) {
                            const options = this._options;
                            const titleOptions = options.title;
                            const attrs = {
                                opacity: titleOptions.opacity,
                                align: titleOptions.alignment,
                                class: titleOptions.cssClass
                            };
                            if (!titleOptions.text || !group) {
                                return
                            }
                            coords = coords || this._getTitleCoords();
                            if (!this._isHorizontal) {
                                attrs.rotate = options.position === LEFT ? 270 : 90
                            }
                            const text = this._renderer.text(titleOptions.text, coords.x, coords.y).css((0, _utils.patchFontOptions)(titleOptions.font)).attr(attrs).append(group);
                            this._checkTitleOverflow(text);
                            return text
                        },
                        _updateTitleCoords: function() {
                            this._title && this._title.element.attr(this._getTitleCoords())
                        },
                        _drawTitle: function() {
                            const title = this._drawTitleText(this._axisTitleGroup);
                            if (title) {
                                this._title = {
                                    element: title
                                }
                            }
                        },
                        _measureTitle: function() {
                            if (this._title) {
                                if (this._title.bBox && !this._title.originalSize) {
                                    this._title.originalSize = this._title.bBox
                                }
                                this._title.bBox = this._title.element.getBBox()
                            }
                        },
                        _drawDateMarker: function(date, options, range) {
                            const that = this;
                            const markerOptions = that._options.marker;
                            const invert = that._translator.getBusinessRange().invert;
                            const textIndent = markerOptions.width + markerOptions.textLeftIndent;
                            let pathElement;
                            if (null === options.x) {
                                return
                            }
                            if (!options.withoutStick) {
                                pathElement = that._renderer.path([options.x, options.y, options.x, options.y + markerOptions.separatorHeight], "line").attr({
                                    "stroke-width": markerOptions.width,
                                    stroke: markerOptions.color,
                                    "stroke-opacity": markerOptions.opacity,
                                    sharp: "h"
                                }).append(that._axisElementsGroup)
                            }
                            const text = String(that.formatLabel(date, options.labelOptions, range));
                            return {
                                date: date,
                                x: options.x,
                                y: options.y,
                                cropped: options.withoutStick,
                                label: that._renderer.text(text, options.x, options.y).css((0, _utils.patchFontOptions)(markerOptions.label.font)).append(that._axisElementsGroup),
                                line: pathElement,
                                getContentContainer() {
                                    return this.label
                                },
                                getEnd: function() {
                                    return this.x + (invert ? -1 : 1) * (textIndent + this.labelBBox.width)
                                },
                                setTitle: function() {
                                    this.title = text
                                },
                                hideLabel: function() {
                                    this.label.dispose();
                                    this.label = null;
                                    this.title = text
                                },
                                hide: function() {
                                    if (pathElement) {
                                        pathElement.dispose();
                                        pathElement = null
                                    }
                                    this.label.dispose();
                                    this.label = null;
                                    this.hidden = true
                                }
                            }
                        },
                        _drawDateMarkers: function() {
                            const that = this;
                            const options = that._options;
                            const translator = that._translator;
                            const viewport = that._getViewportRange();
                            const minBound = viewport.minVisible;
                            let dateMarkers = [];
                            let dateMarker;

                            function draw(markerDate, format, withoutStick) {
                                return that._drawDateMarker(markerDate, {
                                    x: translator.translate(markerDate),
                                    y: markersAreaTop,
                                    labelOptions: that._getLabelFormatOptions(format),
                                    withoutStick: withoutStick
                                }, viewport)
                            }
                            if (viewport.isEmpty() || !options.marker.visible || "datetime" !== options.argumentType || "discrete" === options.type || that._majorTicks.length <= 1) {
                                return []
                            }
                            const markersAreaTop = that._axisPosition + options.marker.topIndent;
                            const tickInterval = _date.default.getDateUnitInterval(this._tickInterval);
                            const markerInterval = function(tickInterval) {
                                let markerInterval = getNextDateUnit(tickInterval);
                                if ("quarter" === markerInterval) {
                                    markerInterval = getNextDateUnit(markerInterval)
                                }
                                return markerInterval
                            }(tickInterval);
                            const markerDates = function(min, max, markerInterval) {
                                const origMin = min;
                                let dates;
                                min = correctDateWithUnitBeginning(min, markerInterval);
                                max = correctDateWithUnitBeginning(max, markerInterval);
                                dates = _date.default.getSequenceByInterval(min, max, markerInterval);
                                if (dates.length && origMin > dates[0]) {
                                    dates = dates.slice(1)
                                }
                                return dates
                            }(minBound, viewport.maxVisible, markerInterval);
                            if (markerDates.length > 1 || 1 === markerDates.length && minBound < markerDates[0]) {
                                dateMarkers = markerDates.reduce((function(markers, curDate, i, dates) {
                                    const marker = draw(curDate, getMarkerFormat(curDate, dates[i - 1] || minBound < curDate && minBound, tickInterval, markerInterval));
                                    marker && markers.push(marker);
                                    return markers
                                }), []);
                                if (minBound < markerDates[0]) {
                                    dateMarker = draw(minBound, getMarkerFormat(minBound, markerDates[0], tickInterval, markerInterval), true);
                                    dateMarker && dateMarkers.unshift(dateMarker)
                                }
                            }
                            return dateMarkers
                        },
                        _adjustDateMarkers: function(offset) {
                            offset = offset || 0;
                            const that = this;
                            const markerOptions = this._options.marker;
                            const textIndent = markerOptions.width + markerOptions.textLeftIndent;
                            const invert = this._translator.getBusinessRange().invert;
                            const canvas = that._getCanvasStartEnd();
                            const dateMarkers = this._dateMarkers;
                            if (!dateMarkers.length) {
                                return offset
                            }
                            if (dateMarkers[0].cropped) {
                                if (!this._checkMarkersPosition(invert, dateMarkers[1], dateMarkers[0])) {
                                    dateMarkers[0].hideLabel()
                                }
                            }
                            let prevDateMarker;
                            dateMarkers.forEach((function(marker, i, markers) {
                                if (marker.cropped) {
                                    return
                                }
                                if (invert ? marker.getEnd() < canvas.end : marker.getEnd() > canvas.end) {
                                    marker.hideLabel()
                                } else if (that._checkMarkersPosition(invert, marker, prevDateMarker)) {
                                    prevDateMarker = marker
                                } else {
                                    marker.hide()
                                }
                            }));
                            this._dateMarkers.forEach((function(marker) {
                                if (marker.label) {
                                    const labelBBox = marker.labelBBox;
                                    const dy = marker.y + markerOptions.textTopIndent - labelBBox.y;
                                    marker.label.attr({
                                        translateX: invert ? marker.x - textIndent - labelBBox.x - labelBBox.width : marker.x + textIndent - labelBBox.x,
                                        translateY: dy + offset
                                    })
                                }
                                if (marker.line) {
                                    marker.line.attr({
                                        translateY: offset
                                    })
                                }
                            }));
                            that._initializeMarkersTrackers(offset);
                            return offset + markerOptions.topIndent + markerOptions.separatorHeight
                        },
                        _checkMarkersPosition: function(invert, dateMarker, prevDateMarker) {
                            if (void 0 === prevDateMarker) {
                                return true
                            }
                            return invert ? dateMarker.x < prevDateMarker.getEnd() : dateMarker.x > prevDateMarker.getEnd()
                        },
                        _initializeMarkersTrackers: function(offset) {
                            const separatorHeight = this._options.marker.separatorHeight;
                            const renderer = this._renderer;
                            const businessRange = this._translator.getBusinessRange();
                            const canvas = this._getCanvasStartEnd();
                            const group = this._axisElementsGroup;
                            this._markerTrackers = this._dateMarkers.filter((function(marker) {
                                return !marker.hidden
                            })).map((function(marker, i, markers) {
                                const nextMarker = markers[i + 1] || {
                                    x: canvas.end,
                                    date: businessRange.max
                                };
                                const x = marker.x;
                                const y = marker.y + offset;
                                const markerTracker = renderer.path([x, y, x, y + separatorHeight, nextMarker.x, y + separatorHeight, nextMarker.x, y, x, y], "area").attr({
                                    "stroke-width": 1,
                                    stroke: "grey",
                                    fill: "grey",
                                    opacity: 1e-4
                                }).append(group);
                                markerTracker.data("range", {
                                    startValue: marker.date,
                                    endValue: nextMarker.date
                                });
                                if (marker.title) {
                                    markerTracker.setTitle(marker.title)
                                }
                                return markerTracker
                            }))
                        },
                        _getLabelFormatOptions: function(formatString) {
                            const that = this;
                            let markerLabelOptions = that._markerLabelOptions;
                            if (!markerLabelOptions) {
                                that._markerLabelOptions = markerLabelOptions = (0, _extend.extend)(true, {}, that._options.marker.label)
                            }
                            if (!(0, _type.isDefined)(that._options.marker.label.format)) {
                                markerLabelOptions.format = formatString
                            }
                            return markerLabelOptions
                        },
                        _adjustConstantLineLabels: function(constantLines) {
                            const that = this;
                            const axisPosition = that._options.position;
                            const canvas = that.getCanvas();
                            const canvasLeft = canvas.left;
                            const canvasRight = canvas.width - canvas.right;
                            const canvasTop = canvas.top;
                            const canvasBottom = canvas.height - canvas.bottom;
                            const verticalCenter = canvasTop + (canvasBottom - canvasTop) / 2;
                            const horizontalCenter = canvasLeft + (canvasRight - canvasLeft) / 2;
                            let maxLabel = 0;
                            constantLines.forEach((function(item) {
                                const isHorizontal = that._isHorizontal;
                                const linesOptions = item.options;
                                const paddingTopBottom = linesOptions.paddingTopBottom;
                                const paddingLeftRight = linesOptions.paddingLeftRight;
                                const labelOptions = linesOptions.label;
                                const labelVerticalAlignment = labelOptions.verticalAlignment;
                                const labelHorizontalAlignment = labelOptions.horizontalAlignment;
                                const labelIsInside = "inside" === labelOptions.position;
                                const label = item.label;
                                const box = item.labelBBox;
                                let translateX;
                                let translateY;
                                if (null === label || box.isEmpty) {
                                    return
                                }
                                if (isHorizontal) {
                                    if (labelIsInside) {
                                        if (labelHorizontalAlignment === LEFT) {
                                            translateX = item.coord - paddingLeftRight - box.x - box.width
                                        } else {
                                            translateX = item.coord + paddingLeftRight - box.x
                                        }
                                        switch (labelVerticalAlignment) {
                                            case CENTER:
                                                translateY = verticalCenter - box.y - box.height / 2;
                                                break;
                                            case BOTTOM:
                                                translateY = canvasBottom - paddingTopBottom - box.y - box.height;
                                                break;
                                            default:
                                                translateY = canvasTop + paddingTopBottom - box.y
                                        }
                                    } else {
                                        if (axisPosition === labelVerticalAlignment) {
                                            maxLabel = _max(maxLabel, box.height + paddingTopBottom)
                                        }
                                        translateX = item.coord - box.x - box.width / 2;
                                        if (labelVerticalAlignment === BOTTOM) {
                                            translateY = canvasBottom + paddingTopBottom - box.y
                                        } else {
                                            translateY = canvasTop - paddingTopBottom - box.y - box.height
                                        }
                                    }
                                } else if (labelIsInside) {
                                    if (labelVerticalAlignment === BOTTOM) {
                                        translateY = item.coord + paddingTopBottom - box.y
                                    } else {
                                        translateY = item.coord - paddingTopBottom - box.y - box.height
                                    }
                                    switch (labelHorizontalAlignment) {
                                        case CENTER:
                                            translateX = horizontalCenter - box.x - box.width / 2;
                                            break;
                                        case RIGHT:
                                            translateX = canvasRight - paddingLeftRight - box.x - box.width;
                                            break;
                                        default:
                                            translateX = canvasLeft + paddingLeftRight - box.x
                                    }
                                } else {
                                    if (axisPosition === labelHorizontalAlignment) {
                                        maxLabel = _max(maxLabel, box.width + paddingLeftRight)
                                    }
                                    translateY = item.coord - box.y - box.height / 2;
                                    if (labelHorizontalAlignment === RIGHT) {
                                        translateX = canvasRight + paddingLeftRight - box.x
                                    } else {
                                        translateX = canvasLeft - paddingLeftRight - box.x - box.width
                                    }
                                }
                                label.attr({
                                    translateX: translateX,
                                    translateY: translateY
                                })
                            }));
                            return maxLabel
                        },
                        _drawConstantLinesForEstimating: function(constantLines) {
                            const that = this;
                            const renderer = this._renderer;
                            const group = renderer.g();
                            constantLines.forEach((function(options) {
                                that._drawConstantLineLabelText(options.label.text, 0, 0, options.label, group).attr({
                                    align: "center"
                                })
                            }));
                            return group.append(renderer.root)
                        },
                        _estimateLabelHeight: function(bBox, labelOptions) {
                            let height = bBox.height;
                            const drawingType = labelOptions.drawingType;
                            if ("stagger" === this._validateDisplayMode(drawingType) || "stagger" === this._validateOverlappingMode(labelOptions.overlappingBehavior, drawingType)) {
                                height = 2 * height + labelOptions.staggeringSpacing
                            }
                            if ("rotate" === this._validateDisplayMode(drawingType) || "rotate" === this._validateOverlappingMode(labelOptions.overlappingBehavior, drawingType)) {
                                const sinCos = (0, _utils.getCosAndSin)(labelOptions.rotationAngle);
                                height = height * sinCos.cos + bBox.width * sinCos.sin
                            }
                            return height && (height + labelOptions.indentFromAxis || 0) || 0
                        },
                        estimateMargins: function(canvas) {
                            this.updateCanvas(canvas);
                            const {
                                position: position,
                                placeholderSize: placeholderSize
                            } = this._options;
                            const range = this._getViewportRange();
                            const ticksData = this._createTicksAndLabelFormat(range);
                            const ticks = ticksData.ticks;
                            const tickInterval = ticksData.tickInterval;
                            const options = this._options;
                            const constantLineOptions = this._outsideConstantLines.filter((l => l.labelOptions.visible)).map((l => l.options));
                            const rootElement = this._renderer.root;
                            const labelIsVisible = options.label.visible && !range.isEmpty() && ticks.length;
                            const labelValue = labelIsVisible && this.formatLabel(ticks[ticks.length - 1], options.label, void 0, void 0, tickInterval, ticks);
                            const labelElement = labelIsVisible && this._renderer.text(labelValue, 0, 0).css(this._textFontStyles).attr(this._textOptions).append(rootElement);
                            const titleElement = this._drawTitleText(rootElement, {
                                x: 0,
                                y: 0
                            });
                            const constantLinesLabelsElement = this._drawConstantLinesForEstimating(constantLineOptions);
                            const labelBox = !options.label.template && labelElement && labelElement.getBBox() || {
                                x: 0,
                                y: 0,
                                width: 0,
                                height: 0
                            };
                            const titleBox = titleElement && titleElement.getBBox() || {
                                x: 0,
                                y: 0,
                                width: 0,
                                height: 0
                            };
                            const constantLinesBox = constantLinesLabelsElement.getBBox();
                            const titleHeight = titleBox.height ? titleBox.height + options.title.margin : 0;
                            const labelHeight = this._estimateLabelHeight(labelBox, options.label);
                            const constantLinesHeight = constantLinesBox.height ? constantLinesBox.height + (constantLines = constantLineOptions, constantLines.reduce((function(padding, options) {
                                return _max(padding, options.paddingTopBottom)
                            }), 0)) : 0;
                            var constantLines;
                            const height = labelHeight + titleHeight;
                            const margins = {
                                left: _max(getLeftMargin(labelBox), getLeftMargin(constantLinesBox)),
                                right: _max(getRightMargin(labelBox), getRightMargin(constantLinesBox)),
                                top: ("top" === options.position ? height : 0) + getConstantLineLabelMarginForVerticalAlignment(constantLineOptions, "top", constantLinesHeight),
                                bottom: ("top" !== options.position ? height : 0) + getConstantLineLabelMarginForVerticalAlignment(constantLineOptions, "bottom", constantLinesHeight)
                            };
                            if (placeholderSize) {
                                margins[position] = placeholderSize
                            }
                            labelElement && labelElement.remove();
                            titleElement && titleElement.remove();
                            constantLinesLabelsElement && constantLinesLabelsElement.remove();
                            return margins
                        },
                        _checkAlignmentConstantLineLabels: function(labelOptions) {
                            const position = labelOptions.position;
                            let verticalAlignment = (labelOptions.verticalAlignment || "").toLowerCase();
                            let horizontalAlignment = (labelOptions.horizontalAlignment || "").toLowerCase();
                            if (this._isHorizontal) {
                                if ("outside" === position) {
                                    verticalAlignment = verticalAlignment === BOTTOM ? BOTTOM : TOP;
                                    horizontalAlignment = CENTER
                                } else {
                                    verticalAlignment = verticalAlignment === CENTER ? CENTER : verticalAlignment === BOTTOM ? BOTTOM : TOP;
                                    horizontalAlignment = horizontalAlignment === LEFT ? LEFT : RIGHT
                                }
                            } else if ("outside" === position) {
                                verticalAlignment = CENTER;
                                horizontalAlignment = horizontalAlignment === LEFT ? LEFT : RIGHT
                            } else {
                                verticalAlignment = verticalAlignment === BOTTOM ? BOTTOM : TOP;
                                horizontalAlignment = horizontalAlignment === RIGHT ? RIGHT : horizontalAlignment === CENTER ? CENTER : LEFT
                            }
                            labelOptions.verticalAlignment = verticalAlignment;
                            labelOptions.horizontalAlignment = horizontalAlignment
                        },
                        _getConstantLineLabelsCoords: function(value, lineLabelOptions) {
                            const that = this;
                            let x = value;
                            let y = value;
                            if (that._isHorizontal) {
                                y = that._orthogonalPositions["top" === lineLabelOptions.verticalAlignment ? "start" : "end"]
                            } else {
                                x = that._orthogonalPositions["right" === lineLabelOptions.horizontalAlignment ? "end" : "start"]
                            }
                            return {
                                x: x,
                                y: y
                            }
                        },
                        _getAdjustedStripLabelCoords: function(strip) {
                            const stripOptions = strip.options;
                            const paddingTopBottom = stripOptions.paddingTopBottom;
                            const paddingLeftRight = stripOptions.paddingLeftRight;
                            const horizontalAlignment = stripOptions.label.horizontalAlignment;
                            const verticalAlignment = stripOptions.label.verticalAlignment;
                            const box = strip.labelBBox;
                            const labelHeight = box.height;
                            const labelWidth = box.width;
                            const labelCoords = strip.labelCoords;
                            let y = labelCoords.y - box.y;
                            let x = labelCoords.x - box.x;
                            if (verticalAlignment === TOP) {
                                y += paddingTopBottom
                            } else if (verticalAlignment === CENTER) {
                                y -= labelHeight / 2
                            } else if (verticalAlignment === BOTTOM) {
                                y -= paddingTopBottom + labelHeight
                            }
                            if (horizontalAlignment === LEFT) {
                                x += paddingLeftRight
                            } else if (horizontalAlignment === CENTER) {
                                x -= labelWidth / 2
                            } else if (horizontalAlignment === RIGHT) {
                                x -= paddingLeftRight + labelWidth
                            }
                            return {
                                translateX: x,
                                translateY: y
                            }
                        },
                        _adjustTitle: function(offset) {
                            offset = offset || 0;
                            if (!this._title) {
                                return
                            }
                            const options = this._options;
                            const position = options.position;
                            const margin = options.title.margin;
                            const title = this._title;
                            const boxTitle = title.bBox;
                            const x = boxTitle.x;
                            const y = boxTitle.y;
                            const width = boxTitle.width;
                            const height = boxTitle.height;
                            const axisPosition = this._axisPosition;
                            const loCoord = axisPosition - margin - offset;
                            const hiCoord = axisPosition + margin + offset;
                            const params = {};
                            if (this._isHorizontal) {
                                if (position === TOP) {
                                    params.translateY = loCoord - (y + height)
                                } else {
                                    params.translateY = hiCoord - y
                                }
                            } else if (position === LEFT) {
                                params.translateX = loCoord - (x + width)
                            } else {
                                params.translateX = hiCoord - x
                            }
                            title.element.attr(params)
                        },
                        _checkTitleOverflow: function(titleElement) {
                            if (!this._title && !titleElement) {
                                return
                            }
                            const canvasLength = this._getScreenDelta();
                            const title = titleElement ? {
                                bBox: titleElement.getBBox(),
                                element: titleElement
                            } : this._title;
                            const titleOptions = this._options.title;
                            const boxTitle = title.bBox;
                            if ((this._isHorizontal ? boxTitle.width : boxTitle.height) > canvasLength) {
                                title.element.setMaxSize(canvasLength, void 0, {
                                    wordWrap: titleOptions.wordWrap || "none",
                                    textOverflow: titleOptions.textOverflow || "ellipsis"
                                });
                                this._wrapped = titleOptions.wordWrap && "none" !== titleOptions.wordWrap
                            } else {
                                const moreThanOriginalSize = title.originalSize && canvasLength > (this._isHorizontal ? title.originalSize.width : title.originalSize.height);
                                !this._wrapped && moreThanOriginalSize && title.element.restoreText()
                            }
                        },
                        coordsIn: function(x, y) {
                            const canvas = this.getCanvas();
                            const isHorizontal = this._options.isHorizontal;
                            const position = this._options.position;
                            const coord = isHorizontal ? y : x;
                            if (isHorizontal && (x < canvas.left || x > canvas.width - canvas.right) || !isHorizontal && (y < canvas.top || y > canvas.height - canvas.bottom)) {
                                return false
                            }
                            if (isHorizontal && position === _axes_constants.default.top || !isHorizontal && position === _axes_constants.default.left) {
                                return coord < canvas[position]
                            }
                            return coord > canvas[isHorizontal ? "height" : "width"] - canvas[position]
                        },
                        _boundaryTicksVisibility: {
                            min: true,
                            max: true
                        },
                        adjust() {
                            const seriesData = this._seriesData;
                            const viewport = this._series.filter((s => s.isVisible())).reduce(((range, s) => {
                                const seriesRange = s.getViewport();
                                range.min = (0, _type.isDefined)(seriesRange.min) ? range.min < seriesRange.min ? range.min : seriesRange.min : range.min;
                                range.max = (0, _type.isDefined)(seriesRange.max) ? range.max > seriesRange.max ? range.max : seriesRange.max : range.max;
                                if (s.showZero) {
                                    range = new _range.Range(range);
                                    range.correctValueZeroLevel()
                                }
                                return range
                            }), {});
                            if ((0, _type.isDefined)(viewport.min) && (0, _type.isDefined)(viewport.max)) {
                                seriesData.minVisible = viewport.min;
                                seriesData.maxVisible = viewport.max
                            }
                            seriesData.userBreaks = this._getScaleBreaks(this._options, {
                                minVisible: seriesData.minVisible,
                                maxVisible: seriesData.maxVisible
                            }, this._series, this.isArgumentAxis);
                            this._translator.updateBusinessRange(this._getViewportRange())
                        },
                        hasWrap() {
                            return this._wrapped
                        },
                        getAxisPosition() {
                            return this._axisPosition
                        },
                        _getStick: function() {
                            return !this._options.valueMarginsEnabled
                        },
                        _getStripLabelCoords: function(from, to, stripLabelOptions) {
                            const orthogonalPositions = this._orthogonalPositions;
                            const isHorizontal = this._isHorizontal;
                            const horizontalAlignment = stripLabelOptions.horizontalAlignment;
                            const verticalAlignment = stripLabelOptions.verticalAlignment;
                            let x;
                            let y;
                            if (isHorizontal) {
                                if (horizontalAlignment === CENTER) {
                                    x = from + (to - from) / 2
                                } else if (horizontalAlignment === LEFT) {
                                    x = from
                                } else if (horizontalAlignment === RIGHT) {
                                    x = to
                                }
                                y = orthogonalPositions[function(alignment) {
                                    let position = "start";
                                    if ("center" === alignment) {
                                        position = "center"
                                    }
                                    if ("bottom" === alignment) {
                                        position = "end"
                                    }
                                    return position
                                }(verticalAlignment)]
                            } else {
                                x = orthogonalPositions[function(alignment) {
                                    let position = "start";
                                    if ("center" === alignment) {
                                        position = "center"
                                    }
                                    if ("right" === alignment) {
                                        position = "end"
                                    }
                                    return position
                                }(horizontalAlignment)];
                                if (verticalAlignment === TOP) {
                                    y = from
                                } else if (verticalAlignment === CENTER) {
                                    y = to + (from - to) / 2
                                } else if (verticalAlignment === BOTTOM) {
                                    y = to
                                }
                            }
                            return {
                                x: x,
                                y: y
                            }
                        },
                        _getTranslatedValue: function(value, offset) {
                            let interval;
                            if ("semidiscrete" === this._options.type) {
                                interval = this._options.tickInterval
                            }
                            const pos1 = this._translator.translate(value, offset, false, interval);
                            const pos2 = this._axisPosition;
                            const isHorizontal = this._isHorizontal;
                            return {
                                x: isHorizontal ? pos1 : pos2,
                                y: isHorizontal ? pos2 : pos1
                            }
                        },
                        areCoordsOutsideAxis: function(coords) {
                            const coord = this._isHorizontal ? coords.x : coords.y;
                            const visibleArea = this.getVisibleArea();
                            if (coord < visibleArea[0] || coord > visibleArea[1]) {
                                return true
                            }
                            return false
                        },
                        _getSkippedCategory: function(ticks) {
                            let skippedCategory;
                            if (this._options.type === _axes_constants.default.discrete && this._tickOffset && 0 !== ticks.length) {
                                skippedCategory = ticks[ticks.length - 1]
                            }
                            return skippedCategory
                        },
                        _filterBreaks: function(breaks, viewport, breakStyle) {
                            const minVisible = viewport.minVisible;
                            const maxVisible = viewport.maxVisible;
                            const breakSize = breakStyle ? breakStyle.width : 0;
                            return breaks.reduce((function(result, currentBreak) {
                                let from = currentBreak.from;
                                let to = currentBreak.to;
                                const lastResult = result[result.length - 1];
                                let newBreak;
                                if (!(0, _type.isDefined)(from) || !(0, _type.isDefined)(to)) {
                                    return result
                                }
                                if (from > to) {
                                    to = [from, from = to][0]
                                }
                                if (result.length && from < lastResult.to) {
                                    if (to > lastResult.to) {
                                        lastResult.to = to > maxVisible ? maxVisible : to;
                                        if (lastResult.gapSize) {
                                            lastResult.gapSize = void 0;
                                            lastResult.cumulativeWidth += breakSize
                                        }
                                    }
                                } else if (from >= minVisible && from < maxVisible || to <= maxVisible && to > minVisible) {
                                    from = from >= minVisible ? from : minVisible;
                                    to = to <= maxVisible ? to : maxVisible;
                                    if (to - from < maxVisible - minVisible) {
                                        newBreak = {
                                            from: from,
                                            to: to,
                                            cumulativeWidth: ((null === lastResult || void 0 === lastResult ? void 0 : lastResult.cumulativeWidth) ?? 0) + breakSize
                                        };
                                        if (currentBreak.gapSize) {
                                            newBreak.gapSize = _date.default.convertMillisecondsToDateUnits(to - from);
                                            newBreak.cumulativeWidth = (null === lastResult || void 0 === lastResult ? void 0 : lastResult.cumulativeWidth) ?? 0
                                        }
                                        result.push(newBreak)
                                    }
                                }
                                return result
                            }), [])
                        },
                        _getScaleBreaks: function(axisOptions, viewport, series, isArgumentAxis) {
                            const that = this;
                            let breaks = (axisOptions.breaks || []).map((function(b) {
                                return {
                                    from: that.parser(b.startValue),
                                    to: that.parser(b.endValue)
                                }
                            }));
                            if ("discrete" !== axisOptions.type && "datetime" === axisOptions.dataType && axisOptions.workdaysOnly) {
                                breaks = breaks.concat((0, _datetime_breaks.generateDateBreaks)(viewport.minVisible, viewport.maxVisible, axisOptions.workWeek, axisOptions.singleWorkdays, axisOptions.holidays))
                            }
                            if (!isArgumentAxis && "discrete" !== axisOptions.type && "datetime" !== axisOptions.dataType && axisOptions.autoBreaksEnabled && 0 !== axisOptions.maxAutoBreakCount) {
                                breaks = breaks.concat(function(_ref, series, _ref2) {
                                    let {
                                        logarithmBase: logarithmBase,
                                        type: type,
                                        maxAutoBreakCount: maxAutoBreakCount
                                    } = _ref;
                                    let {
                                        minVisible: minVisible,
                                        maxVisible: maxVisible
                                    } = _ref2;
                                    const breaks = [];
                                    const getRange = "logarithmic" === type ? (min, max) => (0, _utils.getLog)(max / min, logarithmBase) : (min, max) => max - min;
                                    let visibleRange = getRange(minVisible, maxVisible);
                                    const points = series.reduce(((result, s) => {
                                        const points = s.getPointsInViewPort();
                                        result[0] = result[0].concat(points[0]);
                                        result[1] = result[1].concat(points[1]);
                                        return result
                                    }), [
                                        [],
                                        []
                                    ]);
                                    const sortedAllPoints = points[0].concat(points[1]).sort(((a, b) => b - a));
                                    const edgePoints = points[1].filter((p => points[0].indexOf(p) < 0));
                                    let minDiff = .3 * visibleRange;
                                    const ranges = function(points, edgePoints, getRange) {
                                        let i;
                                        let length;
                                        let maxRange = null;
                                        const ranges = [];
                                        let curValue;
                                        let prevValue;
                                        let curRange;
                                        for (i = 1, length = points.length; i < length; i++) {
                                            curValue = points[i];
                                            prevValue = points[i - 1];
                                            curRange = getRange(curValue, prevValue);
                                            if (edgePoints.indexOf(curValue) >= 0) {
                                                if (!maxRange || curRange > maxRange.length) {
                                                    maxRange = {
                                                        start: curValue,
                                                        end: prevValue,
                                                        length: curRange
                                                    }
                                                }
                                            } else {
                                                if (maxRange && curRange < maxRange.length) {
                                                    ranges.push(maxRange)
                                                } else {
                                                    ranges.push({
                                                        start: curValue,
                                                        end: prevValue,
                                                        length: curRange
                                                    })
                                                }
                                                maxRange = null
                                            }
                                        }
                                        if (maxRange) {
                                            ranges.push(maxRange)
                                        }
                                        return ranges
                                    }(sortedAllPoints, edgePoints, getRange).filter((_ref3 => {
                                        let {
                                            length: length
                                        } = _ref3;
                                        return !!length
                                    })).sort(((a, b) => b.length - a.length));
                                    const epsilon = _math.min.apply(null, ranges.map((r => r.length))) / 1e3;
                                    const _maxAutoBreakCount = (0, _type.isDefined)(maxAutoBreakCount) ? _math.min(maxAutoBreakCount, ranges.length) : ranges.length;
                                    for (let i = 0; i < _maxAutoBreakCount; i++) {
                                        if (ranges[i].length >= minDiff) {
                                            if (visibleRange <= ranges[i].length) {
                                                break
                                            }
                                            visibleRange -= ranges[i].length;
                                            if (visibleRange > epsilon || visibleRange < -epsilon) {
                                                breaks.push({
                                                    from: ranges[i].start,
                                                    to: ranges[i].end
                                                });
                                                minDiff = .3 * visibleRange
                                            }
                                        } else {
                                            break
                                        }
                                    }
                                    sortingBreaks(breaks);
                                    return breaks
                                }(axisOptions, series, viewport))
                            }
                            return sortingBreaks(breaks)
                        },
                        _drawBreak: function(translatedEnd, positionFrom, positionTo, width, options, group) {
                            const breakStart = translatedEnd - (!this._translator.isInverted() ? width + 1 : 0);
                            const attr = {
                                "stroke-width": 1,
                                stroke: options.borderColor,
                                sharp: !options.isWaved ? options.isHorizontal ? "h" : "v" : void 0
                            };
                            const spaceAttr = {
                                stroke: options.color,
                                "stroke-width": width
                            };
                            const getPoints = this._isHorizontal ? rotateLine : function(p) {
                                return p
                            };
                            const drawer = getLineDrawer(this._renderer, group, getPoints, positionFrom, breakStart, positionTo, options.isWaved);
                            drawer(width / 2, spaceAttr);
                            drawer(0, attr);
                            drawer(width, attr)
                        },
                        _createBreakClipRect: function(from, to) {
                            const that = this;
                            const canvas = that._canvas;
                            const clipWidth = to - from;
                            let clipRect;
                            if (that._isHorizontal) {
                                clipRect = that._renderer.clipRect(canvas.left, from, canvas.width, clipWidth)
                            } else {
                                clipRect = that._renderer.clipRect(from, canvas.top, clipWidth, canvas.height)
                            }
                            that._breaksElements = that._breaksElements || [];
                            that._breaksElements.push(clipRect);
                            return clipRect.id
                        },
                        _createBreaksGroup: function(clipFrom, clipTo) {
                            const group = this._renderer.g().attr({
                                class: this._axisCssPrefix + "breaks",
                                "clip-path": this._createBreakClipRect(clipFrom, clipTo)
                            }).append(this._scaleBreaksGroup);
                            this._breaksElements = this._breaksElements || [];
                            this._breaksElements.push(group);
                            return group
                        },
                        _disposeBreaksGroup: function() {
                            (this._breaksElements || []).forEach((function(clipRect) {
                                clipRect.dispose()
                            }));
                            this._breaksElements = null
                        },
                        drawScaleBreaks: function(customCanvas) {
                            const that = this;
                            const options = that._options;
                            const breakStyle = options.breakStyle;
                            const position = options.position;
                            let positionFrom;
                            let positionTo;
                            const breaks = that._translator.getBusinessRange().breaks || [];
                            let additionGroup;
                            let additionBreakFrom;
                            let additionBreakTo;
                            that._disposeBreaksGroup();
                            if (!(breaks && breaks.length)) {
                                return
                            }
                            const breakOptions = {
                                color: that._options.containerColor,
                                borderColor: breakStyle.color,
                                isHorizontal: that._isHorizontal,
                                isWaved: "straight" !== breakStyle.line.toLowerCase()
                            };
                            if (customCanvas) {
                                positionFrom = customCanvas.start;
                                positionTo = customCanvas.end
                            } else {
                                positionFrom = that._orthogonalPositions.start - (options.visible && !that._axisShift && (position === LEFT || position === TOP) ? 3 : 0);
                                positionTo = that._orthogonalPositions.end + (options.visible && (position === RIGHT || position === BOTTOM) ? 3 : 0)
                            }
                            const mainGroup = that._createBreaksGroup(positionFrom, positionTo);
                            if (that._axisShift && options.visible) {
                                additionBreakFrom = that._axisPosition - that._axisShift - 3;
                                additionBreakTo = additionBreakFrom + 6;
                                additionGroup = that._createBreaksGroup(additionBreakFrom, additionBreakTo)
                            }
                            breaks.forEach((function(br) {
                                if (!br.gapSize) {
                                    const breakCoord = that._getTranslatedCoord(br.to);
                                    that._drawBreak(breakCoord, positionFrom, positionTo, breakStyle.width, breakOptions, mainGroup);
                                    if (that._axisShift && options.visible) {
                                        that._drawBreak(breakCoord, additionBreakFrom, additionBreakTo, breakStyle.width, breakOptions, additionGroup)
                                    }
                                }
                            }))
                        },
                        _getSpiderCategoryOption: _common.noop,
                        shift: function(margins) {
                            const options = this._options;
                            const isHorizontal = options.isHorizontal;
                            const axesSpacing = this.getMultipleAxesSpacing();
                            const constantLinesGroups = this._axisConstantLineGroups;

                            function shiftGroup(side, group) {
                                const attr = {
                                    translateX: 0,
                                    translateY: 0
                                };
                                const shift = margins[side] ? margins[side] + axesSpacing : 0;
                                attr[isHorizontal ? "translateY" : "translateX"] = (side === LEFT || side === TOP ? -1 : 1) * shift;
                                (group[side] || group).attr(attr);
                                return shift
                            }
                            this._axisShift = shiftGroup(options.position, this._axisGroup);
                            shiftGroup(options.position, this._axisElementsGroup);
                            (isHorizontal ? [TOP, BOTTOM] : [LEFT, RIGHT]).forEach((side => {
                                shiftGroup(side, constantLinesGroups.above);
                                shiftGroup(side, constantLinesGroups.under)
                            }))
                        },
                        getCustomPosition(position) {
                            const that = this;
                            const orthogonalAxis = that.getOrthogonalAxis();
                            const resolvedPosition = position ?? that.getResolvedPositionOption();
                            const offset = that.getOptions().offset;
                            const orthogonalTranslator = orthogonalAxis.getTranslator();
                            const orthogonalAxisType = orthogonalAxis.getOptions().type;
                            let validPosition = orthogonalAxis.validateUnit(resolvedPosition);
                            let currentPosition;
                            if ("discrete" === orthogonalAxisType && (!orthogonalTranslator._categories || orthogonalTranslator._categories.indexOf(validPosition) < 0)) {
                                validPosition = void 0
                            }
                            if (that.positionIsBoundary(resolvedPosition)) {
                                currentPosition = that.getPredefinedPosition(resolvedPosition)
                            } else if (!(0, _type.isDefined)(validPosition)) {
                                currentPosition = that.getPredefinedPosition(that.getOptions().position)
                            } else {
                                currentPosition = orthogonalTranslator.to(validPosition, -1)
                            }
                            if (isFinite(currentPosition) && isFinite(offset)) {
                                currentPosition += offset
                            }
                            return currentPosition
                        },
                        getCustomBoundaryPosition(position) {
                            const that = this;
                            const {
                                customPosition: customPosition,
                                offset: offset
                            } = that.getOptions();
                            const resolvedPosition = position ?? that.getResolvedPositionOption();
                            const orthogonalAxis = that.getOrthogonalAxis();
                            const orthogonalTranslator = orthogonalAxis.getTranslator();
                            const visibleArea = orthogonalTranslator.getCanvasVisibleArea();
                            if (!(0, _type.isDefined)(orthogonalAxis._orthogonalPositions) || 0 === orthogonalTranslator.canvasLength) {
                                return
                            }
                            const currentPosition = that.getCustomPosition(resolvedPosition);
                            if (!(0, _type.isDefined)(currentPosition)) {
                                return that.getResolvedBoundaryPosition()
                            } else if ((0, _type.isDefined)(customPosition)) {
                                if (currentPosition <= visibleArea.min) {
                                    return that._isHorizontal ? TOP : LEFT
                                } else if (currentPosition >= visibleArea.max) {
                                    return that._isHorizontal ? BOTTOM : RIGHT
                                }
                            } else if ((0, _type.isDefined)(offset)) {
                                if (currentPosition <= that._orthogonalPositions.start) {
                                    return that._isHorizontal ? TOP : LEFT
                                } else if (currentPosition >= that._orthogonalPositions.end) {
                                    return that._isHorizontal ? BOTTOM : RIGHT
                                }
                            }
                            return currentPosition
                        },
                        getResolvedPositionOption() {
                            const options = this.getOptions();
                            return options.customPosition ?? options.position
                        },
                        customPositionIsAvailable() {
                            const options = this.getOptions();
                            return (0, _type.isDefined)(this.getOrthogonalAxis()) && ((0, _type.isDefined)(options.customPosition) || isFinite(options.offset))
                        },
                        hasNonBoundaryPosition() {
                            return this.customPositionIsAvailable() && !this.customPositionIsBoundary()
                        },
                        getResolvedBoundaryPosition() {
                            return this.customPositionIsBoundary() ? this._customBoundaryPosition : this.getOptions().position
                        },
                        customPositionEqualsToPredefined() {
                            return this.customPositionIsBoundary() && this._customBoundaryPosition === this.getOptions().position
                        },
                        customPositionIsBoundary() {
                            return this.positionIsBoundary(this._customBoundaryPosition)
                        },
                        positionIsBoundary: position => [TOP, LEFT, BOTTOM, RIGHT].indexOf(position) >= 0,
                        getPredefinedPosition(position) {
                            var _this$_orthogonalPosi;
                            return null === (_this$_orthogonalPosi = this._orthogonalPositions) || void 0 === _this$_orthogonalPosi ? void 0 : _this$_orthogonalPosi[position === TOP || position === LEFT ? "start" : "end"]
                        },
                        resolveOverlappingForCustomPositioning(oppositeAxes) {
                            const that = this;
                            if (!that.hasNonBoundaryPosition() && !that.customPositionIsBoundary() && !oppositeAxes.some((a => a.hasNonBoundaryPosition()))) {
                                return
                            }
                            const overlappingObj = {
                                axes: [],
                                ticks: []
                            };
                            oppositeAxes.filter((orthogonalAxis => orthogonalAxis.pane === that.pane)).forEach((orthogonalAxis => {
                                for (let i = 0; i < that._majorTicks.length; i++) {
                                    const tick = that._majorTicks[i];
                                    const label = tick.label;
                                    if (label) {
                                        if (overlappingObj.axes.indexOf(orthogonalAxis) < 0 && that._detectElementsOverlapping(label, orthogonalAxis._axisElement)) {
                                            overlappingObj.axes.push(orthogonalAxis);
                                            that._shiftThroughOrthogonalAxisOverlappedTick(label, orthogonalAxis)
                                        }
                                        for (let j = 0; j < orthogonalAxis._majorTicks.length; j++) {
                                            const oppositeTick = orthogonalAxis._majorTicks[j];
                                            const oppositeLabel = oppositeTick.label;
                                            if (oppositeLabel && that._detectElementsOverlapping(label, oppositeLabel)) {
                                                overlappingObj.ticks.push(tick);
                                                that._shiftThroughAxisOverlappedTick(tick);
                                                i = that._majorTicks.length;
                                                break
                                            }
                                        }
                                    }
                                    if (tick.mark && overlappingObj.ticks.indexOf(tick) < 0) {
                                        if (that._isHorizontal && tick.mark.attr("translateY")) {
                                            tick.mark.attr({
                                                translateY: 0
                                            })
                                        } else if (!that._isHorizontal && tick.mark.attr("translateX")) {
                                            tick.mark.attr({
                                                translateX: 0
                                            })
                                        }
                                    }
                                }
                            }))
                        },
                        _shiftThroughOrthogonalAxisOverlappedTick(label, orthogonalAxis) {
                            const labelBBox = label.getBBox();
                            const orthogonalAxisPosition = orthogonalAxis.getAxisPosition();
                            const orthogonalAxisLabelOptions = orthogonalAxis.getOptions().label;
                            const orthogonalAxisLabelPosition = orthogonalAxisLabelOptions.position;
                            const orthogonalAxisLabelIndent = orthogonalAxisLabelOptions.indentFromAxis / 2;
                            const translateCoordName = this._isHorizontal ? "translateX" : "translateY";
                            const defaultOrthogonalAxisLabelPosition = this._isHorizontal ? LEFT : TOP;
                            const translate = label.attr(translateCoordName);
                            const labelCoord = (this._isHorizontal ? labelBBox.x : labelBBox.y) + translate;
                            const labelSize = this._isHorizontal ? labelBBox.width : labelBBox.height;
                            const outsidePart = orthogonalAxisPosition - labelCoord;
                            const insidePart = labelCoord + labelSize - orthogonalAxisPosition;
                            const attr = {};
                            attr[translateCoordName] = translate;
                            if (outsidePart > 0 && insidePart > 0) {
                                if (insidePart - outsidePart > 1) {
                                    attr[translateCoordName] += outsidePart + orthogonalAxisLabelIndent
                                } else if (outsidePart - insidePart > 1) {
                                    attr[translateCoordName] -= insidePart + orthogonalAxisLabelIndent
                                } else {
                                    attr[translateCoordName] += orthogonalAxisLabelPosition === defaultOrthogonalAxisLabelPosition ? outsidePart + orthogonalAxisLabelIndent : -(insidePart + orthogonalAxisLabelIndent)
                                }
                                label.attr(attr)
                            }
                        },
                        _shiftThroughAxisOverlappedTick(tick) {
                            var _tick$mark;
                            const that = this;
                            const label = tick.label;
                            if (!label) {
                                return
                            }
                            const labelBBox = label.getBBox();
                            const tickMarkBBox = null === (_tick$mark = tick.mark) || void 0 === _tick$mark ? void 0 : _tick$mark.getBBox();
                            const axisPosition = that.getAxisPosition();
                            const labelOptions = that.getOptions().label;
                            const labelIndent = labelOptions.indentFromAxis;
                            const labelPosition = labelOptions.position;
                            const defaultLabelPosition = that._isHorizontal ? TOP : LEFT;
                            const translateCoordName = that._isHorizontal ? "translateY" : "translateX";
                            const translate = label.attr(translateCoordName);
                            const labelCoord = (that._isHorizontal ? labelBBox.y : labelBBox.x) + translate;
                            const labelSize = that._isHorizontal ? labelBBox.height : labelBBox.width;
                            const attr = {};
                            attr[translateCoordName] = translate + (labelPosition === defaultLabelPosition ? axisPosition - labelCoord + labelIndent : -(labelCoord - axisPosition + labelSize + labelIndent));
                            label.attr(attr);
                            if (tick.mark) {
                                const markerSize = that._isHorizontal ? tickMarkBBox.height : tickMarkBBox.width;
                                const dir = labelPosition === defaultLabelPosition ? 1 : -1;
                                attr[translateCoordName] = dir * (markerSize - 1);
                                tick.mark.attr(attr)
                            }
                        },
                        _detectElementsOverlapping(element1, element2) {
                            if (!element1 || !element2) {
                                return false
                            }
                            const bBox1 = element1.getBBox();
                            const x1 = bBox1.x + element1.attr("translateX");
                            const y1 = bBox1.y + element1.attr("translateY");
                            const bBox2 = element2.getBBox();
                            const x2 = bBox2.x + element2.attr("translateX");
                            const y2 = bBox2.y + element2.attr("translateY");
                            return (x2 >= x1 && x2 <= x1 + bBox1.width || x1 >= x2 && x1 <= x2 + bBox2.width) && (y2 >= y1 && y2 <= y1 + bBox1.height || y1 >= y2 && y1 <= y2 + bBox2.height)
                        }
                    }
                };

                function getLineDrawer(renderer, root, rotatePoints, positionFrom, breakStart, positionTo, isWaved) {
                    const elementType = isWaved ? "bezier" : "line";
                    const group = renderer.g().append(root);
                    return function(offset, attr) {
                        renderer.path(rotatePoints(function(positionFrom, breakStart, positionTo, offset, isWaved) {
                            if (!isWaved) {
                                return [positionFrom, breakStart + offset, positionTo, breakStart + offset]
                            }
                            breakStart += offset;
                            let currentPosition;
                            const topPoint = breakStart + 0;
                            const centerPoint = breakStart + 2;
                            const bottomPoint = breakStart + 4;
                            const points = [
                                [positionFrom, centerPoint]
                            ];
                            for (currentPosition = positionFrom; currentPosition < positionTo + 24; currentPosition += 24) {
                                points.push([currentPosition + 6, topPoint, currentPosition + 6, topPoint, currentPosition + 12, centerPoint, currentPosition + 18, bottomPoint, currentPosition + 18, bottomPoint, currentPosition + 24, centerPoint])
                            }
                            return [].concat.apply([], points)
                        }(positionFrom, breakStart, positionTo, offset, isWaved)), elementType).attr(attr).append(group)
                    }
                }

                function rotateLine(lineCoords) {
                    const points = [];
                    let i;
                    for (i = 0; i < lineCoords.length; i += 2) {
                        points.push(lineCoords[i + 1]);
                        points.push(lineCoords[i])
                    }
                    return points
                }
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        84601:
            /*!**************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/bar_gauge.js ***!
              \**************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _bar_gauge = __webpack_require__( /*! ./gauges/bar_gauge */ 15060);
                exports.default = _bar_gauge.dxBarGauge;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        75954:
            /*!***********************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/bullet.js ***!
              \***********************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _bullet = (e = __webpack_require__( /*! ./sparklines/bullet */ 92633), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                exports.default = _bullet.default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        26408:
            /*!**********************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/chart.js ***!
              \**********************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _m_chart = (e = __webpack_require__( /*! ../__internal/viz/m_chart */ 3830), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                exports.default = _m_chart.default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        63512:
            /*!*******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/chart_components/crosshair.js ***!
              \*******************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.Crosshair = Crosshair;
                exports.getMargins = function() {
                    return {
                        x: LABEL_BACKGROUND_PADDING_X,
                        y: LABEL_BACKGROUND_PADDING_Y
                    }
                };
                var _utils = __webpack_require__( /*! ../core/utils */ 28779);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576);
                const math = Math;
                const mathAbs = math.abs;
                const mathMin = math.min;
                const mathMax = math.max;
                const mathFloor = math.floor;
                const LABEL_BACKGROUND_PADDING_X = 8;
                const LABEL_BACKGROUND_PADDING_Y = 4;

                function getRectangleBBox(bBox) {
                    return {
                        x: bBox.x - LABEL_BACKGROUND_PADDING_X,
                        y: bBox.y - LABEL_BACKGROUND_PADDING_Y,
                        width: bBox.width + 2 * LABEL_BACKGROUND_PADDING_X,
                        height: bBox.height + 2 * LABEL_BACKGROUND_PADDING_Y
                    }
                }

                function getLabelCheckerPosition(x, y, isHorizontal, canvas) {
                    const params = isHorizontal ? ["x", "width", "y", "height", y, 0] : ["y", "height", "x", "width", x, 1];
                    return function(bBox, position, coord) {
                        const labelCoord = {
                            x: coord.x,
                            y: coord.y
                        };
                        const rectangleBBox = getRectangleBBox(bBox);
                        const delta = isHorizontal ? coord.y - bBox.y - bBox.height / 2 : coord.y - bBox.y;
                        labelCoord.y = isHorizontal || !isHorizontal && "bottom" === position ? coord.y + delta : coord.y;
                        if (rectangleBBox[params[0]] < 0) {
                            labelCoord[params[0]] -= rectangleBBox[params[0]]
                        } else if (rectangleBBox[params[0]] + rectangleBBox[params[1]] + delta * params[5] > canvas[params[1]]) {
                            labelCoord[params[0]] -= rectangleBBox[params[0]] + rectangleBBox[params[1]] + delta * params[5] - canvas[params[1]]
                        }
                        if (params[4] - rectangleBBox[params[3]] / 2 < 0) {
                            labelCoord[params[2]] -= params[4] - rectangleBBox[params[3]] / 2
                        } else if (params[4] + rectangleBBox[params[3]] / 2 > canvas[params[3]]) {
                            labelCoord[params[2]] -= params[4] + rectangleBBox[params[3]] / 2 - canvas[params[3]]
                        }
                        return labelCoord
                    }
                }

                function Crosshair(renderer, options, params, group) {
                    this._renderer = renderer;
                    this._crosshairGroup = group;
                    this._options = {};
                    this.update(options, params)
                }
                Crosshair.prototype = {
                    constructor: Crosshair,
                    update: function(options, params) {
                        const canvas = params.canvas;
                        this._canvas = {
                            top: canvas.top,
                            bottom: canvas.height - canvas.bottom,
                            left: canvas.left,
                            right: canvas.width - canvas.right,
                            width: canvas.width,
                            height: canvas.height
                        };
                        this._axes = params.axes;
                        this._panes = params.panes;
                        this._prepareOptions(options, "horizontal");
                        this._prepareOptions(options, "vertical")
                    },
                    dispose: function() {
                        this._renderer = this._crosshairGroup = this._options = this._axes = this._canvas = this._horizontalGroup = this._verticalGroup = this._horizontal = this._vertical = this._circle = this._panes = null
                    },
                    _prepareOptions: function(options, direction) {
                        const lineOptions = options[direction + "Line"];
                        this._options[direction] = {
                            visible: lineOptions.visible,
                            line: {
                                stroke: lineOptions.color || options.color,
                                "stroke-width": lineOptions.width || options.width,
                                dashStyle: lineOptions.dashStyle || options.dashStyle,
                                opacity: lineOptions.opacity || options.opacity,
                                "stroke-linecap": "butt"
                            },
                            label: (0, _extend.extend)(true, {}, options.label, lineOptions.label)
                        }
                    },
                    _createLines: function(options, sharpParam, group) {
                        const lines = [];
                        const canvas = this._canvas;
                        const points = [canvas.left, canvas.top, canvas.left, canvas.top];
                        for (let i = 0; i < 2; i++) {
                            lines.push(this._renderer.path(points, "line").attr(options).sharp(sharpParam).append(group))
                        }
                        return lines
                    },
                    render: function() {
                        const that = this;
                        const renderer = that._renderer;
                        const options = that._options;
                        const verticalOptions = options.vertical;
                        const horizontalOptions = options.horizontal;
                        const extraOptions = horizontalOptions.visible ? horizontalOptions.line : verticalOptions.line;
                        const circleOptions = {
                            stroke: extraOptions.stroke,
                            "stroke-width": extraOptions["stroke-width"],
                            dashStyle: extraOptions.dashStyle,
                            opacity: extraOptions.opacity
                        };
                        const canvas = that._canvas;
                        that._horizontal = {};
                        that._vertical = {};
                        that._circle = renderer.circle(canvas.left, canvas.top, 0).attr(circleOptions).append(that._crosshairGroup);
                        that._horizontalGroup = renderer.g().append(that._crosshairGroup);
                        that._verticalGroup = renderer.g().append(that._crosshairGroup);
                        if (verticalOptions.visible) {
                            that._vertical.lines = that._createLines(verticalOptions.line, "h", that._verticalGroup);
                            that._vertical.labels = that._createLabels(that._axes[0], verticalOptions, false, that._verticalGroup)
                        }
                        if (horizontalOptions.visible) {
                            that._horizontal.lines = that._createLines(horizontalOptions.line, "v", that._horizontalGroup);
                            that._horizontal.labels = that._createLabels(that._axes[1], horizontalOptions, true, that._horizontalGroup)
                        }
                        that.hide()
                    },
                    _createLabels: function(axes, options, isHorizontal, group) {
                        const canvas = this._canvas;
                        const renderer = this._renderer;
                        let x;
                        let y;
                        let text;
                        const labels = [];
                        let background;
                        let currentLabelPos;
                        const labelOptions = options.label;
                        if (labelOptions.visible) {
                            axes.forEach((function(axis) {
                                const position = axis.getOptions().position;
                                if (axis.getTranslator().getBusinessRange().isEmpty()) {
                                    return
                                }
                                currentLabelPos = axis.getLabelsPosition();
                                if (isHorizontal) {
                                    y = canvas.top;
                                    x = currentLabelPos
                                } else {
                                    x = canvas.left;
                                    y = currentLabelPos
                                }
                                const align = "top" === position || "bottom" === position ? "center" : "right" === position ? "left" : "right";
                                background = renderer.rect(0, 0, 0, 0).attr({
                                    fill: labelOptions.backgroundColor || options.line.stroke
                                }).append(group);
                                text = renderer.text("0", 0, 0).css((0, _utils.patchFontOptions)(options.label.font)).attr({
                                    align: align,
                                    class: labelOptions.cssClass
                                }).append(group);
                                labels.push({
                                    text: text,
                                    background: background,
                                    axis: axis,
                                    options: labelOptions,
                                    pos: {
                                        coord: currentLabelPos,
                                        side: position
                                    },
                                    startXY: {
                                        x: x,
                                        y: y
                                    }
                                })
                            }))
                        }
                        return labels
                    },
                    _updateText: function(value, axisName, labels, point, func) {
                        const that = this;
                        labels.forEach((function(label) {
                            const axis = label.axis;
                            const coord = label.startXY;
                            const textElement = label.text;
                            const backgroundElement = label.background;
                            let text = "";
                            if (!axis.name || axis.name === axisName) {
                                text = axis.getFormattedValue(value, label.options, point)
                            }
                            if (text) {
                                textElement.attr({
                                    text: text,
                                    x: coord.x,
                                    y: coord.y
                                });
                                textElement.attr(func(textElement.getBBox(), label.pos.side, coord));
                                that._updateLinesCanvas(label);
                                backgroundElement.attr(getRectangleBBox(textElement.getBBox()))
                            } else {
                                textElement.attr({
                                    text: ""
                                });
                                backgroundElement.attr({
                                    x: 0,
                                    y: 0,
                                    width: 0,
                                    height: 0
                                })
                            }
                        }))
                    },
                    hide: function() {
                        this._crosshairGroup.attr({
                            visibility: "hidden"
                        })
                    },
                    _updateLinesCanvas: function(label) {
                        const position = label.pos.side;
                        const labelCoord = label.pos.coord;
                        const coords = this._linesCanvas;
                        const canvas = this._canvas;
                        coords[position] = coords[position] !== canvas[position] && mathAbs(coords[position] - canvas[position]) < mathAbs(labelCoord - canvas[position]) ? coords[position] : labelCoord
                    },
                    _updateLines: function(lines, x, y, r, isHorizontal) {
                        const coords = this._linesCanvas;
                        const canvas = this._canvas;
                        const points = isHorizontal ? [
                            [mathMin(x - r, coords.left), canvas.top, x - r, canvas.top],
                            [x + r, canvas.top, mathMax(coords.right, x + r), canvas.top]
                        ] : [
                            [canvas.left, mathMin(coords.top, y - r), canvas.left, y - r],
                            [canvas.left, y + r, canvas.left, mathMax(coords.bottom, y + r)]
                        ];
                        for (let i = 0; i < 2; i++) {
                            lines[i].attr({
                                points: points[i]
                            }).sharp(isHorizontal ? "v" : "h", isHorizontal ? y === canvas.bottom ? -1 : 1 : x === canvas.right ? -1 : 1)
                        }
                    },
                    _resetLinesCanvas: function() {
                        const canvas = this._canvas;
                        this._linesCanvas = {
                            left: canvas.left,
                            right: canvas.right,
                            top: canvas.top,
                            bottom: canvas.bottom
                        }
                    },
                    _getClipRectForPane: function(x, y) {
                        const panes = this._panes;
                        let i;
                        let coords;
                        for (i = 0; i < panes.length; i++) {
                            coords = panes[i].coords;
                            if (coords.left <= x && coords.right >= x && coords.top <= y && coords.bottom >= y) {
                                return panes[i].clipRect
                            }
                        }
                        return {
                            id: null
                        }
                    },
                    show: function(data) {
                        const that = this;
                        const point = data.point;
                        const pointData = point.getCrosshairData(data.x, data.y);
                        const r = point.getPointRadius();
                        const horizontal = that._horizontal;
                        const vertical = that._vertical;
                        const rad = !r ? 0 : r + 3;
                        const canvas = that._canvas;
                        const x = mathFloor(pointData.x);
                        const y = mathFloor(pointData.y);
                        if (x >= canvas.left && x <= canvas.right && y >= canvas.top && y <= canvas.bottom) {
                            that._crosshairGroup.attr({
                                visibility: "visible"
                            });
                            that._resetLinesCanvas();
                            that._circle.attr({
                                cx: x,
                                cy: y,
                                r: rad,
                                "clip-path": that._getClipRectForPane(x, y).id
                            });
                            if (horizontal.lines) {
                                that._updateText(pointData.yValue, pointData.axis, horizontal.labels, point, getLabelCheckerPosition(x, y, true, canvas));
                                that._updateLines(horizontal.lines, x, y, rad, true);
                                that._horizontalGroup.attr({
                                    translateY: y - canvas.top
                                })
                            }
                            if (vertical.lines) {
                                that._updateText(pointData.xValue, pointData.axis, vertical.labels, point, getLabelCheckerPosition(x, y, false, canvas));
                                that._updateLines(vertical.lines, x, y, rad, false);
                                that._verticalGroup.attr({
                                    translateX: x - canvas.left
                                })
                            }
                        } else {
                            that.hide()
                        }
                    }
                }
            },
        14580:
            /*!************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/chart_components/layout_manager.js ***!
              \************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.LayoutManager = LayoutManager;
                var _type = __webpack_require__( /*! ../../core/utils/type */ 11528);
                var _consts = (e = __webpack_require__( /*! ../components/consts */ 7377), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                var _layout_element = __webpack_require__( /*! ../core/layout_element */ 77461);
                const {
                    floor: floor,
                    sqrt: sqrt
                } = Math;
                const _min = Math.min;
                const _max = Math.max;
                const RADIAL_LABEL_INDENT = _consts.default.radialLabelIndent;

                function getNearestCoord(firstCoord, secondCoord, pointCenterCoord) {
                    let nearestCoord;
                    if (pointCenterCoord < firstCoord) {
                        nearestCoord = firstCoord
                    } else if (secondCoord < pointCenterCoord) {
                        nearestCoord = secondCoord
                    } else {
                        nearestCoord = pointCenterCoord
                    }
                    return nearestCoord
                }

                function getLabelLayout(point) {
                    if (point._label.isVisible() && "inside" !== point._label.getLayoutOptions().position) {
                        return point._label.getBoundingRect()
                    }
                }

                function getPieRadius(series, paneCenterX, paneCenterY, accessibleRadius, minR) {
                    series.some((function(singleSeries) {
                        return singleSeries.getVisiblePoints().reduce((function(radiusIsFound, point) {
                            const labelBBox = getLabelLayout(point);
                            if (labelBBox) {
                                const xCoords = getNearestCoord(labelBBox.x, labelBBox.x + labelBBox.width, paneCenterX);
                                const yCoords = getNearestCoord(labelBBox.y, labelBBox.y + labelBBox.height, paneCenterY);
                                accessibleRadius = _min(_max(function(x, y, paneCenterX, paneCenterY) {
                                    return sqrt((x - paneCenterX) * (x - paneCenterX) + (y - paneCenterY) * (y - paneCenterY))
                                }(xCoords, yCoords, paneCenterX, paneCenterY) - RADIAL_LABEL_INDENT, minR), accessibleRadius);
                                radiusIsFound = true
                            }
                            return radiusIsFound
                        }), false)
                    }));
                    return accessibleRadius
                }

                function getSizeLabels(series) {
                    return series.reduce((function(res, singleSeries) {
                        let maxWidth = singleSeries.getVisiblePoints().reduce((function(width, point) {
                            const labelBBox = getLabelLayout(point);
                            if (labelBBox && labelBBox.width > width) {
                                width = labelBBox.width
                            }
                            return width
                        }), 0);
                        let rWidth = maxWidth;
                        if (maxWidth) {
                            res.outerLabelsCount++;
                            if (res.outerLabelsCount > 1) {
                                maxWidth += _consts.default.pieLabelSpacing
                            }
                            rWidth += _consts.default.pieLabelSpacing
                        }
                        res.sizes.push(maxWidth);
                        res.rSizes.push(rWidth);
                        res.common += maxWidth;
                        return res
                    }), {
                        sizes: [],
                        rSizes: [],
                        common: 0,
                        outerLabelsCount: 0
                    })
                }

                function correctLabelRadius(labelSizes, radius, series, canvas, averageWidthLabels, centerX) {
                    let curRadius;
                    let i;
                    let runningWidth = 0;
                    const sizes = labelSizes.sizes;
                    const rSizes = labelSizes.rSizes;
                    for (i = 0; i < series.length; i++) {
                        if (0 === sizes[i]) {
                            curRadius && (curRadius += rSizes[i - 1]);
                            continue
                        }
                        curRadius = floor(curRadius ? curRadius + rSizes[i - 1] : radius);
                        series[i].correctLabelRadius(curRadius);
                        runningWidth += averageWidthLabels || sizes[i];
                        rSizes[i] = averageWidthLabels || rSizes[i];
                        series[i].setVisibleArea({
                            left: floor(centerX - radius - runningWidth),
                            right: floor(canvas.width - (centerX + radius + runningWidth)),
                            top: canvas.top,
                            bottom: canvas.bottom,
                            width: canvas.width,
                            height: canvas.height
                        })
                    }
                }

                function getInnerRadius(_ref) {
                    let {
                        type: type,
                        innerRadius: innerRadius
                    } = _ref;
                    return "pie" === type ? 0 : (0, _type.isNumeric)(innerRadius) ? Number(innerRadius) : .5
                }

                function LayoutManager() {}

                function getAverageLabelWidth(centerX, radius, canvas, sizeLabels) {
                    return (centerX - radius - RADIAL_LABEL_INDENT - canvas.left) / sizeLabels.outerLabelsCount
                }

                function correctAvailableRadius(availableRadius, canvas, series, minR, paneCenterX, paneCenterY) {
                    const sizeLabels = getSizeLabels(series);
                    let averageWidthLabels;
                    const fullRadiusWithLabels = function(centerX, canvas, sizeLabels) {
                        return centerX - canvas.left - (sizeLabels.outerLabelsCount > 0 ? sizeLabels.common + RADIAL_LABEL_INDENT : 0)
                    }(paneCenterX, canvas, sizeLabels);
                    if (fullRadiusWithLabels < minR) {
                        availableRadius = minR;
                        averageWidthLabels = getAverageLabelWidth(paneCenterX, availableRadius, canvas, sizeLabels)
                    } else {
                        availableRadius = _min(getPieRadius(series, paneCenterX, paneCenterY, availableRadius, minR), fullRadiusWithLabels)
                    }
                    correctLabelRadius(sizeLabels, availableRadius + RADIAL_LABEL_INDENT, series, canvas, averageWidthLabels, paneCenterX);
                    return availableRadius
                }

                function toLayoutElementCoords(canvas) {
                    return new _layout_element.WrapperLayoutElement(null, {
                        x: canvas.left,
                        y: canvas.top,
                        width: canvas.width - canvas.left - canvas.right,
                        height: canvas.height - canvas.top - canvas.bottom
                    })
                }
                LayoutManager.prototype = {
                    constructor: LayoutManager,
                    setOptions: function(options) {
                        this._options = options
                    },
                    applyPieChartSeriesLayout: function(canvas, series, hideLayoutLabels) {
                        const paneSpaceHeight = canvas.height - canvas.top - canvas.bottom;
                        const paneSpaceWidth = canvas.width - canvas.left - canvas.right;
                        const paneCenterX = paneSpaceWidth / 2 + canvas.left;
                        const paneCenterY = paneSpaceHeight / 2 + canvas.top;
                        const piePercentage = this._options.piePercentage;
                        let availableRadius;
                        let minR;
                        if ((0, _type.isNumeric)(piePercentage)) {
                            availableRadius = minR = piePercentage * _min(canvas.height, canvas.width) / 2
                        } else {
                            availableRadius = _min(paneSpaceWidth, paneSpaceHeight) / 2;
                            minR = this._options.minPiePercentage * availableRadius
                        }
                        if (!hideLayoutLabels) {
                            availableRadius = correctAvailableRadius(availableRadius, canvas, series, minR, paneCenterX, paneCenterY)
                        }
                        return {
                            centerX: floor(paneCenterX),
                            centerY: floor(paneCenterY),
                            radiusInner: floor(availableRadius * getInnerRadius(series[0])),
                            radiusOuter: floor(availableRadius)
                        }
                    },
                    applyEqualPieChartLayout: function(series, layout) {
                        const radius = layout.radius;
                        return {
                            centerX: floor(layout.x),
                            centerY: floor(layout.y),
                            radiusInner: floor(radius * getInnerRadius(series[0])),
                            radiusOuter: floor(radius)
                        }
                    },
                    correctPieLabelRadius: function(series, layout, canvas) {
                        const sizeLabels = getSizeLabels(series);
                        let averageWidthLabels;
                        const radius = layout.radiusOuter + RADIAL_LABEL_INDENT;
                        const availableLabelWidth = layout.centerX - canvas.left - radius;
                        if (sizeLabels.common + RADIAL_LABEL_INDENT > availableLabelWidth) {
                            averageWidthLabels = getAverageLabelWidth(layout.centerX, layout.radiusOuter, canvas, sizeLabels)
                        }
                        correctLabelRadius(sizeLabels, radius, series, canvas, averageWidthLabels, layout.centerX)
                    },
                    needMoreSpaceForPanesCanvas(panes, rotated, fixedSizeCallback) {
                        const options = this._options;
                        const width = options.width;
                        const height = options.height;
                        const piePercentage = options.piePercentage;
                        const percentageIsValid = (0, _type.isNumeric)(piePercentage);
                        let needHorizontalSpace = 0;
                        let needVerticalSpace = 0;
                        panes.forEach((pane => {
                            const paneCanvas = pane.canvas;
                            const minSize = percentageIsValid ? _min(paneCanvas.width, paneCanvas.height) * piePercentage : void 0;
                            const paneSized = fixedSizeCallback ? fixedSizeCallback(pane) : {
                                width: false,
                                height: false
                            };
                            const needPaneHorizontalSpace = !paneSized.width ? (percentageIsValid ? minSize : width) - (paneCanvas.width - paneCanvas.left - paneCanvas.right) : 0;
                            const needPaneVerticalSpace = !paneSized.height ? (percentageIsValid ? minSize : height) - (paneCanvas.height - paneCanvas.top - paneCanvas.bottom) : 0;
                            if (rotated) {
                                needHorizontalSpace += needPaneHorizontalSpace > 0 ? needPaneHorizontalSpace : 0;
                                needVerticalSpace = _max(needPaneVerticalSpace > 0 ? needPaneVerticalSpace : 0, needVerticalSpace)
                            } else {
                                needHorizontalSpace = _max(needPaneHorizontalSpace > 0 ? needPaneHorizontalSpace : 0, needHorizontalSpace);
                                needVerticalSpace += needPaneVerticalSpace > 0 ? needPaneVerticalSpace : 0
                            }
                        }));
                        return needHorizontalSpace > 0 || needVerticalSpace > 0 ? {
                            width: needHorizontalSpace,
                            height: needVerticalSpace
                        } : false
                    },
                    layoutInsideLegend: function(legend, canvas) {
                        const layoutOptions = legend.getLayoutOptions();
                        if (!layoutOptions) {
                            return
                        }
                        const position = layoutOptions.position;
                        const cutSide = layoutOptions.cutSide;
                        const my = {
                            horizontal: position.horizontal,
                            vertical: position.vertical
                        };
                        canvas[layoutOptions.cutLayoutSide] += "horizontal" === layoutOptions.cutSide ? layoutOptions.width : layoutOptions.height;
                        my[cutSide] = {
                            left: "right",
                            right: "left",
                            top: "bottom",
                            bottom: "top",
                            center: "center"
                        } [my[cutSide]];
                        legend.position({
                            of: toLayoutElementCoords(canvas),
                            my: my,
                            at: position
                        })
                    }
                }
            },
        57568:
            /*!*********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/chart_components/multi_axes_synchronizer.js ***!
              \*********************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                __webpack_require__( /*! ../../core/utils/console */ 31951);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 11528);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 21274);
                var _utils = __webpack_require__( /*! ../core/utils */ 28779);
                var _math2 = __webpack_require__( /*! ../../core/utils/math */ 50254);
                const _math = Math;
                const _floor = _math.floor;
                const _max = _math.max;
                const _abs = _math.abs;
                const linearConverter = br => ({
                    transform: function(v, b) {
                        return (0, _math2.adjust)((0, _utils.getLogExt)(v, b, br.allowNegatives, br.linearThreshold))
                    },
                    getTicks: function(interval, tickValues, base) {
                        const ticks = [];
                        let tick = this.transform(tickValues[0], base);
                        while (ticks.length < tickValues.length) {
                            ticks.push(tick);
                            tick = (0, _math2.adjust)(tick + interval)
                        }
                        return ticks
                    }
                });
                const logConverter = br => ({
                    transform: function(v, b) {
                        return (0, _math2.adjust)((0, _utils.raiseToExt)(v, b, br.allowNegatives, br.linearThreshold))
                    },
                    getTicks: function(interval, tickValues, base) {
                        const ticks = [];
                        let tick;
                        for (let i = 0; i < tickValues.length; i += 1) {
                            tick = this.transform(tickValues[i], base);
                            ticks.push(tick)
                        }
                        return ticks
                    }
                });

                function convertAxisInfo(axisInfo, converter) {
                    if (!axisInfo.isLogarithmic) {
                        return
                    }
                    const base = axisInfo.logarithmicBase;
                    const tickValues = axisInfo.tickValues;
                    axisInfo.minValue = converter.transform(axisInfo.minValue, base);
                    axisInfo.oldMinValue = converter.transform(axisInfo.oldMinValue, base);
                    axisInfo.maxValue = converter.transform(axisInfo.maxValue, base);
                    axisInfo.oldMaxValue = converter.transform(axisInfo.oldMaxValue, base);
                    axisInfo.tickInterval = _math.round(axisInfo.tickInterval);
                    if (axisInfo.tickInterval < 1) {
                        axisInfo.tickInterval = 1
                    }
                    const ticks = converter.getTicks(axisInfo.tickInterval, tickValues, base);
                    ticks.tickInterval = axisInfo.tickInterval;
                    axisInfo.tickValues = ticks
                }

                function getAxisRange(axisInfo) {
                    return axisInfo.maxValue - axisInfo.minValue || 1
                }

                function getMainAxisInfo(axesInfo) {
                    for (let i = 0; i < axesInfo.length; i++) {
                        if (!axesInfo[i].stubData) {
                            return axesInfo[i]
                        }
                    }
                    return null
                }
                const multiAxesSynchronizer = {
                    synchronize: function(valueAxes) {
                        (0, _iterator.each)(function(valueAxes) {
                            const result = {};
                            valueAxes.forEach((axis => {
                                const pane = axis.pane;
                                if (!result[pane]) {
                                    result[pane] = []
                                }
                                result[pane].push(axis)
                            }));
                            return result
                        }(valueAxes), (function(_, axes) {
                            let axesInfo;
                            let paddings;
                            if (axes.length > 1) {
                                axesInfo = function(axes) {
                                    return axes.reduce((function(result, axis) {
                                        const ticksValues = axis.getTicksValues();
                                        const majorTicks = ticksValues.majorTicksValues;
                                        const options = axis.getOptions();
                                        const businessRange = axis.getTranslator().getBusinessRange();
                                        const visibleArea = axis.getVisibleArea();
                                        let axisInfo;
                                        let tickInterval = axis._tickInterval;
                                        const synchronizedValue = options.synchronizedValue;
                                        const action = axis.getViewport().action;
                                        if (majorTicks && majorTicks.length > 0 && (0, _type.isNumeric)(majorTicks[0]) && "discrete" !== options.type && !businessRange.isEmpty() && !(businessRange.breaks && businessRange.breaks.length) && "zoom" !== action && "pan" !== action) {
                                            axis.applyMargins();
                                            const startValue = axis.getTranslator().from(visibleArea[0]);
                                            const endValue = axis.getTranslator().from(visibleArea[1]);
                                            let minValue = startValue < endValue ? startValue : endValue;
                                            let maxValue = startValue < endValue ? endValue : startValue;
                                            if (minValue === maxValue && (0, _type.isDefined)(synchronizedValue)) {
                                                tickInterval = _abs(majorTicks[0] - synchronizedValue) || 1;
                                                minValue = majorTicks[0] - tickInterval;
                                                maxValue = majorTicks[0] + tickInterval
                                            }
                                            axisInfo = {
                                                axis: axis,
                                                isLogarithmic: "logarithmic" === options.type,
                                                logarithmicBase: businessRange.base,
                                                tickValues: majorTicks,
                                                minorValues: ticksValues.minorTicksValues,
                                                minorTickInterval: axis._minorTickInterval,
                                                minValue: minValue,
                                                oldMinValue: minValue,
                                                maxValue: maxValue,
                                                oldMaxValue: maxValue,
                                                inverted: businessRange.invert,
                                                tickInterval: tickInterval,
                                                synchronizedValue: synchronizedValue
                                            };
                                            convertAxisInfo(axisInfo, linearConverter(axis.getTranslator().getBusinessRange()));
                                            result.push(axisInfo)
                                        }
                                        return result
                                    }), [])
                                }(axes);
                                if (axesInfo.length < 2 || !getMainAxisInfo(axesInfo)) {
                                    return
                                }! function(axesInfo) {
                                    const maxTicksCount = axesInfo.reduce(((max, axisInfo) => _max(max, axisInfo.tickValues.length)), 0);
                                    axesInfo.forEach((axisInfo => {
                                        let ticksMultiplier;
                                        let ticksCount;
                                        let additionalStartTicksCount = 0;
                                        const synchronizedValue = axisInfo.synchronizedValue;
                                        const tickValues = axisInfo.tickValues;
                                        const tickInterval = axisInfo.tickInterval;
                                        if ((0, _type.isDefined)(synchronizedValue)) {
                                            axisInfo.baseTickValue = axisInfo.invertedBaseTickValue = synchronizedValue;
                                            axisInfo.tickValues = [axisInfo.baseTickValue]
                                        } else {
                                            if (tickValues.length > 1 && tickInterval) {
                                                ticksMultiplier = _floor((maxTicksCount + 1) / tickValues.length);
                                                ticksCount = ticksMultiplier > 1 ? _floor((maxTicksCount + 1) / ticksMultiplier) : maxTicksCount;
                                                additionalStartTicksCount = _floor((ticksCount - tickValues.length) / 2);
                                                while (additionalStartTicksCount > 0 && 0 !== tickValues[0]) {
                                                    tickValues.unshift((0, _math2.adjust)(tickValues[0] - tickInterval));
                                                    additionalStartTicksCount--
                                                }
                                                while (tickValues.length < ticksCount) {
                                                    tickValues.push((0, _math2.adjust)(tickValues[tickValues.length - 1] + tickInterval))
                                                }
                                                axisInfo.tickInterval = tickInterval / ticksMultiplier
                                            }
                                            axisInfo.baseTickValue = tickValues[0];
                                            axisInfo.invertedBaseTickValue = tickValues[tickValues.length - 1]
                                        }
                                    }))
                                }(axesInfo);
                                ! function(axesInfo) {
                                    const mainAxisInfo = getMainAxisInfo(axesInfo);
                                    const mainAxisInfoTickInterval = mainAxisInfo.tickInterval;
                                    axesInfo.forEach((axisInfo => {
                                        let scale;
                                        let move;
                                        let mainAxisBaseValueOffset;
                                        let valueFromAxisInfo;
                                        if (axisInfo !== mainAxisInfo) {
                                            if (mainAxisInfoTickInterval && axisInfo.tickInterval) {
                                                if (axisInfo.stubData && (0, _type.isDefined)(axisInfo.synchronizedValue)) {
                                                    axisInfo.oldMinValue = axisInfo.minValue = axisInfo.baseTickValue - (mainAxisInfo.baseTickValue - mainAxisInfo.minValue) / mainAxisInfoTickInterval * axisInfo.tickInterval;
                                                    axisInfo.oldMaxValue = axisInfo.maxValue = axisInfo.baseTickValue - (mainAxisInfo.baseTickValue - mainAxisInfo.maxValue) / mainAxisInfoTickInterval * axisInfo.tickInterval
                                                }
                                                scale = mainAxisInfoTickInterval / getAxisRange(mainAxisInfo) / axisInfo.tickInterval * getAxisRange(axisInfo);
                                                axisInfo.maxValue = axisInfo.minValue + getAxisRange(axisInfo) / scale
                                            }
                                            if (mainAxisInfo.inverted && !axisInfo.inverted || !mainAxisInfo.inverted && axisInfo.inverted) {
                                                mainAxisBaseValueOffset = mainAxisInfo.maxValue - mainAxisInfo.invertedBaseTickValue
                                            } else {
                                                mainAxisBaseValueOffset = mainAxisInfo.baseTickValue - mainAxisInfo.minValue
                                            }
                                            valueFromAxisInfo = getAxisRange(axisInfo);
                                            move = (mainAxisBaseValueOffset / getAxisRange(mainAxisInfo) - (axisInfo.baseTickValue - axisInfo.minValue) / valueFromAxisInfo) * valueFromAxisInfo;
                                            axisInfo.minValue -= move;
                                            axisInfo.maxValue -= move
                                        }
                                    }))
                                }(axesInfo);
                                paddings = function(axesInfo) {
                                    let minPadding;
                                    let maxPadding;
                                    let startPadding = 0;
                                    let endPadding = 0;
                                    axesInfo.forEach((axisInfo => {
                                        const inverted = axisInfo.inverted;
                                        minPadding = axisInfo.minValue > axisInfo.oldMinValue ? (axisInfo.minValue - axisInfo.oldMinValue) / getAxisRange(axisInfo) : 0;
                                        maxPadding = axisInfo.maxValue < axisInfo.oldMaxValue ? (axisInfo.oldMaxValue - axisInfo.maxValue) / getAxisRange(axisInfo) : 0;
                                        startPadding = _max(startPadding, inverted ? maxPadding : minPadding);
                                        endPadding = _max(endPadding, inverted ? minPadding : maxPadding)
                                    }));
                                    return {
                                        start: startPadding,
                                        end: endPadding
                                    }
                                }(axesInfo);
                                paddings = function(axesInfo, paddings) {
                                    if (! function(axesInfo) {
                                            let allPositive = true;
                                            let allNegative = true;
                                            axesInfo.forEach((axis => {
                                                if (axis.oldMinValue > 0 || axis.oldMaxValue > 0) {
                                                    allNegative = false
                                                }
                                                if (axis.oldMinValue < 0 || axis.oldMaxValue < 0) {
                                                    allPositive = false
                                                }
                                            }));
                                            return allPositive || allNegative
                                        }(axesInfo)) {
                                        return paddings
                                    }
                                    return axesInfo.reduce(((prev, info) => {
                                        const inverted = info.inverted;
                                        const {
                                            start: start,
                                            end: end
                                        } = info.axis.getCorrectedValuesToZero(info.minValue, info.maxValue);
                                        if ((0, _type.isDefined)(start) || (0, _type.isDefined)(end)) {
                                            return inverted ? {
                                                start: prev.start,
                                                end: Math.min(prev.end, end)
                                            } : {
                                                start: Math.min(prev.start, start),
                                                end: prev.end
                                            }
                                        }
                                        return prev
                                    }), paddings)
                                }(axesInfo, paddings);
                                ! function(axesInfo, paddings) {
                                    axesInfo.forEach((info => {
                                        const range = getAxisRange(info);
                                        const inverted = info.inverted;
                                        info.minValue = (0, _math2.adjust)(info.minValue - paddings[inverted ? "end" : "start"] * range);
                                        info.maxValue = (0, _math2.adjust)(info.maxValue + paddings[inverted ? "start" : "end"] * range)
                                    }))
                                }(axesInfo, paddings);
                                ! function(axesInfo) {
                                    const invalidAxisInfo = [];
                                    let correctValue;
                                    axesInfo.forEach((info => {
                                        if (info.oldMaxValue - info.oldMinValue === 0) {
                                            invalidAxisInfo.push(info)
                                        } else if (!(0, _type.isDefined)(correctValue) && !(0, _type.isDefined)(info.synchronizedValue)) {
                                            correctValue = _abs((info.maxValue - info.minValue) / (info.tickValues[_floor(info.tickValues.length / 2)] - info.minValue || info.maxValue))
                                        }
                                    }));
                                    if (!(0, _type.isDefined)(correctValue)) {
                                        return
                                    }
                                    invalidAxisInfo.forEach((info => {
                                        const firstTick = info.tickValues[0];
                                        const correctedTick = firstTick * correctValue;
                                        if (firstTick > 0) {
                                            info.maxValue = correctedTick;
                                            info.minValue = 0
                                        } else if (firstTick < 0) {
                                            info.minValue = correctedTick;
                                            info.maxValue = 0
                                        }
                                    }))
                                }(axesInfo);
                                ! function(axesInfo) {
                                    let hasSynchronizedValue = false;
                                    axesInfo.forEach((info => {
                                        hasSynchronizedValue = hasSynchronizedValue || (0, _type.isDefined)(info.synchronizedValue)
                                    }));
                                    axesInfo.forEach((info => {
                                        const tickInterval = info.tickInterval;
                                        const tickValues = info.tickValues;
                                        const maxValue = info.maxValue;
                                        const minValue = info.minValue;
                                        let tick;
                                        if (hasSynchronizedValue && tickInterval) {
                                            while ((tick = (0, _math2.adjust)(tickValues[0] - tickInterval)) >= minValue) {
                                                tickValues.unshift(tick)
                                            }
                                            tick = tickValues[tickValues.length - 1];
                                            while ((tick = (0, _math2.adjust)(tick + tickInterval)) <= maxValue) {
                                                tickValues.push(tick)
                                            }
                                        }
                                        while (tickValues[0] + tickInterval / 10 < minValue) {
                                            tickValues.shift()
                                        }
                                        while (tickValues[tickValues.length - 1] - tickInterval / 10 > maxValue) {
                                            tickValues.pop()
                                        }
                                    }))
                                }(axesInfo);
                                ! function(axesInfo) {
                                    axesInfo.forEach((function(axisInfo) {
                                        if (!axisInfo.minorTickInterval) {
                                            return
                                        }
                                        const ticks = [];
                                        const interval = axisInfo.minorTickInterval;
                                        const tickCount = axisInfo.tickInterval / interval - 1;
                                        for (let i = 1; i < axisInfo.tickValues.length; i++) {
                                            let tick = axisInfo.tickValues[i - 1];
                                            for (let j = 0; j < tickCount; j++) {
                                                tick += interval;
                                                ticks.push(tick)
                                            }
                                        }
                                        axisInfo.minorValues = ticks
                                    }))
                                }(axesInfo);
                                axesInfo.forEach((info => {
                                    convertAxisInfo(info, logConverter(info.axis.getTranslator().getBusinessRange()))
                                }));
                                ! function(axesInfo) {
                                    axesInfo.forEach((info => {
                                        const axis = info.axis;
                                        const range = axis.getTranslator().getBusinessRange();
                                        if (range.min === range.minVisible) {
                                            range.min = info.minValue
                                        }
                                        if (range.max === range.maxVisible) {
                                            range.max = info.maxValue
                                        }
                                        range.minVisible = info.minValue;
                                        range.maxVisible = info.maxValue;
                                        if (range.min > range.minVisible) {
                                            range.min = range.minVisible
                                        }
                                        if (range.max < range.maxVisible) {
                                            range.max = range.maxVisible
                                        }
                                        axis.getTranslator().updateBusinessRange(range);
                                        axis.setTicks({
                                            majorTicks: info.tickValues,
                                            minorTicks: info.minorValues
                                        })
                                    }))
                                }(axesInfo)
                            }
                        }))
                    }
                };
                exports.default = multiAxesSynchronizer;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        68817:
            /*!********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/chart_components/scroll_bar.js ***!
              \********************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.ScrollBar = void 0;
                var _events_engine = (e = __webpack_require__( /*! ../../common/core/events/core/events_engine */ 92774), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                var _index = __webpack_require__( /*! ../../common/core/events/utils/index */ 98834);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576);
                var _translator2d = __webpack_require__( /*! ../translators/translator2d */ 64174);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 11528);
                var _common = __webpack_require__( /*! ../../core/utils/common */ 17781);
                var _drag = __webpack_require__( /*! ../../common/core/events/drag */ 59144);
                const _min = Math.min;
                const _max = Math.max;
                const ScrollBar = function(renderer, group) {
                    this._translator = new _translator2d.Translator2D({}, {}, {});
                    this._scroll = renderer.rect().append(group);
                    this._addEvents()
                };
                exports.ScrollBar = ScrollBar;

                function _getXCoord(canvas, pos, offset, width) {
                    let x = 0;
                    if ("right" === pos) {
                        x = canvas.width - canvas.right + offset
                    } else if ("left" === pos) {
                        x = canvas.left - offset - width
                    }
                    return x
                }

                function _getYCoord(canvas, pos, offset, width) {
                    let y = 0;
                    if ("top" === pos) {
                        y = canvas.top - offset
                    } else if ("bottom" === pos) {
                        y = canvas.height - canvas.bottom + width + offset
                    }
                    return y
                }
                ScrollBar.prototype = {
                    _addEvents: function() {
                        const scrollElement = this._scroll.element;
                        _events_engine.default.on(scrollElement, _drag.start, (e => {
                            (0, _index.fireEvent)({
                                type: "dxc-scroll-start",
                                originalEvent: e,
                                target: scrollElement
                            })
                        }));
                        _events_engine.default.on(scrollElement, _drag.move, (e => {
                            const dX = -e.offset.x * this._scale;
                            const dY = -e.offset.y * this._scale;
                            const lx = this._offset - (this._layoutOptions.vertical ? dY : dX) / this._scale;
                            this._applyPosition(lx, lx + this._translator.canvasLength / this._scale);
                            (0, _index.fireEvent)({
                                type: "dxc-scroll-move",
                                originalEvent: e,
                                target: scrollElement,
                                offset: {
                                    x: dX,
                                    y: dY
                                }
                            })
                        }));
                        _events_engine.default.on(scrollElement, _drag.end, (e => {
                            (0, _index.fireEvent)({
                                type: "dxc-scroll-end",
                                originalEvent: e,
                                target: scrollElement,
                                offset: {
                                    x: -e.offset.x * this._scale,
                                    y: -e.offset.y * this._scale
                                }
                            })
                        }))
                    },
                    update: function(options) {
                        let position = options.position;
                        const isVertical = options.rotated;
                        const defaultPosition = isVertical ? "right" : "top";
                        const secondaryPosition = isVertical ? "left" : "bottom";
                        if (position !== defaultPosition && position !== secondaryPosition) {
                            position = defaultPosition
                        }
                        this._scroll.attr({
                            rotate: !options.rotated ? -90 : 0,
                            rotateX: 0,
                            rotateY: 0,
                            fill: options.color,
                            width: options.width,
                            opacity: options.opacity
                        });
                        this._layoutOptions = {
                            width: options.width,
                            offset: options.offset,
                            vertical: isVertical,
                            position: position
                        };
                        return this
                    },
                    init: function(range, stick) {
                        const isDiscrete = "discrete" === range.axisType;
                        this._translateWithOffset = isDiscrete && !stick ? 1 : 0;
                        this._translator.update((0, _extend.extend)({}, range, {
                            minVisible: null,
                            maxVisible: null,
                            visibleCategories: null
                        }, isDiscrete && {
                            min: null,
                            max: null
                        } || {}), this._canvas, {
                            isHorizontal: !this._layoutOptions.vertical,
                            stick: stick
                        });
                        return this
                    },
                    getOptions: function() {
                        return this._layoutOptions
                    },
                    setPane: function(panes) {
                        const position = this._layoutOptions.position;
                        let pane;
                        if ("left" === position || "top" === position) {
                            pane = panes[0]
                        } else {
                            pane = panes[panes.length - 1]
                        }
                        this.pane = pane.name;
                        return this
                    },
                    updateSize: function(canvas) {
                        this._canvas = (0, _extend.extend)({}, canvas);
                        const options = this._layoutOptions;
                        const pos = options.position;
                        const offset = options.offset;
                        const width = options.width;
                        this._scroll.attr({
                            translateX: _getXCoord(canvas, pos, offset, width),
                            translateY: _getYCoord(canvas, pos, offset, width)
                        })
                    },
                    getMultipleAxesSpacing: function() {
                        return 0
                    },
                    estimateMargins: function() {
                        return this.getMargins()
                    },
                    getMargins: function() {
                        const options = this._layoutOptions;
                        const margins = {
                            left: 0,
                            top: 0,
                            right: 0,
                            bottom: 0
                        };
                        margins[options.position] = options.width + options.offset;
                        return margins
                    },
                    shift: function(margins) {
                        const options = this._layoutOptions;
                        const side = options.position;
                        const isVertical = options.vertical;
                        const attr = {
                            translateX: this._scroll.attr("translateX") ?? 0,
                            translateY: this._scroll.attr("translateY") ?? 0
                        };
                        const shift = margins[side];
                        attr[isVertical ? "translateX" : "translateY"] += ("left" === side || "top" === side ? -1 : 1) * shift;
                        this._scroll.attr(attr)
                    },
                    hideTitle: _common.noop,
                    hideOuterElements: _common.noop,
                    setPosition: function(min, max) {
                        const translator = this._translator;
                        const minPoint = (0, _type.isDefined)(min) ? translator.translate(min, -this._translateWithOffset) : translator.translate("canvas_position_start");
                        const maxPoint = (0, _type.isDefined)(max) ? translator.translate(max, this._translateWithOffset) : translator.translate("canvas_position_end");
                        this._offset = _min(minPoint, maxPoint);
                        this._scale = translator.getScale(min, max);
                        this._applyPosition(_min(minPoint, maxPoint), _max(minPoint, maxPoint))
                    },
                    customPositionIsAvailable: () => false,
                    dispose: function() {
                        this._scroll.dispose();
                        this._scroll = this._translator = null
                    },
                    _applyPosition: function(x1, x2) {
                        const visibleArea = this._translator.getCanvasVisibleArea();
                        x1 = _max(x1, visibleArea.min);
                        x1 = _min(x1, visibleArea.max);
                        x2 = _min(x2, visibleArea.max);
                        x2 = _max(x2, visibleArea.min);
                        const height = Math.abs(x2 - x1);
                        this._scroll.attr({
                            y: x1,
                            height: height < 2 ? 2 : height
                        })
                    }
                }
            },
        3023:
            /*!**********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/chart_components/shutter_zoom.js ***!
              \**********************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _drag = __webpack_require__( /*! ../../common/core/events/drag */ 59144);
                const DRAG_START_EVENT_NAME = _drag.start + ".shutter-zoom";
                const DRAG_UPDATE_EVENT_NAME = _drag.move + ".shutter-zoom";
                const DRAG_END_EVENT_NAME = _drag.end + ".shutter-zoom";

                function getPointerCoord(rootOffset, canvas, rotated, e) {
                    let coord = Math.floor(rotated ? e.pageY - rootOffset.top : e.pageX - rootOffset.left);
                    const min = rotated ? canvas.y1 : canvas.x1;
                    const max = rotated ? canvas.y2 : canvas.x2;
                    if (coord < min) {
                        coord = min
                    } else if (coord > max) {
                        coord = max
                    }
                    return coord
                }

                function shutterZoom(options) {
                    const chart = options.chart;
                    const renderer = options.renderer;
                    const rotated = options.rotated;
                    const rect = renderer.rect(0, 0, 0, 0).attr(options.shutterOptions);
                    const shutter = {
                        rect: rect,
                        root: renderer.root,
                        rotated: rotated,
                        triggerStart: function() {
                            chart._eventTrigger("zoomStart")
                        },
                        triggerEnd: function() {
                            const tr = chart._argumentAxes[0].getTranslator();
                            const rangeStart = Math.min(this.startCoord, this.curCoord);
                            const rangeEnd = Math.max(this.startCoord, this.curCoord);
                            chart._eventTrigger("zoomEnd", {
                                rangeStart: tr.from(rangeStart),
                                rangeEnd: tr.from(rangeEnd)
                            })
                        },
                        dispose: function() {
                            renderer.root.off(".shutter-zoom");
                            rect.dispose()
                        },
                        getRootOffset: function() {
                            return renderer.getRootOffset()
                        },
                        getCanvas: function() {
                            const canvas = chart._canvas;
                            const panes = chart.panes;
                            const firstPane = panes[0].canvas;
                            const lastPane = panes[panes.length - 1].canvas;
                            return {
                                x1: firstPane.left,
                                y1: firstPane.top,
                                x2: canvas.width - lastPane.right,
                                y2: canvas.height - lastPane.bottom,
                                width: canvas.width - firstPane.left - lastPane.right,
                                height: canvas.height - firstPane.top - lastPane.bottom
                            }
                        }
                    };
                    renderer.root.off(".shutter-zoom").on(DRAG_START_EVENT_NAME, {
                        direction: rotated ? "vertical" : "horizontal",
                        immediate: true
                    }, (ctx = shutter, function(e) {
                        const offset = ctx.getRootOffset();
                        const canvas = ctx.getCanvas();
                        if (! function(rootOffset, canvas, e) {
                                const x = e.pageX - rootOffset.left;
                                const y = e.pageY - rootOffset.top;
                                return x >= canvas.x1 && x <= canvas.x2 && y >= canvas.y1 && y <= canvas.y2
                            }(offset, canvas, e)) {
                            e.cancel = true;
                            return
                        }
                        ctx.rootOffset = offset;
                        ctx.canvas = canvas;
                        ctx.startCoord = getPointerCoord(offset, canvas, ctx.rotated, e);
                        ctx.triggerStart();
                        ctx.rect.attr({
                            x: canvas.x1,
                            y: canvas.y1,
                            width: canvas.width,
                            height: canvas.height
                        }).append(ctx.root)
                    })).on(DRAG_UPDATE_EVENT_NAME, function(ctx) {
                        return function(e) {
                            const curCoord = getPointerCoord(ctx.rootOffset, ctx.canvas, ctx.rotated, e);
                            const attr = {};
                            ctx.curCoord = curCoord;
                            attr[ctx.rotated ? "y" : "x"] = Math.min(ctx.startCoord, curCoord);
                            attr[ctx.rotated ? "height" : "width"] = Math.abs(ctx.startCoord - curCoord);
                            ctx.rect.attr(attr)
                        }
                    }(shutter)).on(DRAG_END_EVENT_NAME, function(ctx) {
                        return function(e) {
                            ctx.triggerEnd();
                            ctx.rect.remove()
                        }
                    }(shutter));
                    var ctx;
                    return shutter
                }
                exports.default = {
                    name: "shutter_zoom",
                    init: function() {
                        const options = this.option("shutterZoom") || {};
                        if (!options.enabled) {
                            return
                        }
                        this._shutterZoom = shutterZoom({
                            chart: this,
                            renderer: this._renderer,
                            rotated: this.option("rotated"),
                            shutterOptions: options
                        })
                    },
                    dispose: function() {
                        this._shutterZoom && this._shutterZoom.dispose()
                    }
                };
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        45912:
            /*!*****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/chart_components/tracker.js ***!
              \*****************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.PieTracker = exports.ChartTracker = void 0;
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../core/dom_adapter */ 64960));
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/core/events_engine */ 92774));
                var _click = __webpack_require__( /*! ../../common/core/events/click */ 64044);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 21274);
                var _consts = _interopRequireDefault(__webpack_require__( /*! ../components/consts */ 7377));
                var _utils = __webpack_require__( /*! ../core/utils */ 28779);
                var _pointer = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/pointer */ 89797));
                var _index = __webpack_require__( /*! ../../common/core/events/utils/index */ 98834);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 11528);
                var _common = __webpack_require__( /*! ../../core/utils/common */ 17781);

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const _floor = Math.floor;
                const eventsConsts = _consts.default.events;
                const statesConsts = _consts.default.states;
                const HOVER_STATE = statesConsts.hoverMark;
                const NORMAL_STATE = statesConsts.normalMark;
                const EVENT_NS = "dxChartTracker";
                const DOT_EVENT_NS = "." + EVENT_NS;
                const POINTER_ACTION = (0, _index.addNamespace)([_pointer.default.down, _pointer.default.move], EVENT_NS);
                const LEGEND_HOVER_MODES = ["includepoints", "excludepoints", "none"];

                function getData(event, dataKey, tryCheckParent) {
                    const target = event.target;
                    if ("tspan" === target.tagName) {
                        return target.parentNode[dataKey]
                    }
                    const data = target[dataKey];
                    if (tryCheckParent && !(0, _type.isDefined)(data)) {
                        const getParentData = function(node) {
                            if (node.parentNode) {
                                if ((0, _type.isDefined)(node.parentNode[dataKey])) {
                                    return node.parentNode[dataKey]
                                } else {
                                    return getParentData(node.parentNode)
                                }
                            }
                            return
                        };
                        return getParentData(target)
                    }
                    return data
                }

                function eventCanceled(_ref, target) {
                    let {
                        cancel: cancel
                    } = _ref;
                    return cancel || !target.getOptions()
                }

                function correctHoverMode(target) {
                    const mode = target.getOptions().hoverMode;
                    return "none" === mode ? mode : "allargumentpoints"
                }
                const baseTrackerPrototype = {
                    ctor: function(options) {
                        const that = this;
                        const data = {
                            tracker: that
                        };
                        that._renderer = options.renderer;
                        that._legend = options.legend;
                        that._tooltip = options.tooltip;
                        that._eventTrigger = options.eventTrigger;
                        that._seriesGroup = options.seriesGroup;
                        options.seriesGroup.off(DOT_EVENT_NS).on((0, _index.addNamespace)(eventsConsts.showPointTooltip, EVENT_NS), data, that._showPointTooltip).on((0, _index.addNamespace)(eventsConsts.hidePointTooltip, EVENT_NS), data, that._hidePointTooltip);
                        that._renderer.root.off(DOT_EVENT_NS).on(POINTER_ACTION, data, that._pointerHandler).on((0, _index.addNamespace)(_pointer.default.up, EVENT_NS), (() => clearTimeout(that._holdTimer))).on((0, _index.addNamespace)(_click.name, EVENT_NS), data, that._clickHandler)
                    },
                    update: function(options) {
                        this._chart = options.chart
                    },
                    updateSeries(series, resetDecorations) {
                        const that = this;
                        const noHoveredSeries = !(null !== series && void 0 !== series && series.some((s => s === that.hoveredSeries)) || that._hoveredPoint && that._hoveredPoint.series);
                        if (that._storedSeries !== series) {
                            that._storedSeries = series || []
                        }
                        if (noHoveredSeries) {
                            that._clean();
                            that._renderer.initDefsElements()
                        }
                        if (resetDecorations) {
                            that.clearSelection();
                            if (!noHoveredSeries) {
                                that._hideTooltip(that.pointAtShownTooltip);
                                that.clearHover()
                            }
                        }
                    },
                    setCanvases: function(mainCanvas, paneCanvases) {
                        this._mainCanvas = mainCanvas;
                        this._canvases = paneCanvases
                    },
                    repairTooltip: function() {
                        const point = this.pointAtShownTooltip;
                        if (!point || !point.series || !point.isVisible()) {
                            this._hideTooltip(point, true)
                        } else {
                            this._showTooltip(point)
                        }
                    },
                    _setHoveredPoint: function(point) {
                        if (point === this._hoveredPoint) {
                            return
                        }
                        this._releaseHoveredPoint();
                        point.hover();
                        this._hoveredPoint = point
                    },
                    _releaseHoveredPoint: function(isPointerOut) {
                        if (this._hoveredPoint && this._hoveredPoint.getOptions()) {
                            this._hoveredPoint.clearHover();
                            this._hoveredPoint = null;
                            if (this._tooltip.isEnabled()) {
                                this._hideTooltip(this._hoveredPoint, false, isPointerOut)
                            }
                        }
                    },
                    _setHoveredSeries: function(series, mode) {
                        this._releaseHoveredSeries();
                        this._releaseHoveredPoint();
                        series.hover(mode);
                        this.hoveredSeries = series
                    },
                    _releaseHoveredSeries() {
                        if (this.hoveredSeries) {
                            this.hoveredSeries.clearHover();
                            this.hoveredSeries = null
                        }
                    },
                    clearSelection() {
                        this._storedSeries.forEach((series => {
                            if (series) {
                                series.clearSelection();
                                series.getPoints().forEach((point => point.clearSelection()))
                            }
                        }))
                    },
                    _clean: function() {
                        this.hoveredPoint = this.hoveredSeries = this._hoveredArgumentPoints = null;
                        this._hideTooltip(this.pointAtShownTooltip)
                    },
                    clearHover: function(isPointerOut) {
                        this._resetHoveredArgument();
                        this._releaseHoveredSeries();
                        this._releaseHoveredPoint(isPointerOut)
                    },
                    _hideTooltip: function(point, silent, isPointerOut) {
                        const that = this;
                        if (!that._tooltip || point && that.pointAtShownTooltip !== point) {
                            return
                        }
                        if (!silent && that.pointAtShownTooltip) {
                            that.pointAtShownTooltip = null
                        }
                        that._tooltip.hide(!!isPointerOut)
                    },
                    _showTooltip: function(point) {
                        const that = this;
                        let tooltipFormatObject;
                        const eventData = {
                            target: point
                        };
                        if (null !== point && void 0 !== point && point.getOptions()) {
                            tooltipFormatObject = point.getTooltipFormatObject(that._tooltip, that._tooltip.isShared() && that._chart.getStackedPoints(point));
                            if (!(0, _type.isDefined)(tooltipFormatObject.valueText) && !tooltipFormatObject.points || !point.isVisible()) {
                                return
                            }
                            const coords = point.getTooltipParams(that._tooltip.getLocation());
                            const rootOffset = that._renderer.getRootOffset();
                            coords.x += rootOffset.left;
                            coords.y += rootOffset.top;
                            const callback = result => {
                                result && (that.pointAtShownTooltip = point)
                            };
                            callback(that._tooltip.show(tooltipFormatObject, coords, eventData, void 0, callback))
                        }
                    },
                    _showPointTooltip: function(event, point) {
                        const that = event.data.tracker;
                        const pointWithTooltip = that.pointAtShownTooltip;
                        if (pointWithTooltip && pointWithTooltip !== point) {
                            that._hideTooltip(pointWithTooltip)
                        }
                        that._showTooltip(point)
                    },
                    _hidePointTooltip: function(event, point) {
                        event.data.tracker._hideTooltip(point, false, true)
                    },
                    _enableOutHandler: function() {
                        if (this._outHandler) {
                            return
                        }
                        const that = this;
                        const handler = function(e) {
                            const rootOffset = that._renderer.getRootOffset();
                            const x = _floor(e.pageX - rootOffset.left);
                            const y = _floor(e.pageY - rootOffset.top);
                            if (!(0, _utils.pointInCanvas)(that._mainCanvas, x, y) && !that._isCursorOnTooltip(e)) {
                                that._pointerOut();
                                that._disableOutHandler()
                            }
                        };
                        _events_engine.default.on(_dom_adapter.default.getDocument(), POINTER_ACTION, handler);
                        this._outHandler = handler
                    },
                    _isCursorOnTooltip: function(e) {
                        return this._tooltip.isEnabled() && this._tooltip.isCursorOnTooltip(e.pageX, e.pageY)
                    },
                    _disableOutHandler: function() {
                        this._outHandler && _events_engine.default.off(_dom_adapter.default.getDocument(), POINTER_ACTION, this._outHandler);
                        this._outHandler = null
                    },
                    stopCurrentHandling: function() {
                        this._pointerOut(true)
                    },
                    _pointerOut: function(force) {
                        this.clearHover(true);
                        (force || this._tooltip.isEnabled()) && this._hideTooltip(this.pointAtShownTooltip, false, true)
                    },
                    _triggerLegendClick: function(eventArgs, elementClick) {
                        const eventTrigger = this._eventTrigger;
                        eventTrigger("legendClick", eventArgs, (function() {
                            !eventCanceled(eventArgs, eventArgs.target) && eventTrigger(elementClick, eventArgs)
                        }))
                    },
                    _hoverLegendItem: function(x, y) {
                        const that = this;
                        const item = that._legend.getItemByCoord(x, y);
                        let series;
                        const legendHoverMode = function(mode) {
                            if (LEGEND_HOVER_MODES.indexOf(mode) > -1) {
                                return mode
                            } else {
                                return "includepoints"
                            }
                        }(that._legend.getOptions().hoverMode);
                        if (item) {
                            series = that._storedSeries[item.id];
                            if (!series.isHovered() || series.lastHoverMode !== legendHoverMode) {
                                that._setHoveredSeries(series, legendHoverMode)
                            }
                            that._tooltip.isEnabled() && that._hideTooltip(that.pointAtShownTooltip)
                        } else {
                            that.clearHover()
                        }
                    },
                    _hoverArgument: function(argument, argumentIndex) {
                        const that = this;
                        const hoverMode = that._getArgumentHoverMode();
                        if ((0, _type.isDefined)(argument)) {
                            that._releaseHoveredPoint();
                            that._hoveredArgument = argument;
                            that._argumentIndex = argumentIndex;
                            that._notifySeries({
                                action: "pointHover",
                                notifyLegend: that._notifyLegendOnHoverArgument,
                                target: {
                                    argument: argument,
                                    fullState: HOVER_STATE,
                                    argumentIndex: argumentIndex,
                                    getOptions: function() {
                                        return {
                                            hoverMode: hoverMode
                                        }
                                    }
                                }
                            })
                        }
                    },
                    _resetHoveredArgument: function() {
                        const that = this;
                        let hoverMode;
                        if ((0, _type.isDefined)(that._hoveredArgument)) {
                            hoverMode = that._getArgumentHoverMode();
                            that._notifySeries({
                                action: "clearPointHover",
                                notifyLegend: that._notifyLegendOnHoverArgument,
                                target: {
                                    fullState: NORMAL_STATE,
                                    argumentIndex: that._argumentIndex,
                                    argument: that._hoveredArgument,
                                    getOptions: function() {
                                        return {
                                            hoverMode: hoverMode
                                        }
                                    }
                                }
                            });
                            that._hoveredArgument = null
                        }
                    },
                    _notifySeries: function(data) {
                        this._storedSeries.forEach((function(series) {
                            series.notify(data)
                        }))
                    },
                    _pointerHandler: function(e) {
                        var _series;
                        const that = e.data.tracker;
                        const rootOffset = that._renderer.getRootOffset();
                        const x = _floor(e.pageX - rootOffset.left);
                        const y = _floor(e.pageY - rootOffset.top);
                        const canvas = that._getCanvas(x, y);
                        let series = getData(e, "chart-data-series");
                        let point = getData(e, "chart-data-point") || (null === (_series = series) || void 0 === _series ? void 0 : _series.getPointByCoord(x, y));
                        that._isHolding = false;
                        clearTimeout(that._holdTimer);
                        if (e.type === _pointer.default.down) {
                            that._holdTimer = setTimeout((() => that._isHolding = true), 300)
                        }
                        if (point && !point.getMarkerVisibility()) {
                            point = void 0
                        }
                        that._enableOutHandler();
                        if (that._legend.coordsIn(x, y)) {
                            that._hoverLegendItem(x, y);
                            return
                        }
                        if (that.hoveredSeries && that.hoveredSeries !== that._stuckSeries) {
                            that._releaseHoveredSeries()
                        }
                        if (that._hoverArgumentAxis(x, y, e)) {
                            return
                        }
                        if (that._isPointerOut(canvas, point)) {
                            that._pointerOut()
                        }
                        if (!canvas && !point) {
                            return
                        }
                        if (series && !point) {
                            point = series.getNeighborPoint(x, y);
                            if (!that._stickyHovering && point && !point.coordsIn(x, y)) {
                                point = null
                            }
                            if (series !== that.hoveredSeries) {
                                that._setTimeout((function() {
                                    that._setHoveredSeries(series);
                                    that._setStuckSeries(e, series, x, y);
                                    that._pointerComplete(point, x, y)
                                }), series);
                                return
                            }
                        } else if (point) {
                            if (e.type !== _pointer.default.move && "touch" !== e.pointerType) {
                                return
                            }
                            if (that.hoveredSeries) {
                                that._setTimeout((() => that._pointerOnPoint(point, x, y, e)), point)
                            } else {
                                that._pointerOnPoint(point, x, y, e)
                            }
                            return
                        } else if (that._setStuckSeries(e, void 0, x, y) && that._stickyHovering) {
                            var _point;
                            series = that._stuckSeries;
                            point = series.getNeighborPoint(x, y);
                            that._releaseHoveredSeries();
                            (null === (_point = point) || void 0 === _point ? void 0 : _point.getMarkerVisibility()) && that._setHoveredPoint(point)
                        } else if (!that._stickyHovering) {
                            that._pointerOut()
                        }
                        that._pointerComplete(point, x, y)
                    },
                    _pointerOnPoint: function(point, x, y) {
                        this._resetHoveredArgument();
                        this._setHoveredPoint(point);
                        this._pointerComplete(point, x, y)
                    },
                    _pointerComplete: function(point) {
                        this.pointAtShownTooltip !== point && this._tooltip.isEnabled() && this._showTooltip(point)
                    },
                    _clickHandler: function(e) {
                        var _point2;
                        const that = e.data.tracker;
                        if (that._isHolding) {
                            return
                        }
                        const rootOffset = that._renderer.getRootOffset();
                        const x = _floor(e.pageX - rootOffset.left);
                        const y = _floor(e.pageY - rootOffset.top);
                        let point = getData(e, "chart-data-point");
                        const series = that._stuckSeries || getData(e, "chart-data-series") || (null === (_point2 = point) || void 0 === _point2 ? void 0 : _point2.series);
                        const axis = that._argumentAxis;
                        if (that._legend.coordsIn(x, y)) {
                            const item = that._legend.getItemByCoord(x, y);
                            if (item) {
                                that._legendClick(item, e)
                            }
                        } else if (null !== axis && void 0 !== axis && axis.coordsIn(x, y)) {
                            const argument = getData(e, "chart-data-argument", true);
                            if ((0, _type.isDefined)(argument)) {
                                that._eventTrigger("argumentAxisClick", {
                                    argument: argument,
                                    event: e
                                })
                            }
                        } else if (series) {
                            var _point3;
                            point = point || series.getPointByCoord(x, y);
                            if (null !== (_point3 = point) && void 0 !== _point3 && _point3.getMarkerVisibility()) {
                                that._pointClick(point, e)
                            } else {
                                getData(e, "chart-data-series") && that._eventTrigger("seriesClick", {
                                    target: series,
                                    event: e
                                })
                            }
                        }
                    },
                    dispose: function() {
                        this._disableOutHandler();
                        this._renderer.root.off(DOT_EVENT_NS);
                        this._seriesGroup.off(DOT_EVENT_NS)
                    }
                };
                const ChartTracker = function(options) {
                    this.ctor(options)
                };
                exports.ChartTracker = ChartTracker;
                (0, _extend.extend)(ChartTracker.prototype, baseTrackerPrototype, {
                    _pointClick: function(point, event) {
                        const eventTrigger = this._eventTrigger;
                        const series = point.series;
                        const eventArgs = {
                            target: point,
                            event: event
                        };
                        eventTrigger("pointClick", eventArgs, (function() {
                            !eventCanceled(eventArgs, series) && eventTrigger("seriesClick", {
                                target: series,
                                event: event
                            })
                        }))
                    },
                    update: function(options) {
                        baseTrackerPrototype.update.call(this, options);
                        this._argumentAxis = options.argumentAxis || {};
                        this._axisHoverEnabled = this._argumentAxis && "allargumentpoints" === (0, _utils.normalizeEnum)(this._argumentAxis.getOptions().hoverMode);
                        this._rotated = options.rotated;
                        this._crosshair = options.crosshair;
                        this._stickyHovering = options.stickyHovering
                    },
                    _getCanvas: function(x, y) {
                        const canvases = this._canvases || [];
                        for (let i = 0; i < canvases.length; i++) {
                            const c = canvases[i];
                            if ((0, _utils.pointInCanvas)(c, x, y)) {
                                return c
                            }
                        }
                        return null
                    },
                    _isPointerOut: function(canvas, point) {
                        return !canvas && this._stuckSeries && (null === point || void 0 === point ? void 0 : point.series) !== this._stuckSeries
                    },
                    _hideCrosshair: function() {
                        var _this$_crosshair;
                        null === (_this$_crosshair = this._crosshair) || void 0 === _this$_crosshair || _this$_crosshair.hide()
                    },
                    _moveCrosshair: function(point, x, y) {
                        if (this._crosshair && null !== point && void 0 !== point && point.isVisible()) {
                            this._crosshair.show({
                                point: point,
                                x: x,
                                y: y
                            })
                        }
                    },
                    _clean: function() {
                        baseTrackerPrototype._clean.call(this);
                        this._resetTimer();
                        this._stuckSeries = null
                    },
                    _getSeriesForShared: function(x, y) {
                        var _point4;
                        const that = this;
                        const points = [];
                        let point = null;
                        let distance = 1 / 0;
                        if (that._tooltip.isShared() && !that.hoveredSeries) {
                            (0, _iterator.each)(that._storedSeries, (function(_, series) {
                                const point = series.getNeighborPoint(x, y);
                                point && points.push(point)
                            }));
                            (0, _iterator.each)(points, (function(_, p) {
                                const coords = p.getCrosshairData(x, y);
                                const d = (0, _utils.getDistance)(x, y, coords.x, coords.y);
                                if (d < distance) {
                                    point = p;
                                    distance = d
                                }
                            }))
                        }
                        return null === (_point4 = point) || void 0 === _point4 ? void 0 : _point4.series
                    },
                    _setTimeout: function(callback, keeper) {
                        const that = this;
                        if (that._timeoutKeeper !== keeper) {
                            that._resetTimer();
                            that._hoverTimeout = setTimeout((function() {
                                callback();
                                that._timeoutKeeper = null
                            }), 100);
                            that._timeoutKeeper = keeper
                        }
                    },
                    _resetTimer: function() {
                        clearTimeout(this._hoverTimeout);
                        this._timeoutKeeper = this._hoverTimeout = null
                    },
                    _stopEvent: function(e) {
                        if (!(0, _type.isDefined)(e.cancelable) || e.cancelable) {
                            e.preventDefault();
                            e.stopPropagation()
                        }
                    },
                    _setStuckSeries: function(e, series, x, y) {
                        if ("mouse" !== e.pointerType) {
                            this._stuckSeries = null
                        } else {
                            this._stuckSeries = series || this._stuckSeries || this._getSeriesForShared(x, y)
                        }
                        return !!this._stuckSeries
                    },
                    _pointerOut: function() {
                        this._stuckSeries = null;
                        this._hideCrosshair();
                        this._resetTimer();
                        baseTrackerPrototype._pointerOut.apply(this, arguments)
                    },
                    _hoverArgumentAxis: function(x, y, e) {
                        const that = this;
                        that._resetHoveredArgument();
                        if (that._axisHoverEnabled && that._argumentAxis.coordsIn(x, y)) {
                            that._hoverArgument(getData(e, "chart-data-argument", true));
                            return true
                        }
                    },
                    _pointerComplete: function(point, x, y) {
                        this.hoveredSeries && this.hoveredSeries.updateHover(x, y);
                        this._resetTimer();
                        this._moveCrosshair(point, x, y);
                        baseTrackerPrototype._pointerComplete.call(this, point)
                    },
                    _legendClick: function(item, e) {
                        const series = this._storedSeries[item.id];
                        this._triggerLegendClick({
                            target: series,
                            event: e
                        }, "seriesClick")
                    },
                    _hoverLegendItem: function(x, y) {
                        this._stuckSeries = null;
                        this._hideCrosshair();
                        baseTrackerPrototype._hoverLegendItem.call(this, x, y)
                    },
                    _pointerOnPoint: function(point, x, y, e) {
                        this._setStuckSeries(e, point.series, x, y);
                        this._releaseHoveredSeries();
                        baseTrackerPrototype._pointerOnPoint.call(this, point, x, y, e)
                    },
                    _notifyLegendOnHoverArgument: false,
                    _getArgumentHoverMode: function() {
                        return correctHoverMode(this._argumentAxis)
                    },
                    dispose: function() {
                        this._resetTimer();
                        baseTrackerPrototype.dispose.call(this)
                    }
                });
                const PieTracker = function(options) {
                    this.ctor(options)
                };
                exports.PieTracker = PieTracker;
                (0, _extend.extend)(PieTracker.prototype, baseTrackerPrototype, {
                    _isPointerOut: function(_, point) {
                        return !point
                    },
                    _legendClick: function(item, e) {
                        const points = [];
                        this._storedSeries.forEach((s => points.push.apply(points, s.getPointsByKeys(item.argument, item.argumentIndex))));
                        this._eventTrigger("legendClick", {
                            target: item.argument,
                            points: points,
                            event: e
                        })
                    },
                    _pointClick: function(point, e) {
                        this._eventTrigger("pointClick", {
                            target: point,
                            event: e
                        })
                    },
                    _hoverLegendItem: function(x, y) {
                        const that = this;
                        const item = that._legend.getItemByCoord(x, y);
                        if (item && that._hoveredArgument !== item.argument) {
                            that._resetHoveredArgument();
                            that._hoverArgument(item.argument, item.argumentIndex)
                        } else if (!item) {
                            that.clearHover()
                        }
                    },
                    _getArgumentHoverMode: function() {
                        return correctHoverMode(this._legend)
                    },
                    _hoverArgumentAxis: _common.noop,
                    _setStuckSeries: _common.noop,
                    _getCanvas: _common.noop,
                    _notifyLegendOnHoverArgument: true
                })
            },
        37195:
            /*!**********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/chart_components/zoom_and_pan.js ***!
              \**********************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _type = __webpack_require__( /*! ../../core/utils/type */ 11528);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576);
                var _utils = __webpack_require__( /*! ../core/utils */ 28779);
                var _wheel = __webpack_require__( /*! ../../common/core/events/core/wheel */ 37373);
                var transformEvents = function(e, r) {
                    if (!r && e && e.__esModule) {
                        return e
                    }
                    if (null === e || "object" != typeof e && "function" != typeof e) {
                        return {
                            default: e
                        }
                    }
                    var t = _getRequireWildcardCache(r);
                    if (t && t.has(e)) {
                        return t.get(e)
                    }
                    var n = {
                            __proto__: null
                        },
                        a = Object.defineProperty && Object.getOwnPropertyDescriptor;
                    for (var u in e) {
                        if ("default" !== u && {}.hasOwnProperty.call(e, u)) {
                            var i = a ? Object.getOwnPropertyDescriptor(e, u) : null;
                            i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]
                        }
                    }
                    return n.default = e, t && t.set(e, n), n
                }(__webpack_require__( /*! ../../common/core/events/transform */ 37008));
                var _drag = __webpack_require__( /*! ../../common/core/events/drag */ 59144);

                function _getRequireWildcardCache(e) {
                    if ("function" != typeof WeakMap) {
                        return null
                    }
                    var r = new WeakMap,
                        t = new WeakMap;
                    return (_getRequireWildcardCache = function(e) {
                        return e ? t : r
                    })(e)
                }

                function _extends() {
                    return _extends = Object.assign ? Object.assign.bind() : function(n) {
                        for (var e = 1; e < arguments.length; e++) {
                            var t = arguments[e];
                            for (var r in t) {
                                ({}).hasOwnProperty.call(t, r) && (n[r] = t[r])
                            }
                        }
                        return n
                    }, _extends.apply(null, arguments)
                }
                const EVENTS_NS = ".zoomAndPanNS";
                const DRAG_START_EVENT_NAME = _drag.start + EVENTS_NS;
                const DRAG_EVENT_NAME = _drag.move + EVENTS_NS;
                const DRAG_END_EVENT_NAME = _drag.end + EVENTS_NS;
                const PINCH_START_EVENT_NAME = transformEvents.pinchstart + EVENTS_NS;
                const PINCH_EVENT_NAME = transformEvents.pinch + EVENTS_NS;
                const PINCH_END_EVENT_NAME = transformEvents.pinchend + EVENTS_NS;
                const SCROLL_BAR_START_EVENT_NAME = "dxc-scroll-start" + EVENTS_NS;
                const SCROLL_BAR_MOVE_EVENT_NAME = "dxc-scroll-move" + EVENTS_NS;
                const SCROLL_BAR_END_EVENT_NAME = "dxc-scroll-end" + EVENTS_NS;
                const _min = Math.min;
                const _max = Math.max;
                const _abs = Math.abs;

                function canvasToRect(canvas) {
                    return {
                        x: canvas.left,
                        y: canvas.top,
                        width: canvas.width - canvas.left - canvas.right,
                        height: canvas.height - canvas.top - canvas.bottom
                    }
                }

                function checkCoords(rect, coords) {
                    const x = coords.x;
                    const y = coords.y;
                    return x >= rect.x && x <= rect.width + rect.x && y >= rect.y && y <= rect.height + rect.y
                }

                function getFilteredAxes(axes) {
                    return axes.filter((a => !a.getTranslator().getBusinessRange().isEmpty()))
                }

                function isAxisAvailablePanning(axes) {
                    return axes.some((axis => !axis.isExtremePosition(false) || !axis.isExtremePosition(true)))
                }

                function axisZoom(axis, onlyAxisToNotify, getRange, getParameters, actionField, scale, e) {
                    const silent = onlyAxisToNotify && axis !== onlyAxisToNotify;
                    const range = getRange(axis);
                    const {
                        stopInteraction: stopInteraction,
                        correctedRange: correctedRange
                    } = axis.checkZoomingLowerLimitOvercome(actionField, scale, range);
                    const result = axis.handleZooming(stopInteraction ? null : correctedRange, getParameters(silent), e, actionField);
                    stopInteraction && axis.handleZoomEnd();
                    return {
                        stopInteraction: stopInteraction,
                        result: result
                    }
                }

                function zoomAxes(e, axes, getRange, zoom, params, onlyAxisToNotify) {
                    axes = function(axes, onlyAxisToNotify) {
                        if (onlyAxisToNotify) {
                            axes = axes.sort(((a, b) => {
                                if (a === onlyAxisToNotify) {
                                    return -1
                                }
                                if (b === onlyAxisToNotify) {
                                    return 1
                                }
                                return 0
                            }))
                        }
                        return axes
                    }(axes, onlyAxisToNotify);
                    let zoomStarted = false;
                    const getParameters = silent => ({
                        start: !!silent,
                        end: !!silent
                    });
                    getFilteredAxes(axes).some((axis => {
                        const translator = axis.getTranslator();
                        const scale = translator.getMinScale(zoom);
                        const {
                            stopInteraction: stopInteraction,
                            result: result
                        } = axisZoom(axis, onlyAxisToNotify, getRange(_extends({
                            scale: scale,
                            translator: translator,
                            axis: axis
                        }, params)), getParameters, "zoom", scale, e);
                        zoomStarted = !stopInteraction;
                        return onlyAxisToNotify && result.isPrevented
                    }));
                    return zoomStarted
                }

                function cancelEvent(e) {
                    if (e.originalEvent) {
                        cancelEvent(e.originalEvent)
                    }
                    if (false !== e.cancelable) {
                        e.cancel = true
                    }
                }
                exports.default = {
                    name: "zoom_and_pan",
                    init: function() {
                        const chart = this;
                        const renderer = this._renderer;

                        function getAxesCopy(zoomAndPan, actionField) {
                            let axes = [];
                            const options = zoomAndPan.options;
                            const actionData = zoomAndPan.actionData;
                            if (options.argumentAxis[actionField]) {
                                axes.push(chart.getArgumentAxis())
                            }
                            if (options.valueAxis[actionField]) {
                                axes = axes.concat(actionData.valueAxes)
                            }
                            return axes
                        }

                        function startAxesViewportChanging(zoomAndPan, actionField, e) {
                            const axes = getAxesCopy(zoomAndPan, actionField);
                            getFilteredAxes(axes).some((axis => axis.handleZooming(null, {
                                end: true
                            }, e, actionField).isPrevented)) && cancelEvent(e)
                        }

                        function axesViewportChanging(zoomAndPan, actionField, e, offsetCalc, centerCalc) {
                            function zoomAxes(axes, criteria, coordField, e, actionData) {
                                let zoom = {
                                    zoomed: false
                                };
                                criteria && getFilteredAxes(axes).forEach((axis => {
                                    const options = axis.getOptions();
                                    const viewport = axis.visualRange();
                                    const scale = axis.getTranslator().getEventScale(e);
                                    const translate = -offsetCalc(e, actionData, coordField, scale);
                                    zoom = (0, _extend.extend)(true, zoom, axis.getTranslator().zoom(translate, scale, axis.getZoomBounds()));
                                    const range = axis.adjustRange((0, _utils.getVizRangeObject)([zoom.min, zoom.max]));
                                    const {
                                        stopInteraction: stopInteraction,
                                        correctedRange: correctedRange
                                    } = axis.checkZoomingLowerLimitOvercome(actionField, scale, range);
                                    if (!(0, _type.isDefined)(viewport) || viewport.startValue.valueOf() !== correctedRange.startValue.valueOf() || viewport.endValue.valueOf() !== correctedRange.endValue.valueOf()) {
                                        axis.handleZooming(stopInteraction ? null : correctedRange, {
                                            start: true,
                                            end: true
                                        }, e, actionField);
                                        if (!stopInteraction) {
                                            zoom.zoomed = true;
                                            zoom.deltaTranslate = translate - zoom.translate
                                        }
                                    } else if ("touch" === e.pointerType && "discrete" === options.type) {
                                        const isMinPosition = axis.isExtremePosition(false);
                                        const isMaxPosition = axis.isExtremePosition(true);
                                        const zoomInEnabled = scale > 1 && !stopInteraction;
                                        const zoomOutEnabled = scale < 1 && (!isMinPosition || !isMaxPosition);
                                        const panningEnabled = 1 === scale && !(isMinPosition && (translate < 0 && !options.inverted || translate > 0 && options.inverted) || isMaxPosition && (translate > 0 && !options.inverted || translate < 0 && options.inverted));
                                        zoom.enabled = zoomInEnabled || zoomOutEnabled || panningEnabled
                                    }
                                }));
                                return zoom
                            }

                            function storeOffset(e, actionData, zoom, coordField) {
                                if (zoom.zoomed) {
                                    actionData.offset[coordField] = (e.offset ? e.offset[coordField] : actionData.offset[coordField]) + zoom.deltaTranslate
                                }
                            }

                            function storeCenter(center, actionData, zoom, coordField) {
                                if (zoom.zoomed) {
                                    actionData.center[coordField] = center[coordField] + zoom.deltaTranslate
                                }
                            }
                            const rotated = chart.option("rotated");
                            const actionData = zoomAndPan.actionData;
                            const options = zoomAndPan.options;
                            let argZoom = {};
                            let valZoom = {};
                            if (!actionData.fallback) {
                                argZoom = zoomAxes(chart._argumentAxes, options.argumentAxis[actionField], rotated ? "y" : "x", e, actionData);
                                valZoom = zoomAxes(actionData.valueAxes, options.valueAxis[actionField], rotated ? "x" : "y", e, actionData);
                                chart._requestChange(["VISUAL_RANGE"]);
                                storeOffset(e, actionData, argZoom, rotated ? "y" : "x");
                                storeOffset(e, actionData, valZoom, rotated ? "x" : "y")
                            }
                            const center = centerCalc(e);
                            storeCenter(center, actionData, argZoom, rotated ? "y" : "x");
                            storeCenter(center, actionData, valZoom, rotated ? "x" : "y");
                            if (!argZoom.zoomed && !valZoom.zoomed) {
                                actionData.center = center
                            }
                            return argZoom.zoomed || valZoom.zoomed || actionData.fallback || argZoom.enabled || valZoom.enabled
                        }

                        function finishAxesViewportChanging(zoomAndPan, actionField, e, offsetCalc) {
                            function zoomAxes(axes, coordField, actionData, onlyAxisToNotify) {
                                let zoomStarted = false;
                                const scale = e.scale || 1;
                                const getRange = axis => {
                                    const zoom = axis.getTranslator().zoom(-offsetCalc(e, actionData, coordField, scale), scale, axis.getZoomBounds());
                                    return {
                                        startValue: zoom.min,
                                        endValue: zoom.max
                                    }
                                };
                                const getParameters = silent => ({
                                    start: true,
                                    end: silent
                                });
                                getFilteredAxes(axes).forEach((axis => {
                                    zoomStarted = !axisZoom(axis, onlyAxisToNotify, getRange, getParameters, actionField, scale, e).stopInteraction
                                }));
                                return zoomStarted
                            }
                            const rotated = chart.option("rotated");
                            const actionData = zoomAndPan.actionData;
                            const options = zoomAndPan.options;
                            let zoomStarted = true;
                            if (actionData.fallback) {
                                zoomStarted &= options.argumentAxis[actionField] && zoomAxes(chart._argumentAxes, rotated ? "y" : "x", actionData, chart.getArgumentAxis());
                                zoomStarted |= options.valueAxis[actionField] && zoomAxes(actionData.valueAxes, rotated ? "x" : "y", actionData)
                            } else {
                                const axes = getAxesCopy(zoomAndPan, actionField);
                                getFilteredAxes(axes).forEach((axis => {
                                    axis.handleZooming(null, {
                                        start: true
                                    }, e, actionField)
                                }));
                                zoomStarted = axes.length
                            }
                            zoomStarted && chart._requestChange(["VISUAL_RANGE"])
                        }

                        function prepareActionData(coords, action) {
                            const axes = chart._argumentAxes.filter((axis => checkCoords(canvasToRect(axis.getCanvas()), coords)));
                            return {
                                fallback: chart._lastRenderingTime > 300,
                                cancel: !axes.length || !(0, _type.isDefined)(action),
                                action: action,
                                curAxisRect: axes.length && canvasToRect(axes[0].getCanvas()),
                                valueAxes: axes.length && chart._valueAxes.filter((axis => checkCoords(canvasToRect(axis.getCanvas()), coords))),
                                offset: {
                                    x: 0,
                                    y: 0
                                },
                                center: coords,
                                startCenter: coords
                            }
                        }

                        function getPointerCoord(rect, e) {
                            const rootOffset = renderer.getRootOffset();
                            return {
                                x: _min(_max(e.pageX - rootOffset.left, rect.x), rect.width + rect.x),
                                y: _min(_max(e.pageY - rootOffset.top, rect.y), rect.height + rect.y)
                            }
                        }

                        function calcCenterForPinch(e) {
                            const rootOffset = renderer.getRootOffset();
                            const x1 = e.pointers[0].pageX;
                            const x2 = e.pointers[1].pageX;
                            const y1 = e.pointers[0].pageY;
                            const y2 = e.pointers[1].pageY;
                            return {
                                x: _min(x1, x2) + _abs(x2 - x1) / 2 - rootOffset.left,
                                y: _min(y1, y2) + _abs(y2 - y1) / 2 - rootOffset.top
                            }
                        }

                        function calcCenterForDrag(e) {
                            const rootOffset = renderer.getRootOffset();
                            return {
                                x: e.pageX - rootOffset.left,
                                y: e.pageY - rootOffset.top
                            }
                        }

                        function calcOffsetForDrag(e, actionData, coordField) {
                            return e.offset[coordField] - actionData.offset[coordField]
                        }

                        function preventDefaults(e) {
                            if (false !== e.cancelable) {
                                e.preventDefault();
                                e.stopPropagation()
                            }
                            chart._stopCurrentHandling()
                        }
                        const zoomAndPan = {
                            dragStartHandler: function(e) {
                                const options = zoomAndPan.options;
                                const isTouch = "touch" === e.pointerType;
                                const wantPan = options.argumentAxis.pan || options.valueAxis.pan;
                                const wantZoom = options.argumentAxis.zoom || options.valueAxis.zoom;
                                const panKeyPressed = (0, _type.isDefined)(options.panKey) && e[(0, _utils.normalizeEnum)(options.panKey) + "Key"];
                                const dragToZoom = options.dragToZoom;
                                let action;
                                e._cancelPreventDefault = true;
                                if (isTouch) {
                                    if (options.allowTouchGestures && wantPan) {
                                        const cancelPanning = !zoomAndPan.panningVisualRangeEnabled() || zoomAndPan.skipEvent;
                                        action = cancelPanning ? null : "pan"
                                    }
                                } else if (dragToZoom && wantPan && panKeyPressed || !dragToZoom && wantPan) {
                                    action = "pan"
                                } else if (dragToZoom && wantZoom) {
                                    action = "zoom"
                                }
                                const actionData = prepareActionData(calcCenterForDrag(e), action);
                                if (actionData.cancel) {
                                    zoomAndPan.skipEvent = false;
                                    if (false !== e.cancelable) {
                                        e.cancel = true
                                    }
                                    return
                                }
                                zoomAndPan.actionData = actionData;
                                if ("zoom" === action) {
                                    actionData.startCoords = getPointerCoord(actionData.curAxisRect, e);
                                    actionData.rect = renderer.rect(0, 0, 0, 0).attr(options.dragBoxStyle).append(renderer.root)
                                } else {
                                    startAxesViewportChanging(zoomAndPan, "pan", e)
                                }
                            },
                            dragHandler: function(e) {
                                const rotated = chart.option("rotated");
                                const options = zoomAndPan.options;
                                const actionData = zoomAndPan.actionData;
                                const isTouch = "touch" === e.pointerType;
                                e._cancelPreventDefault = true;
                                if (!actionData || isTouch && !zoomAndPan.panningVisualRangeEnabled()) {
                                    return
                                }
                                if ("zoom" === actionData.action) {
                                    preventDefaults(e);
                                    const curCanvas = actionData.curAxisRect;
                                    const startCoords = actionData.startCoords;
                                    const curCoords = getPointerCoord(curCanvas, e);
                                    const zoomArg = options.argumentAxis.zoom;
                                    const zoomVal = options.valueAxis.zoom;
                                    const rect = {
                                        x: _min(startCoords.x, curCoords.x),
                                        y: _min(startCoords.y, curCoords.y),
                                        width: _abs(startCoords.x - curCoords.x),
                                        height: _abs(startCoords.y - curCoords.y)
                                    };
                                    if (!zoomArg || !zoomVal) {
                                        if (!zoomArg && !rotated || !zoomVal && rotated) {
                                            rect.x = curCanvas.x;
                                            rect.width = curCanvas.width
                                        } else {
                                            rect.y = curCanvas.y;
                                            rect.height = curCanvas.height
                                        }
                                    }
                                    actionData.rect.attr(rect)
                                } else if ("pan" === actionData.action) {
                                    axesViewportChanging(zoomAndPan, "pan", e, calcOffsetForDrag, (e => e.offset));
                                    const deltaOffsetY = Math.abs(e.offset.y - actionData.offset.y);
                                    const deltaOffsetX = Math.abs(e.offset.x - actionData.offset.x);
                                    if (isTouch && (deltaOffsetY > 5 && deltaOffsetY > Math.abs(actionData.offset.x) || deltaOffsetX > 5 && deltaOffsetX > Math.abs(actionData.offset.y))) {
                                        return
                                    }
                                    preventDefaults(e)
                                }
                            },
                            dragEndHandler: function(e) {
                                const rotated = chart.option("rotated");
                                const options = zoomAndPan.options;
                                const actionData = zoomAndPan.actionData;
                                const isTouch = "touch" === e.pointerType;
                                const getRange = _ref => {
                                    let {
                                        translator: translator,
                                        startCoord: startCoord,
                                        curCoord: curCoord
                                    } = _ref;
                                    return () => [translator.from(startCoord), translator.from(curCoord)]
                                };
                                const getCoords = (curCoords, startCoords, field) => ({
                                    curCoord: curCoords[field],
                                    startCoord: startCoords[field]
                                });
                                const needToZoom = (axisOption, coords) => axisOption.zoom && _abs(coords.curCoord - coords.startCoord) > 5;
                                const panIsEmpty = actionData && "pan" === actionData.action && !actionData.fallback && 0 === actionData.offset.x && 0 === actionData.offset.y;
                                if (!actionData || isTouch && !zoomAndPan.panningVisualRangeEnabled() || panIsEmpty) {
                                    return
                                }!isTouch && preventDefaults(e);
                                if ("zoom" === actionData.action) {
                                    const curCoords = getPointerCoord(actionData.curAxisRect, e);
                                    const argumentCoords = getCoords(curCoords, actionData.startCoords, rotated ? "y" : "x");
                                    const valueCoords = getCoords(curCoords, actionData.startCoords, rotated ? "x" : "y");
                                    const argumentAxesZoomed = needToZoom(options.argumentAxis, argumentCoords) && zoomAxes(e, chart._argumentAxes, getRange, true, argumentCoords, chart.getArgumentAxis());
                                    const valueAxesZoomed = needToZoom(options.valueAxis, valueCoords) && zoomAxes(e, actionData.valueAxes, getRange, true, valueCoords);
                                    if (valueAxesZoomed || argumentAxesZoomed) {
                                        chart._requestChange(["VISUAL_RANGE"])
                                    }
                                    actionData.rect.dispose()
                                } else if ("pan" === actionData.action) {
                                    finishAxesViewportChanging(zoomAndPan, "pan", e, calcOffsetForDrag)
                                }
                                zoomAndPan.actionData = null
                            },
                            pinchStartHandler: function(e) {
                                const actionData = prepareActionData(calcCenterForPinch(e), "zoom");
                                if (actionData.cancel) {
                                    cancelEvent(e);
                                    return
                                }
                                zoomAndPan.actionData = actionData;
                                startAxesViewportChanging(zoomAndPan, "zoom", e)
                            },
                            pinchHandler: function(e) {
                                if (!zoomAndPan.actionData) {
                                    return
                                }
                                axesViewportChanging(zoomAndPan, "zoom", e, ((e, actionData, coordField, scale) => calcCenterForPinch(e)[coordField] - actionData.center[coordField] + (actionData.center[coordField] - actionData.center[coordField] * scale)), calcCenterForPinch);
                                preventDefaults(e)
                            },
                            pinchEndHandler: function(e) {
                                if (!zoomAndPan.actionData) {
                                    return
                                }
                                finishAxesViewportChanging(zoomAndPan, "zoom", e, ((e, actionData, coordField, scale) => actionData.center[coordField] - actionData.startCenter[coordField] + (actionData.startCenter[coordField] - actionData.startCenter[coordField] * scale)));
                                zoomAndPan.actionData = null
                            },
                            mouseWheelHandler: function(e) {
                                const options = zoomAndPan.options;
                                const rotated = chart.option("rotated");
                                const getRange = _ref2 => {
                                    let {
                                        translator: translator,
                                        coord: coord,
                                        scale: scale,
                                        axis: axis
                                    } = _ref2;
                                    return () => {
                                        const zoom = translator.zoom(-(coord - coord * scale), scale, axis.getZoomBounds());
                                        return {
                                            startValue: zoom.min,
                                            endValue: zoom.max
                                        }
                                    }
                                };
                                const coords = calcCenterForDrag(e);
                                let axesZoomed = false;
                                let targetAxes;
                                if (options.valueAxis.zoom) {
                                    targetAxes = chart._valueAxes.filter((axis => checkCoords(canvasToRect(axis.getCanvas()), coords)));
                                    if (0 === targetAxes.length) {
                                        const targetCanvas = chart._valueAxes.reduce(((r, axis) => {
                                            if (!r && axis.coordsIn(coords.x, coords.y)) {
                                                r = axis.getCanvas()
                                            }
                                            return r
                                        }), null);
                                        if (targetCanvas) {
                                            targetAxes = chart._valueAxes.filter((axis => checkCoords(canvasToRect(axis.getCanvas()), {
                                                x: targetCanvas.left,
                                                y: targetCanvas.top
                                            })))
                                        }
                                    }
                                    axesZoomed |= zoomAxes(e, targetAxes, getRange, e.delta > 0, {
                                        coord: rotated ? coords.x : coords.y
                                    })
                                }
                                if (options.argumentAxis.zoom) {
                                    const canZoom = chart._argumentAxes.some((axis => {
                                        if (checkCoords(canvasToRect(axis.getCanvas()), coords) || axis.coordsIn(coords.x, coords.y)) {
                                            return true
                                        }
                                        return false
                                    }));
                                    axesZoomed |= canZoom && zoomAxes(e, chart._argumentAxes, getRange, e.delta > 0, {
                                        coord: rotated ? coords.y : coords.x
                                    }, chart.getArgumentAxis())
                                }
                                if (axesZoomed) {
                                    chart._requestChange(["VISUAL_RANGE"]);
                                    if (targetAxes && isAxisAvailablePanning(targetAxes) || !targetAxes && zoomAndPan.panningVisualRangeEnabled()) {
                                        preventDefaults(e)
                                    }
                                }
                            },
                            cleanup: function() {
                                renderer.root.off(EVENTS_NS);
                                zoomAndPan.actionData && zoomAndPan.actionData.rect && zoomAndPan.actionData.rect.dispose();
                                zoomAndPan.actionData = null;
                                renderer.root.css({
                                    "touch-action": ""
                                })
                            },
                            setup: function(options) {
                                zoomAndPan.cleanup();
                                if (!options.argumentAxis.pan) {
                                    renderer.root.on(SCROLL_BAR_START_EVENT_NAME, cancelEvent)
                                }
                                if (options.argumentAxis.none && options.valueAxis.none) {
                                    return
                                }
                                zoomAndPan.options = options;
                                if ((options.argumentAxis.zoom || options.valueAxis.zoom) && options.allowMouseWheel) {
                                    renderer.root.on(_wheel.name + EVENTS_NS, zoomAndPan.mouseWheelHandler)
                                }
                                if ((options.argumentAxis.zoom || options.valueAxis.zoom) && options.allowTouchGestures) {
                                    renderer.root.on(PINCH_START_EVENT_NAME, {
                                        passive: false
                                    }, zoomAndPan.pinchStartHandler).on(PINCH_EVENT_NAME, {
                                        passive: false
                                    }, zoomAndPan.pinchHandler).on(PINCH_END_EVENT_NAME, zoomAndPan.pinchEndHandler)
                                }
                                renderer.root.on(DRAG_START_EVENT_NAME, {
                                    immediate: true,
                                    passive: false
                                }, zoomAndPan.dragStartHandler).on(DRAG_EVENT_NAME, {
                                    immediate: true,
                                    passive: false
                                }, zoomAndPan.dragHandler).on(DRAG_END_EVENT_NAME, zoomAndPan.dragEndHandler);
                                renderer.root.on(SCROLL_BAR_START_EVENT_NAME, (function(e) {
                                    zoomAndPan.actionData = {
                                        valueAxes: [],
                                        offset: {
                                            x: 0,
                                            y: 0
                                        },
                                        center: {
                                            x: 0,
                                            y: 0
                                        }
                                    };
                                    preventDefaults(e);
                                    startAxesViewportChanging(zoomAndPan, "pan", e)
                                })).on(SCROLL_BAR_MOVE_EVENT_NAME, (function(e) {
                                    preventDefaults(e);
                                    axesViewportChanging(zoomAndPan, "pan", e, calcOffsetForDrag, (e => e.offset))
                                })).on(SCROLL_BAR_END_EVENT_NAME, (function(e) {
                                    preventDefaults(e);
                                    finishAxesViewportChanging(zoomAndPan, "pan", e, calcOffsetForDrag);
                                    zoomAndPan.actionData = null
                                }))
                            },
                            panningVisualRangeEnabled: function() {
                                return isAxisAvailablePanning(chart._valueAxes) || isAxisAvailablePanning(chart._argumentAxes)
                            }
                        };
                        this._zoomAndPan = zoomAndPan
                    },
                    members: {
                        _setupZoomAndPan: function() {
                            this._zoomAndPan.setup(this._themeManager.getOptions("zoomAndPan"))
                        }
                    },
                    dispose: function() {
                        this._zoomAndPan.cleanup()
                    },
                    customize: function(constructor) {
                        constructor.addChange({
                            code: "ZOOM_AND_PAN",
                            handler: function() {
                                this._setupZoomAndPan()
                            },
                            isThemeDependent: true,
                            isOptionChange: true,
                            option: "zoomAndPan"
                        })
                    }
                };
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        89463:
            /*!*******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/circular_gauge.js ***!
              \*******************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _circular_gauge = (e = __webpack_require__( /*! ./gauges/circular_gauge */ 59248), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                exports.default = _circular_gauge.default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        45647:
            /*!***********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/components/chart_theme_manager.js ***!
              \***********************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.ThemeManager = void 0;
                var _common = __webpack_require__( /*! ../../core/utils/common */ 17781);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 11528);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576);
                var _base_theme_manager = __webpack_require__( /*! ../core/base_theme_manager */ 71671);
                var _utils = __webpack_require__( /*! ../core/utils */ 28779);
                exports.ThemeManager = _base_theme_manager.BaseThemeManager.inherit(function() {
                    const processAxisOptions = function(axisOptions) {
                        if (!axisOptions) {
                            return {}
                        }
                        axisOptions = (0, _extend.extend)(true, {}, axisOptions);
                        axisOptions.title = (options = axisOptions.title, (0, _type.isString)(options) ? {
                            text: options
                        } : options);
                        var options;
                        if ("logarithmic" === axisOptions.type && axisOptions.logarithmBase <= 0 || axisOptions.logarithmBase && !(0, _type.isNumeric)(axisOptions.logarithmBase)) {
                            axisOptions.logarithmBase = void 0;
                            axisOptions.logarithmBaseError = true
                        }
                        if (axisOptions.label) {
                            if (axisOptions.label.alignment) {
                                axisOptions.label.userAlignment = true
                            }
                        }
                        return axisOptions
                    };
                    const applyParticularAxisOptions = function(name, userOptions, rotated) {
                        const theme = this._theme;
                        const position = !(rotated ^ "valueAxis" === name) ? "horizontalAxis" : "verticalAxis";
                        const processedUserOptions = processAxisOptions(userOptions);
                        const commonAxisSettings = processAxisOptions(this._userOptions.commonAxisSettings);
                        const mergeOptions = (0, _extend.extend)(true, {}, theme.commonAxisSettings, theme[position], theme[name], commonAxisSettings, processedUserOptions);
                        mergeOptions.workWeek = processedUserOptions.workWeek || theme[name].workWeek;
                        mergeOptions.forceUserTickInterval |= (0, _type.isDefined)(processedUserOptions.tickInterval) && !(0, _type.isDefined)(processedUserOptions.axisDivisionFactor);
                        return mergeOptions
                    };
                    const mergeOptions = function(name, userOptions) {
                        userOptions = userOptions || this._userOptions[name];
                        const theme = this._theme[name];
                        let result = this._mergedSettings[name];
                        if (result) {
                            return result
                        }
                        if ((0, _type.isPlainObject)(theme) && (0, _type.isPlainObject)(userOptions)) {
                            result = (0, _extend.extend)(true, {}, theme, userOptions)
                        } else {
                            result = (0, _type.isDefined)(userOptions) ? userOptions : theme
                        }
                        this._mergedSettings[name] = result;
                        return result
                    };
                    const applyParticularTheme = {
                        base: mergeOptions,
                        argumentAxis: applyParticularAxisOptions,
                        valueAxisRangeSelector: function() {
                            return mergeOptions.call(this, "valueAxis")
                        },
                        valueAxis: applyParticularAxisOptions,
                        series: function(name, userOptions, seriesCount) {
                            const that = this;
                            const theme = that._theme;
                            let userCommonSettings = that._userOptions.commonSeriesSettings || {};
                            const themeCommonSettings = theme.commonSeriesSettings;
                            const widgetType = that._themeSection.split(".").slice(-1)[0];
                            const type = (0, _utils.normalizeEnum)(userOptions.type || userCommonSettings.type || themeCommonSettings.type || "pie" === widgetType && theme.type);
                            const palette = that.palette;
                            const isBar = ~type.indexOf("bar");
                            const isLine = ~type.indexOf("line");
                            const isArea = ~type.indexOf("area");
                            const isBubble = "bubble" === type;
                            let mainSeriesColor;
                            const resolveLabelsOverlapping = that.getOptions("resolveLabelsOverlapping");
                            const containerBackgroundColor = that.getOptions("containerBackgroundColor");
                            const seriesTemplate = applyParticularTheme.seriesTemplate.call(this);
                            let seriesVisibility;
                            if (isBar || isBubble) {
                                userOptions = (0, _extend.extend)(true, {}, userCommonSettings, userCommonSettings[type], userOptions);
                                seriesVisibility = userOptions.visible;
                                userCommonSettings = {
                                    type: {}
                                };
                                (0, _extend.extend)(true, userOptions, userOptions.point);
                                userOptions.visible = seriesVisibility
                            }
                            const settings = (0, _extend.extend)(true, {
                                aggregation: {}
                            }, themeCommonSettings, themeCommonSettings[type], userCommonSettings, userCommonSettings[type], userOptions);
                            settings.aggregation.enabled = "chart" === widgetType && !!settings.aggregation.enabled;
                            settings.type = type;
                            settings.widgetType = widgetType;
                            settings.containerBackgroundColor = containerBackgroundColor;
                            if ("pie" !== widgetType) {
                                mainSeriesColor = (0, _utils.extractColor)(settings.color, true) || palette.getNextColor(seriesCount)
                            } else {
                                mainSeriesColor = function(argument, index, count) {
                                    const cat = `${argument}-${index}`;
                                    if (!that._multiPieColors[cat]) {
                                        that._multiPieColors[cat] = palette.getNextColor(count)
                                    }
                                    return that._multiPieColors[cat]
                                }
                            }
                            settings.mainSeriesColor = mainSeriesColor;
                            settings.resolveLabelsOverlapping = resolveLabelsOverlapping;
                            if (settings.label && (isLine || isArea && "rangearea" !== type || "scatter" === type)) {
                                settings.label.position = "outside"
                            }
                            if (seriesTemplate) {
                                settings.nameField = seriesTemplate.nameField
                            }
                            return settings
                        },
                        animation: function(name) {
                            let userOptions = this._userOptions[name];
                            userOptions = (0, _type.isPlainObject)(userOptions) ? userOptions : (0, _type.isDefined)(userOptions) ? {
                                enabled: !!userOptions
                            } : {};
                            return mergeOptions.call(this, name, userOptions)
                        },
                        seriesTemplate() {
                            const value = mergeOptions.call(this, "seriesTemplate");
                            if (value) {
                                value.nameField = value.nameField || "series"
                            }
                            return value
                        },
                        zoomAndPan() {
                            function parseOption(option) {
                                option = (0, _utils.normalizeEnum)(option);
                                const pan = "pan" === option || "both" === option;
                                const zoom = "zoom" === option || "both" === option;
                                return {
                                    pan: pan,
                                    zoom: zoom,
                                    none: !pan && !zoom
                                }
                            }
                            const options = mergeOptions.call(this, "zoomAndPan");
                            return {
                                valueAxis: parseOption(options.valueAxis),
                                argumentAxis: parseOption(options.argumentAxis),
                                dragToZoom: !!options.dragToZoom,
                                dragBoxStyle: {
                                    class: "dxc-shutter",
                                    fill: options.dragBoxStyle.color,
                                    opacity: options.dragBoxStyle.opacity
                                },
                                panKey: options.panKey,
                                allowMouseWheel: !!options.allowMouseWheel,
                                allowTouchGestures: !!options.allowTouchGestures
                            }
                        }
                    };
                    return {
                        _themeSection: "chart",
                        ctor: function(params) {
                            this.callBase.apply(this, arguments);
                            const options = params.options || {};
                            this._userOptions = options;
                            this._mergeAxisTitleOptions = [];
                            this._multiPieColors = {};
                            this._callback = _common.noop
                        },
                        dispose: function() {
                            this.palette && this.palette.dispose();
                            this.palette = this._userOptions = this._mergedSettings = this._multiPieColors = null;
                            return this.callBase.apply(this, arguments)
                        },
                        resetPalette: function() {
                            this.palette.reset();
                            this._multiPieColors = {}
                        },
                        getOptions: function(name) {
                            return (applyParticularTheme[name] || applyParticularTheme.base).apply(this, arguments)
                        },
                        refresh: function() {
                            this._mergedSettings = {};
                            return this.callBase.apply(this, arguments)
                        },
                        _initializeTheme: function() {
                            this.callBase.apply(this, arguments);
                            this.updatePalette()
                        },
                        resetOptions: function(name) {
                            this._mergedSettings[name] = null
                        },
                        update: function(options) {
                            this._userOptions = options
                        },
                        updatePalette: function() {
                            this.palette = this.createPalette(this.getOptions("palette"), {
                                useHighlight: true,
                                extensionMode: this.getOptions("paletteExtensionMode")
                            })
                        }
                    }
                }())
            },
        7377:
            /*!**********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/components/consts.js ***!
              \**********************************************************************/
            function(module, exports) {
                exports.default = void 0;
                exports.default = {
                    events: {
                        mouseover: "mouseover",
                        mouseout: "mouseout",
                        mousemove: "mousemove",
                        touchstart: "touchstart",
                        touchmove: "touchmove",
                        touchend: "touchend",
                        mousedown: "mousedown",
                        mouseup: "mouseup",
                        click: "click",
                        selectSeries: "selectseries",
                        deselectSeries: "deselectseries",
                        selectPoint: "selectpoint",
                        deselectPoint: "deselectpoint",
                        showPointTooltip: "showpointtooltip",
                        hidePointTooltip: "hidepointtooltip"
                    },
                    states: {
                        hover: "hover",
                        normal: "normal",
                        selection: "selection",
                        normalMark: 0,
                        hoverMark: 1,
                        selectedMark: 2,
                        applyHover: "applyHover",
                        applySelected: "applySelected",
                        resetItem: "resetItem"
                    },
                    radialLabelIndent: 30,
                    pieLabelSpacing: 10,
                    pieSeriesSpacing: 4
                };
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        39104:
            /*!******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/components/data_validator.js ***!
              \******************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.validateData = function(data, groupsData, incidentOccurred, options) {
                    data = function(source, incidentOccurred) {
                        const data = [];
                        const sourceIsDefined = (0, _type.isDefined)(source);
                        let hasError = sourceIsDefined && !_isArray(source);
                        let i;
                        let ii;
                        let k;
                        let item;
                        if (sourceIsDefined && !hasError) {
                            for (i = 0, ii = source.length, k = 0; i < ii; ++i) {
                                item = source[i];
                                if ((0, _type.isObject)(item)) {
                                    data[k++] = item
                                } else if (item) {
                                    hasError = true
                                }
                            }
                        }
                        if (hasError) {
                            incidentOccurred("E2001")
                        }
                        return data
                    }(data, incidentOccurred);
                    groupsData.argumentType = groupsData.argumentAxisType = null;
                    groups = groupsData.groups, void groups.forEach((function(group) {
                        group.valueType = group.valueAxisType = null;
                        group.series.forEach((function(series) {
                            series.updateDataType({})
                        }));
                        group.valueAxis && group.valueAxis.resetTypes(VALUE_TYPE)
                    }));
                    var groups;
                    axes = groupsData.argumentAxes, void(axes && axes.forEach((function(axis) {
                        axis.resetTypes(ARGUMENT_TYPE)
                    })));
                    var axes;
                    ! function(data, groupsData, checkTypeForAllData) {
                        const groupsWithUndefinedValueType = [];
                        const groupsWithUndefinedArgumentType = [];
                        const argumentTypeGroup = groupsData.argumentOptions && axisTypeParser(groupsData.argumentOptions.argumentType);
                        let groupsIndexes;
                        groupsData.groups.forEach((function(group) {
                            if (!group.series.length) {
                                return
                            }
                            const valueTypeGroup = group.valueOptions && axisTypeParser(group.valueOptions.valueType);
                            group.valueType = valueTypeGroup;
                            groupsData.argumentType = argumentTypeGroup;
                            !valueTypeGroup && groupsWithUndefinedValueType.push(group);
                            !argumentTypeGroup && groupsWithUndefinedArgumentType.push(group)
                        }));
                        if (groupsWithUndefinedValueType.length || groupsWithUndefinedArgumentType.length) {
                            groupsIndexes = groupsWithUndefinedValueType.map((function(_, index) {
                                return index
                            }));
                            data.some((function(cell) {
                                let defineArg;
                                groupsWithUndefinedValueType.forEach((function(group, groupIndex) {
                                    if (function(group, cell) {
                                            group.series.forEach((function(series) {
                                                series.getValueFields().forEach((function(field) {
                                                    group.valueType = getType(cell[field], group.valueType)
                                                }))
                                            }));
                                            return group.valueType
                                        }(group, cell) && groupsIndexes.indexOf(groupIndex) >= 0) {
                                        groupsIndexes.splice(groupIndex, 1)
                                    }
                                }));
                                if (!defineArg) {
                                    groupsWithUndefinedArgumentType.forEach((function(group) {
                                        defineArg = function(series, cell, groupsData) {
                                            series.forEach((function(currentSeries) {
                                                groupsData.argumentType = getType(cell[currentSeries.getArgumentField()], groupsData.argumentType)
                                            }));
                                            return groupsData.argumentType
                                        }(group.series, cell, groupsData)
                                    }))
                                }
                                if (!checkTypeForAllData && defineArg && 0 === groupsIndexes.length) {
                                    return true
                                }
                            }))
                        }
                    }(data, groupsData, options.checkTypeForAllData);
                    ! function(groupsData, incidentOccurred) {
                        const argumentOptions = groupsData.argumentOptions || {};
                        const userArgumentCategories = argumentOptions && argumentOptions.categories || [];
                        const argumentAxisType = correctAxisType(groupsData.argumentType, argumentOptions.type, !!userArgumentCategories.length, incidentOccurred);
                        groupsData.groups.forEach((function(group) {
                            const valueOptions = group.valueOptions || {};
                            const valueCategories = valueOptions.categories || [];
                            const valueAxisType = correctAxisType(group.valueType, valueOptions.type, !!valueCategories.length, incidentOccurred);
                            group.series.forEach((function(series) {
                                const optionsSeries = {};
                                optionsSeries.argumentAxisType = argumentAxisType;
                                optionsSeries.valueAxisType = valueAxisType;
                                groupsData.argumentAxisType = groupsData.argumentAxisType || optionsSeries.argumentAxisType;
                                group.valueAxisType = group.valueAxisType || optionsSeries.valueAxisType;
                                optionsSeries.argumentType = groupsData.argumentType;
                                optionsSeries.valueType = group.valueType;
                                optionsSeries.showZero = valueOptions.showZero;
                                series.updateDataType(optionsSeries)
                            }));
                            group.valueAxisType = group.valueAxisType || valueAxisType;
                            if (group.valueAxis) {
                                group.valueAxis.setTypes(group.valueAxisType, group.valueType, VALUE_TYPE);
                                group.valueAxis.validate()
                            }
                        }));
                        groupsData.argumentAxisType = groupsData.argumentAxisType || argumentAxisType;
                        if (groupsData.argumentAxes) {
                            groupsData.argumentAxes.forEach((function(axis) {
                                axis.setTypes(groupsData.argumentAxisType, groupsData.argumentType, ARGUMENT_TYPE);
                                axis.validate()
                            }))
                        }
                    }(groupsData, incidentOccurred);
                    if (options.convertToAxisDataType) {
                        data = function(data, parsers) {
                            const parsedData = [];
                            let i;
                            const ii = data.length;
                            parsedData.length = ii;
                            for (i = 0; i < ii; ++i) {
                                parsedData[i] = getParsedCell(data[i], parsers)
                            }
                            return parsedData
                        }(data, function(groupsData, incidentOccurred) {
                            const argumentParser = createParserUnit(groupsData.argumentType, groupsData.argumentAxisType, incidentOccurred);
                            let sizeParser;
                            let valueParser;
                            const categoryParsers = [argumentParser];
                            const cache = {};
                            const list = [];
                            groupsData.groups.forEach((function(group, groupIndex) {
                                group.series.forEach((function(series) {
                                    valueParser = createParserUnit(group.valueType, group.valueAxisType, incidentOccurred);
                                    sizeParser = createParserUnit(NUMERIC, CONTINUOUS, incidentOccurred);
                                    cache[series.getArgumentField()] = argumentParser;
                                    series.getValueFields().forEach((function(field) {
                                        categoryParsers[groupIndex + 1] = valueParser;
                                        cache[field] = valueParser
                                    }));
                                    if (series.getSizeField()) {
                                        cache[series.getSizeField()] = sizeParser
                                    }
                                }))
                            }));
                            for (const field in cache) {
                                list.push([field, cache[field]])
                            }
                            list.length && function(groupsData, parsers) {
                                const argumentCategories = groupsData.argumentOptions && groupsData.argumentOptions.categories;
                                groupsData.groups.forEach((function(valueGroup, i) {
                                    const categories = valueGroup.valueOptions && valueGroup.valueOptions.categories;
                                    if (categories) {
                                        valueGroup.valueOptions.categories = parseCategories(categories, parsers[i + 1])
                                    }
                                }));
                                if (argumentCategories) {
                                    groupsData.argumentOptions.categories = parseCategories(argumentCategories, parsers[0])
                                }
                            }(groupsData, categoryParsers);
                            return list
                        }(groupsData, incidentOccurred))
                    }! function(data, groupsData) {
                        const firstSeries = groupsData.groups[0] && groupsData.groups[0].series[0];
                        const isPie = firstSeries && ("pie" === firstSeries.type || "doughnut" === firstSeries.type || "donut" === firstSeries.type);
                        if (!isPie) {
                            return
                        }
                        groupsData.groups.forEach((function(group) {
                            group.series.forEach((function(series) {
                                ! function(originalData, argumentField, valueField, smallValuesGrouping) {
                                    smallValuesGrouping = smallValuesGrouping || {};
                                    const mode = smallValuesGrouping.mode;
                                    const others = {};
                                    if (!mode || "none" === mode) {
                                        return
                                    }
                                    others[argumentField] = String(smallValuesGrouping.groupName || "others");
                                    others[valueField] = 0;
                                    const data = sortValues(originalData.slice(), false, (function(a) {
                                        return a[valueField]
                                    }));
                                    ! function(data, others, valueField, index) {
                                        if (index >= 0) {
                                            data.slice(index).forEach((function(cell) {
                                                if ((0, _type.isDefined)(cell[valueField])) {
                                                    others[valueField] += cell[valueField];
                                                    cell[valueField] = void 0
                                                }
                                            }))
                                        }
                                    }(data, others, valueField, "smallValueThreshold" === mode ? function(data, valueField, threshold) {
                                        let i;
                                        const ii = data.length;
                                        let value;
                                        for (i = 0; i < ii; ++i) {
                                            value = data[i][valueField];
                                            if ((0, _type.isDefined)(value) && threshold > value) {
                                                break
                                            }
                                        }
                                        return i
                                    }(data, valueField, smallValuesGrouping.threshold) : smallValuesGrouping.topCount);
                                    others[valueField] && originalData.push(others)
                                }(data, series.getArgumentField(), series.getValueFields()[0], series.getOptions().smallValuesGrouping)
                            }))
                        }))
                    }(data, groupsData);
                    const dataByArgumentFields = function(data, groupsData, options, uniqueArgumentFields) {
                        const dataByArguments = {};
                        const isDiscrete = groupsData.argumentAxisType === DISCRETE;
                        const userCategories = isDiscrete && groupsData.argumentOptions && groupsData.argumentOptions.categories;
                        let sortFunction = function(data) {
                            return data
                        };
                        const sortingMethodOption = options.sortingMethod;
                        let reSortCategories;
                        if (!userCategories && (0, _type.isFunction)(sortingMethodOption)) {
                            data = function(data, callback) {
                                return data.slice().sort(callback)
                            }(data, sortingMethodOption)
                        }
                        if (isDiscrete) {
                            groupsData.categories = function(data, uniqueArgumentFields, userCategories) {
                                const categories = userCategories ? userCategories.slice() : [];
                                const existingValues = new Set(categories.map((item => item.valueOf())));
                                uniqueArgumentFields.forEach((function(field) {
                                    data.forEach((function(item) {
                                        const dataItem = item[field];
                                        if (!(0, _type.isDefined)(dataItem)) {
                                            return
                                        }
                                        const dataItemValue = dataItem.valueOf();
                                        if (!existingValues.has(dataItemValue)) {
                                            categories.push(dataItem);
                                            existingValues.add(dataItemValue)
                                        }
                                    }))
                                }));
                                return categories
                            }(data, uniqueArgumentFields, userCategories)
                        }
                        if (userCategories || !(0, _type.isFunction)(sortingMethodOption) && groupsData.argumentType === STRING && !options._skipArgumentSorting) {
                            sortFunction = function(categories) {
                                const hash = {};
                                categories.forEach((function(value, i) {
                                    hash[value] = i
                                }));
                                return function(data, argumentField) {
                                    return sortValues(data.slice(), true, (function(a) {
                                        return hash[a[argumentField]]
                                    }))
                                }
                            }(groupsData.categories)
                        } else if (true === sortingMethodOption && groupsData.argumentType !== STRING) {
                            sortFunction = sortByArgument;
                            reSortCategories = isDiscrete
                        }
                        uniqueArgumentFields.forEach((function(field) {
                            dataByArguments[field] = sortFunction(data, field)
                        }));
                        if (reSortCategories) {
                            groupsData.categories = groupsData.categories.sort(sort)
                        }
                        return dataByArguments
                    }(data, groupsData, options, function(groupsData) {
                        const uniqueArgumentFields = [];
                        const hash = {};
                        groupsData.groups.forEach((function(group) {
                            group.series.forEach((function(series) {
                                ! function(item, collection, itemsHash) {
                                    if (!itemsHash[item]) {
                                        collection.push(item);
                                        itemsHash[item] = true
                                    }
                                }(series.getArgumentField(), uniqueArgumentFields, hash)
                            }))
                        }));
                        return uniqueArgumentFields
                    }(groupsData));
                    return dataByArgumentFields
                };
                var _type = __webpack_require__( /*! ../../core/utils/type */ 11528);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576);
                var _utils = __webpack_require__( /*! ../core/utils */ 28779);
                var _parse_utils = __webpack_require__( /*! ./parse_utils */ 60976);
                const STRING = "string";
                const NUMERIC = "numeric";
                const DATETIME = "datetime";
                const DISCRETE = "discrete";
                const SEMIDISCRETE = "semidiscrete";
                const CONTINUOUS = "continuous";
                const LOGARITHMIC = "logarithmic";
                const VALUE_TYPE = "valueType";
                const ARGUMENT_TYPE = "argumentType";
                const axisTypeParser = (0, _utils.enumParser)([STRING, NUMERIC, DATETIME]);
                const _isArray = Array.isArray;

                function sortValues(data, asc, selector) {
                    const func = asc ? function(a, b) {
                        return a - b
                    } : function(a, b) {
                        return b - a
                    };
                    data.sort((function(a, b) {
                        const valA = selector(a);
                        const valB = selector(b);
                        const aa = (0, _type.isDefined)(valA) ? 1 : 0;
                        const bb = (0, _type.isDefined)(valB) ? 1 : 0;
                        return aa && bb ? func(valA, valB) : func(aa, bb)
                    }));
                    return data
                }

                function parseCategories(categories, parser) {
                    const newArray = [];
                    categories.forEach((function(category) {
                        const parsedCategory = parser(category);
                        void 0 !== parsedCategory && newArray.push(parsedCategory)
                    }));
                    return newArray
                }

                function eigen(x) {
                    return x
                }

                function getType(unit, type) {
                    let result = type;
                    if (type === STRING || (0, _type.isString)(unit)) {
                        result = STRING
                    } else if (type === DATETIME || (0, _type.isDate)(unit)) {
                        result = DATETIME
                    } else if ((0, _type.isNumeric)(unit)) {
                        result = NUMERIC
                    }
                    return result
                }

                function correctAxisType(type, axisType, hasCategories, incidentOccurred) {
                    if (type === STRING && (axisType === CONTINUOUS || axisType === LOGARITHMIC || axisType === SEMIDISCRETE)) {
                        incidentOccurred("E2002")
                    }
                    return axisType === LOGARITHMIC ? LOGARITHMIC : hasCategories || axisType === DISCRETE || type === STRING ? DISCRETE : axisType === SEMIDISCRETE ? SEMIDISCRETE : CONTINUOUS
                }

                function createParserUnit(type, axisType, incidentOccurred) {
                    const parser = type ? (0, _parse_utils.getParser)(type) : eigen;
                    const filterInfinity = axisType !== DISCRETE ? function(x) {
                        return isFinite(x) || void 0 === x ? x : null
                    } : eigen;
                    return function(unit, field) {
                        const parseUnit = filterInfinity(parser(unit));
                        if (void 0 === parseUnit) {
                            ! function(unit, field, incidentOccurred) {
                                if (unit) {
                                    incidentOccurred(!(0, _type.isNumeric)(unit) && !(0, _type.isDate)(unit) && !(0, _type.isString)(unit) ? "E2003" : "E2004", [field])
                                }
                            }(unit, field, incidentOccurred)
                        }
                        return parseUnit
                    }
                }

                function getParsedCell(cell, parsers) {
                    let i;
                    const ii = parsers.length;
                    const obj = (0, _extend.extend)({}, cell);
                    let field;
                    let value;
                    for (i = 0; i < ii; ++i) {
                        field = parsers[i][0];
                        value = cell[field];
                        obj[field] = parsers[i][1](value, field)
                    }
                    return obj
                }

                function sort(a, b) {
                    const result = a - b;
                    if (isNaN(result)) {
                        if (!(0, _type.isDefined)(a)) {
                            return 1
                        }
                        if (!(0, _type.isDefined)(b)) {
                            return -1
                        }
                        return 0
                    }
                    return result
                }

                function sortByArgument(data, argumentField) {
                    return data.slice().sort((function(a, b) {
                        return sort(a[argumentField], b[argumentField])
                    }))
                }
            },
        67056:
            /*!**********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/components/legend.js ***!
              \**********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.plugin = exports.Legend = void 0;
                var _utils = __webpack_require__( /*! ../core/utils */ 28779);
                var _extend2 = __webpack_require__( /*! ../../core/utils/extend */ 52576);
                var _layout_element = __webpack_require__( /*! ../core/layout_element */ 77461);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 11528);
                var _title = __webpack_require__( /*! ../core/title */ 16216);
                var _object = __webpack_require__( /*! ../../core/utils/object */ 22263);
                var _common = __webpack_require__( /*! ../../core/utils/common */ 17781);
                var _renderer = __webpack_require__( /*! ../core/renderers/renderer */ 63022);
                var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 87739);
                const _Number = Number;
                const _math = Math;
                const _round = _math.round;
                const _max = _math.max;
                const _min = _math.min;
                const _ceil = _math.ceil;
                const _isDefined = _type.isDefined;
                const _isFunction = _type.isFunction;
                const _enumParser = _utils.enumParser;
                const _normalizeEnum = _utils.normalizeEnum;
                const _extend = _extend2.extend;
                const CENTER = "center";
                const RIGHT = "right";
                const LEFT = "left";
                const TOP = "top";
                const BOTTOM = "bottom";
                const parseHorizontalAlignment = _enumParser([LEFT, CENTER, RIGHT]);
                const parseVerticalAlignment = _enumParser([TOP, BOTTOM]);
                const parseOrientation = _enumParser(["vertical", "horizontal"]);
                const parseItemTextPosition = _enumParser([LEFT, RIGHT, TOP, BOTTOM]);
                const parsePosition = _enumParser(["outside", "inside"]);
                const parseItemsAlignment = _enumParser([LEFT, CENTER, RIGHT]);

                function getState(state, color, stateName) {
                    if (!state) {
                        return
                    }
                    const colorFromAction = state.fill;
                    return (0, _extend2.extend)({}, {
                        state: stateName,
                        fill: "none" === colorFromAction ? color : colorFromAction,
                        opacity: state.opacity,
                        filter: state.filter,
                        hatching: _extend({}, state.hatching, {
                            step: 5,
                            width: 2
                        })
                    })
                }

                function getAttributes(item, state, size) {
                    const attrs = (0, _renderer.processHatchingAttrs)(item, state);
                    if (attrs.fill && 0 === attrs.fill.indexOf("DevExpress")) {
                        attrs.fill = (0, _renderer.getFuncIri)(attrs.fill)
                    }
                    attrs.opacity = attrs.opacity >= 0 ? attrs.opacity : 1;
                    return (0, _extend2.extend)({}, attrs, {
                        size: size
                    })
                }

                function applyMarkerState(id, idToIndexMap, items, stateName) {
                    const item = idToIndexMap && items[idToIndexMap[id]];
                    if (item) {
                        item.renderMarker(item.states[stateName])
                    }
                }

                function parseOptions(options, textField, allowInsidePosition) {
                    if (!options) {
                        return null
                    }! function(options) {
                        let margin = options.margin;
                        if (margin >= 0) {
                            margin = _Number(options.margin);
                            margin = {
                                top: margin,
                                bottom: margin,
                                left: margin,
                                right: margin
                            }
                        } else {
                            margin = {
                                top: margin.top >= 0 ? _Number(margin.top) : 10,
                                bottom: margin.bottom >= 0 ? _Number(margin.bottom) : 10,
                                left: margin.left >= 0 ? _Number(margin.left) : 10,
                                right: margin.right >= 0 ? _Number(margin.right) : 10
                            }
                        }
                        options.margin = margin
                    }(options);
                    options.horizontalAlignment = parseHorizontalAlignment(options.horizontalAlignment, RIGHT);
                    options.verticalAlignment = parseVerticalAlignment(options.verticalAlignment, options.horizontalAlignment === CENTER ? BOTTOM : TOP);
                    options.orientation = parseOrientation(options.orientation, options.horizontalAlignment === CENTER ? "horizontal" : "vertical");
                    options.itemTextPosition = parseItemTextPosition(options.itemTextPosition, "horizontal" === options.orientation ? BOTTOM : RIGHT);
                    options.position = allowInsidePosition ? parsePosition(options.position, "outside") : "outside";
                    options.itemsAlignment = parseItemsAlignment(options.itemsAlignment, null);
                    options.hoverMode = _normalizeEnum(options.hoverMode);
                    options.customizeText = _isFunction(options.customizeText) ? options.customizeText : function() {
                        return this[textField]
                    };
                    options.customizeHint = _isFunction(options.customizeHint) ? options.customizeHint : _common.noop;
                    options._incidentOccurred = options._incidentOccurred || _common.noop;
                    return options
                }

                function createSquareMarker(renderer, size) {
                    return renderer.rect(0, 0, size, size)
                }

                function createCircleMarker(renderer, size) {
                    return renderer.circle(size / 2, size / 2, size / 2)
                }

                function inRect(rect, x, y) {
                    return x >= rect.left && x <= rect.right && y >= rect.top && y <= rect.bottom
                }

                function checkLinesSize(lines, layoutOptions, countItems, margins) {
                    const position = {
                        x: 0,
                        y: 0
                    };
                    let maxMeasureLength = 0;
                    let maxAltMeasureLength = 0;
                    let margin = 0;
                    if ("y" === layoutOptions.direction) {
                        margin = margins.top + margins.bottom
                    } else {
                        margin = margins.left + margins.right
                    }
                    lines.forEach((function(line, i) {
                        const firstItem = line[0];
                        const lineLength = line.length;
                        line.forEach((function(item, index) {
                            const offset = item.offset || layoutOptions.spacing;
                            position[layoutOptions.direction] += item[layoutOptions.measure] + (index !== lineLength - 1 ? offset : 0);
                            maxMeasureLength = _max(maxMeasureLength, position[layoutOptions.direction])
                        }));
                        position[layoutOptions.direction] = 0;
                        position[layoutOptions.altDirection] += firstItem[layoutOptions.altMeasure] + firstItem.altOffset || layoutOptions.altSpacing;
                        maxAltMeasureLength = _max(maxAltMeasureLength, position[layoutOptions.altDirection])
                    }));
                    if (maxMeasureLength + margin > layoutOptions.length) {
                        layoutOptions.countItem = function(layoutOptions, countItems) {
                            layoutOptions.altCountItem++;
                            return _ceil(countItems / layoutOptions.altCountItem)
                        }(layoutOptions, countItems);
                        return true
                    }
                }

                function getLineLength(line, layoutOptions) {
                    return line.reduce(((lineLength, item) => {
                        const offset = item.offset || layoutOptions.spacing;
                        return lineLength + item[layoutOptions.measure] + offset
                    }), 0)
                }

                function getPos(layoutOptions) {
                    switch (layoutOptions.itemTextPosition) {
                        case BOTTOM:
                            return {
                                horizontal: CENTER, vertical: TOP
                            };
                        case TOP:
                            return {
                                horizontal: CENTER, vertical: BOTTOM
                            };
                        case LEFT:
                            return {
                                horizontal: RIGHT, vertical: CENTER
                            };
                        case RIGHT:
                            return {
                                horizontal: LEFT, vertical: CENTER
                            }
                    }
                }

                function setMaxInLine(line, measure) {
                    const maxLineSize = line.reduce(((maxLineSize, item) => {
                        const itemMeasure = item ? item[measure] : maxLineSize;
                        return _max(maxLineSize, itemMeasure)
                    }), 0);
                    line.forEach((item => {
                        if (item) {
                            item[measure] = maxLineSize
                        }
                    }))
                }

                function transpose(array) {
                    const width = array.length;
                    const height = array[0].length;
                    let i;
                    let j;
                    const transposeArray = [];
                    for (i = 0; i < height; i++) {
                        transposeArray[i] = [];
                        for (j = 0; j < width; j++) {
                            transposeArray[i][j] = array[j][i]
                        }
                    }
                    return transposeArray
                }
                let getMarkerCreator = function(type) {
                    return function(type) {
                        return "circle" === _normalizeEnum(type)
                    }(type) ? createCircleMarker : createSquareMarker
                };
                let Legend = function(settings) {
                    this._renderer = settings.renderer;
                    this._legendGroup = settings.group;
                    this._backgroundClass = settings.backgroundClass;
                    this._itemGroupClass = settings.itemGroupClass;
                    this._textField = settings.textField;
                    this._getCustomizeObject = settings.getFormatObject;
                    this._titleGroupClass = settings.titleGroupClass;
                    this._allowInsidePosition = settings.allowInsidePosition;
                    this._widget = settings.widget;
                    this._updated = false
                };
                exports.Legend = Legend;
                const _Legend = Legend;
                const legendPrototype = _Legend.prototype = (0, _object.clone)(_layout_element.LayoutElement.prototype);
                (0, _extend2.extend)(legendPrototype, {
                    constructor: _Legend,
                    getOptions: function() {
                        return this._options
                    },
                    update: function() {
                        let data = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [];
                        let options = arguments.length > 1 ? arguments[1] : void 0;
                        let themeManagerTitleOptions = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};
                        const that = this;
                        options = that._options = parseOptions(options, that._textField, that._allowInsidePosition) || {};
                        const initMarkerSize = options.markerSize;
                        this._updated = true;
                        this._data = data.map((dataItem => {
                            dataItem.size = _Number(dataItem.size > 0 ? dataItem.size : initMarkerSize);
                            dataItem.marker = getAttributes(dataItem, dataItem.states.normal);
                            Object.defineProperty(dataItem.marker, "size", {
                                get: () => dataItem.size,
                                set(value) {
                                    dataItem.size = value
                                }
                            });
                            Object.defineProperty(dataItem.marker, "opacity", {
                                get: () => dataItem.states.normal.opacity,
                                set(value) {
                                    dataItem.states.normal.opacity = dataItem.states.hover.opacity = dataItem.states.selection.opacity = value
                                }
                            });
                            return dataItem
                        }));
                        if (options.customizeItems) {
                            that._data = options.customizeItems(data.slice()) || data
                        }
                        that._boundingRect = {
                            width: 0,
                            height: 0,
                            x: 0,
                            y: 0
                        };
                        if (that.isVisible()) {
                            var _that$_title;
                            null === (_that$_title = that._title) || void 0 === _that$_title || _that$_title.dispose();
                            that._title = new _title.Title({
                                renderer: that._renderer,
                                cssClass: that._titleGroupClass,
                                root: that._legendGroup
                            })
                        }
                        if (that._title) {
                            const titleOptions = options.title;
                            themeManagerTitleOptions.horizontalAlignment = function(options) {
                                if (options.horizontalAlignment === CENTER) {
                                    return CENTER
                                } else if (options.itemTextPosition === RIGHT) {
                                    return LEFT
                                } else if (options.itemTextPosition === LEFT) {
                                    return RIGHT
                                } else {
                                    return CENTER
                                }
                            }(options);
                            that._title.update(themeManagerTitleOptions, titleOptions)
                        }
                        this.erase();
                        return that
                    },
                    isVisible: function() {
                        return this._options && this._options.visible
                    },
                    draw: function(width, height) {
                        const that = this;
                        const items = that._getItemData();
                        that.erase();
                        if (!(that.isVisible() && items && items.length)) {
                            return that
                        }
                        that._insideLegendGroup = that._renderer.g().enableLinks().append(that._legendGroup);
                        that._title.changeLink(that._insideLegendGroup);
                        that._createBackground();
                        if (that._title.hasText()) {
                            const horizontalPadding = that._background ? 2 * that._options.paddingLeftRight : 0;
                            that._title.draw(width - horizontalPadding, height)
                        }
                        that._markersGroup = that._renderer.g().attr({
                            class: that._itemGroupClass
                        }).append(that._insideLegendGroup);
                        that._createItems(items);
                        that._updateElementsPosition(width, height);
                        return that
                    },
                    _measureElements: function() {
                        const options = this._options;
                        let maxBBoxHeight = 0;
                        this._items.forEach((item => {
                            const labelBBox = item.label.getBBox();
                            const markerBBox = item.marker.getBBox();
                            item.markerBBox = markerBBox;
                            item.markerSize = Math.max(markerBBox.width, markerBBox.height);
                            const bBox = function(options, markerBBox, labelBBox) {
                                let width;
                                let height;
                                switch (options.itemTextPosition) {
                                    case LEFT:
                                    case RIGHT:
                                        width = markerBBox.width + 7 + labelBBox.width;
                                        height = _max(markerBBox.height, labelBBox.height);
                                        break;
                                    case TOP:
                                    case BOTTOM:
                                        width = _max(markerBBox.width, labelBBox.width);
                                        height = markerBBox.height + 4 + labelBBox.height
                                }
                                return {
                                    width: width,
                                    height: height
                                }
                            }(options, markerBBox, labelBBox);
                            item.labelBBox = labelBBox;
                            item.bBox = bBox;
                            maxBBoxHeight = _max(maxBBoxHeight, bBox.height)
                        }));
                        if (options.equalRowHeight) {
                            this._items.forEach((item => item.bBox.height = maxBBoxHeight))
                        }
                    },
                    _updateElementsPosition: function(width, height) {
                        const that = this;
                        const options = that._options;
                        this._size = {
                            width: width,
                            height: height
                        };
                        that._measureElements();
                        that._locateElements(options);
                        that._finalUpdate(options);
                        const size = that.getLayoutOptions();
                        if (size.width > width || size.height > height) {
                            that.freeSpace()
                        }
                    },
                    _createItems: function(items) {
                        const that = this;
                        const options = that._options;
                        const renderer = that._renderer;
                        const createMarker = getMarkerCreator(options.markerShape);
                        that._markersId = {};
                        const templateFunction = !options.markerTemplate ? (dataItem, group) => {
                            const attrs = dataItem.marker;
                            createMarker(renderer, attrs.size).attr({
                                fill: attrs.fill,
                                opacity: attrs.opacity,
                                filter: attrs.filter
                            }).append({
                                element: group
                            })
                        } : options.markerTemplate;
                        const template = that._widget._getTemplate(templateFunction);
                        const markersGroup = that._markersGroup;
                        markersGroup.css((0, _utils.patchFontOptions)(options.font));
                        that._deferredItems = [];
                        that._templatesGroups = [];
                        that._items = (items || []).map(((dataItem, i) => {
                            const stateOfDataItem = dataItem.states;
                            const normalState = stateOfDataItem.normal;
                            const normalStateFill = normalState.fill;
                            dataItem.size = dataItem.marker.size;
                            const states = {
                                normal: (0, _extend2.extend)(normalState, {
                                    fill: normalStateFill || options.markerColor || options.defaultColor,
                                    state: "normal"
                                }),
                                hover: getState(stateOfDataItem.hover, normalStateFill, "hovered"),
                                selection: getState(stateOfDataItem.selection, normalStateFill, "selected")
                            };
                            dataItem.states = states;
                            const itemGroup = renderer.g().append(markersGroup);
                            const markerGroup = renderer.g().attr({
                                class: "dxl-marker"
                            }).append(itemGroup);
                            that._deferredItems[i] = new _deferred.Deferred;
                            that._templatesGroups.push(markerGroup);
                            const item = {
                                label: that._createLabel(dataItem, itemGroup),
                                marker: markerGroup,
                                renderer: renderer,
                                group: itemGroup,
                                tracker: {
                                    id: dataItem.id,
                                    argument: dataItem.argument,
                                    argumentIndex: dataItem.argumentIndex
                                },
                                states: states,
                                itemTextPosition: options.itemTextPosition,
                                markerOffset: 0,
                                bBoxes: [],
                                renderMarker(state) {
                                    dataItem.marker = getAttributes(item, state, dataItem.size);
                                    markerGroup.clear();
                                    template.render({
                                        model: dataItem,
                                        container: markerGroup.element,
                                        onRendered: that._deferredItems[i].resolve
                                    })
                                }
                            };
                            item.renderMarker(states.normal);
                            that._createHint(dataItem, itemGroup);
                            if (void 0 !== dataItem.id) {
                                that._markersId[dataItem.id] = i
                            }
                            return item
                        }))
                    },
                    getTemplatesGroups: function() {
                        return this._templatesGroups || []
                    },
                    getTemplatesDef: function() {
                        return this._deferredItems || []
                    },
                    _getItemData: function() {
                        let items = this._data || [];
                        const options = this._options || {};
                        if (options.inverted) {
                            items = items.slice().reverse()
                        }
                        return items.filter((i => i.visible))
                    },
                    _finalUpdate: function(options) {
                        this._adjustBackgroundSettings(options);
                        this._setBoundingRect(options.margin)
                    },
                    erase: function() {
                        const insideLegendGroup = this._insideLegendGroup;
                        insideLegendGroup && insideLegendGroup.dispose();
                        this._insideLegendGroup = this._markersGroup = this._x1 = this._x2 = this._y2 = this._y2 = null;
                        return this
                    },
                    _locateElements: function(locationOptions) {
                        this._moveInInitialValues();
                        this._locateRowsColumns(locationOptions)
                    },
                    _moveInInitialValues: function() {
                        this._title.hasText() && this._title.move([0, 0]);
                        this._legendGroup && this._legendGroup.move(0, 0);
                        this._background && this._background.attr({
                            x: 0,
                            y: 0,
                            width: 0,
                            height: 0
                        })
                    },
                    applySelected: function(id) {
                        applyMarkerState(id, this._markersId, this._items, "selection");
                        return this
                    },
                    applyHover: function(id) {
                        applyMarkerState(id, this._markersId, this._items, "hover");
                        return this
                    },
                    resetItem: function(id) {
                        applyMarkerState(id, this._markersId, this._items, "normal");
                        return this
                    },
                    _createLabel: function(data, group) {
                        const labelFormatObject = this._getCustomizeObject(data);
                        const options = this._options;
                        const align = function(position) {
                            switch (position) {
                                case TOP:
                                case BOTTOM:
                                    return CENTER;
                                case LEFT:
                                    return RIGHT;
                                case RIGHT:
                                    return LEFT
                            }
                        }(options.itemTextPosition);
                        const text = options.customizeText.call(labelFormatObject, labelFormatObject);
                        const fontStyle = _isDefined(data.textOpacity) ? {
                            color: options.font.color,
                            opacity: data.textOpacity
                        } : {};
                        return this._renderer.text(text, 0, 0).css((0, _utils.patchFontOptions)(fontStyle)).attr({
                            align: align,
                            class: options.cssClass
                        }).append(group)
                    },
                    _createHint: function(data, group) {
                        const labelFormatObject = this._getCustomizeObject(data);
                        const text = this._options.customizeHint.call(labelFormatObject, labelFormatObject);
                        if (_isDefined(text) && "" !== text) {
                            group.setTitle(text)
                        }
                    },
                    _createBackground: function() {
                        const that = this;
                        const isInside = "inside" === that._options.position;
                        const color = that._options.backgroundColor;
                        const fill = color || (isInside ? that._options.containerBackgroundColor : "none");
                        if (that._options.border.visible || (isInside || color) && "none" !== color) {
                            that._background = that._renderer.rect(0, 0, 0, 0).attr({
                                fill: fill,
                                class: that._backgroundClass
                            }).append(that._insideLegendGroup)
                        }
                    },
                    _locateRowsColumns: function(options) {
                        const that = this;
                        let iteration = 0;
                        const layoutOptions = that._getItemsLayoutOptions();
                        const countItems = that._items.length;
                        let lines;
                        do {
                            lines = [];
                            that._createLines(lines, layoutOptions);
                            that._alignLines(lines, layoutOptions);
                            iteration++
                        } while (checkLinesSize(lines, layoutOptions, countItems, options.margin) && iteration < countItems);
                        that._applyItemPosition(lines, layoutOptions)
                    },
                    _createLines: function(lines, layoutOptions) {
                        this._items.forEach(((item, i) => {
                            const tableLine = function(lines, layoutOptions, itemIndex) {
                                const tableLine = {};
                                if (itemIndex % layoutOptions.countItem === 0) {
                                    if (layoutOptions.markerOffset) {
                                        lines.push([], [])
                                    } else {
                                        lines.push([])
                                    }
                                }
                                if (layoutOptions.markerOffset) {
                                    tableLine.firstLine = lines[lines.length - 1];
                                    tableLine.secondLine = lines[lines.length - 2]
                                } else {
                                    tableLine.firstLine = tableLine.secondLine = lines[lines.length - 1]
                                }
                                return tableLine
                            }(lines, layoutOptions, i);
                            const labelBox = {
                                width: item.labelBBox.width,
                                height: item.labelBBox.height,
                                element: item.label,
                                bBox: item.labelBBox,
                                pos: getPos(layoutOptions),
                                itemIndex: i
                            };
                            const markerBox = {
                                width: item.markerBBox.width,
                                height: item.markerBBox.height,
                                element: item.marker,
                                pos: {
                                    horizontal: CENTER,
                                    vertical: CENTER
                                },
                                bBox: {
                                    width: item.markerBBox.width,
                                    height: item.markerBBox.height,
                                    x: item.markerBBox.x,
                                    y: item.markerBBox.y
                                },
                                itemIndex: i
                            };
                            let firstItem;
                            let secondItem;
                            const offsetDirection = layoutOptions.markerOffset ? "altOffset" : "offset";
                            if (layoutOptions.inverseLabelPosition) {
                                firstItem = labelBox;
                                secondItem = markerBox
                            } else {
                                firstItem = markerBox;
                                secondItem = labelBox
                            }
                            firstItem[offsetDirection] = layoutOptions.labelOffset;
                            tableLine.secondLine.push(firstItem);
                            tableLine.firstLine.push(secondItem)
                        }))
                    },
                    _alignLines: function(lines, layoutOptions) {
                        let i;
                        let measure = layoutOptions.altMeasure;
                        lines.forEach((line => setMaxInLine(line, measure)));
                        measure = layoutOptions.measure;
                        if (layoutOptions.itemsAlignment) {
                            if (layoutOptions.markerOffset) {
                                for (i = 0; i < lines.length;) {
                                    transpose([lines[i++], lines[i++]]).forEach(processLine)
                                }
                            }
                        } else {
                            transpose(lines).forEach(processLine)
                        }

                        function processLine(line) {
                            setMaxInLine(line, measure)
                        }
                    },
                    _applyItemPosition: function(lines, layoutOptions) {
                        const that = this;
                        const position = {
                            x: 0,
                            y: 0
                        };
                        const maxLineLength = function(lines, layoutOptions) {
                            return lines.reduce(((maxLineLength, line) => _max(maxLineLength, getLineLength(line, layoutOptions))), 0)
                        }(lines, layoutOptions);
                        lines.forEach((line => {
                            const firstItem = line[0];
                            const altOffset = firstItem.altOffset || layoutOptions.altSpacing;
                            position[layoutOptions.direction] = function(line, layoutOptions, maxLineLength) {
                                const lineLength = getLineLength(line, layoutOptions);
                                let initPosition;
                                switch (layoutOptions.itemsAlignment) {
                                    case RIGHT:
                                        initPosition = maxLineLength - lineLength;
                                        break;
                                    case CENTER:
                                        initPosition = (maxLineLength - lineLength) / 2;
                                        break;
                                    default:
                                        initPosition = 0
                                }
                                return initPosition
                            }(line, layoutOptions, maxLineLength);
                            line.forEach((item => {
                                const offset = item.offset || layoutOptions.spacing;
                                const wrap = new _layout_element.WrapperLayoutElement(item.element, item.bBox);
                                const itemBBoxOptions = {
                                    x: position.x,
                                    y: position.y,
                                    width: item.width,
                                    height: item.height
                                };
                                const itemBBox = new _layout_element.WrapperLayoutElement(null, itemBBoxOptions);
                                const itemLegend = that._items[item.itemIndex];
                                wrap.position({
                                    of: itemBBox,
                                    my: item.pos,
                                    at: item.pos
                                });
                                itemLegend.bBoxes.push(itemBBox);
                                position[layoutOptions.direction] += item[layoutOptions.measure] + offset
                            }));
                            position[layoutOptions.altDirection] += firstItem[layoutOptions.altMeasure] + altOffset
                        }));
                        this._items.forEach((item => {
                            const itemBBox = function(markerBBox, labelBBox) {
                                const bBox = {};
                                bBox.left = _min(markerBBox.x, labelBBox.x);
                                bBox.top = _min(markerBBox.y, labelBBox.y);
                                bBox.right = _max(markerBBox.x + markerBBox.width, labelBBox.x + labelBBox.width);
                                bBox.bottom = _max(markerBBox.y + markerBBox.height, labelBBox.y + labelBBox.height);
                                return bBox
                            }(item.bBoxes[0].getLayoutOptions(), item.bBoxes[1].getLayoutOptions());
                            const horizontal = that._options.columnItemSpacing / 2;
                            const vertical = that._options.rowItemSpacing / 2;
                            item.tracker.left = itemBBox.left - horizontal;
                            item.tracker.right = itemBBox.right + horizontal;
                            item.tracker.top = itemBBox.top - vertical;
                            item.tracker.bottom = itemBBox.bottom + vertical
                        }))
                    },
                    _getItemsLayoutOptions: function() {
                        const that = this;
                        const options = that._options;
                        const orientation = options.orientation;
                        const layoutOptions = {
                            itemsAlignment: options.itemsAlignment,
                            orientation: options.orientation
                        };
                        const width = that._size.width - (that._background ? 2 * options.paddingLeftRight : 0);
                        const height = that._size.height - (that._background ? 2 * options.paddingTopBottom : 0);
                        if ("horizontal" === orientation) {
                            layoutOptions.length = width;
                            layoutOptions.spacing = options.columnItemSpacing;
                            layoutOptions.direction = "x";
                            layoutOptions.measure = "width";
                            layoutOptions.altMeasure = "height";
                            layoutOptions.altDirection = "y";
                            layoutOptions.altSpacing = options.rowItemSpacing;
                            layoutOptions.countItem = options.columnCount;
                            layoutOptions.altCountItem = options.rowCount;
                            layoutOptions.marginTextLabel = 4;
                            layoutOptions.labelOffset = 7;
                            if (options.itemTextPosition === BOTTOM || options.itemTextPosition === TOP) {
                                layoutOptions.labelOffset = 4;
                                layoutOptions.markerOffset = true
                            }
                        } else {
                            layoutOptions.length = height;
                            layoutOptions.spacing = options.rowItemSpacing;
                            layoutOptions.direction = "y";
                            layoutOptions.measure = "height";
                            layoutOptions.altMeasure = "width";
                            layoutOptions.altDirection = "x";
                            layoutOptions.altSpacing = options.columnItemSpacing;
                            layoutOptions.countItem = options.rowCount;
                            layoutOptions.altCountItem = options.columnCount;
                            layoutOptions.marginTextLabel = 7;
                            layoutOptions.labelOffset = 4;
                            if (options.itemTextPosition === RIGHT || options.itemTextPosition === LEFT) {
                                layoutOptions.labelOffset = 7;
                                layoutOptions.markerOffset = true
                            }
                        }
                        if (!layoutOptions.countItem) {
                            if (layoutOptions.altCountItem) {
                                layoutOptions.countItem = _ceil(that._items.length / layoutOptions.altCountItem)
                            } else {
                                layoutOptions.countItem = that._items.length
                            }
                        }
                        if (options.itemTextPosition === TOP || options.itemTextPosition === LEFT) {
                            layoutOptions.inverseLabelPosition = true
                        }
                        layoutOptions.itemTextPosition = options.itemTextPosition;
                        layoutOptions.altCountItem = layoutOptions.altCountItem || _ceil(that._items.length / layoutOptions.countItem);
                        return layoutOptions
                    },
                    _adjustBackgroundSettings: function(locationOptions) {
                        if (!this._background) {
                            return
                        }
                        const border = locationOptions.border;
                        const legendBox = this._calculateTotalBox();
                        const backgroundSettings = {
                            x: _round(legendBox.x - locationOptions.paddingLeftRight),
                            y: _round(legendBox.y - locationOptions.paddingTopBottom),
                            width: _round(legendBox.width) + 2 * locationOptions.paddingLeftRight,
                            height: _round(legendBox.height),
                            opacity: locationOptions.backgroundOpacity
                        };
                        if (border.visible && border.width && border.color && "none" !== border.color) {
                            backgroundSettings["stroke-width"] = border.width;
                            backgroundSettings.stroke = border.color;
                            backgroundSettings["stroke-opacity"] = border.opacity;
                            backgroundSettings.dashStyle = border.dashStyle;
                            backgroundSettings.rx = border.cornerRadius || 0;
                            backgroundSettings.ry = border.cornerRadius || 0
                        }
                        this._background.attr(backgroundSettings)
                    },
                    _setBoundingRect: function(margin) {
                        if (!this._insideLegendGroup) {
                            return
                        }
                        const box = this._calculateTotalBox();
                        box.height += margin.top + margin.bottom;
                        box.widthWithoutMargins = box.width;
                        box.width += margin.left + margin.right;
                        box.x -= margin.left;
                        box.y -= margin.top;
                        this._boundingRect = box
                    },
                    _calculateTotalBox: function() {
                        const markerBox = this._markersGroup.getBBox();
                        const titleBox = this._title.getCorrectedLayoutOptions();
                        const box = this._insideLegendGroup.getBBox();
                        const verticalPadding = this._background ? 2 * this._options.paddingTopBottom : 0;
                        box.height = markerBox.height + titleBox.height + verticalPadding;
                        titleBox.width > box.width && (box.width = titleBox.width);
                        return box
                    },
                    getActionCallback: function(point) {
                        const that = this;
                        if (that._options.visible) {
                            return function(act) {
                                that[act](point.index)
                            }
                        } else {
                            return _common.noop
                        }
                    },
                    getLayoutOptions: function() {
                        const options = this._options;
                        const boundingRect = this._insideLegendGroup ? this._boundingRect : {
                            width: 0,
                            height: 0,
                            x: 0,
                            y: 0
                        };
                        if (options) {
                            boundingRect.verticalAlignment = options.verticalAlignment;
                            boundingRect.horizontalAlignment = options.horizontalAlignment;
                            if ("horizontal" === options.orientation) {
                                boundingRect.cutLayoutSide = options.verticalAlignment;
                                boundingRect.cutSide = "vertical"
                            } else if (options.horizontalAlignment === CENTER) {
                                boundingRect.cutLayoutSide = options.verticalAlignment;
                                boundingRect.cutSide = "vertical"
                            } else {
                                boundingRect.cutLayoutSide = options.horizontalAlignment;
                                boundingRect.cutSide = "horizontal"
                            }
                            boundingRect.position = {
                                horizontal: options.horizontalAlignment,
                                vertical: options.verticalAlignment
                            };
                            return boundingRect
                        }
                        return null
                    },
                    shift: function(x, y) {
                        const that = this;
                        let box = {};
                        if (that._insideLegendGroup) {
                            that._insideLegendGroup.attr({
                                translateX: x - that._boundingRect.x,
                                translateY: y - that._boundingRect.y
                            })
                        }
                        that._title && that._shiftTitle(that._boundingRect.widthWithoutMargins);
                        that._markersGroup && that._shiftMarkers();
                        if (that._insideLegendGroup) {
                            box = that._legendGroup.getBBox()
                        }
                        that._x1 = box.x;
                        that._y1 = box.y;
                        that._x2 = box.x + box.width;
                        that._y2 = box.y + box.height;
                        return that
                    },
                    _shiftTitle: function(boxWidth) {
                        const that = this;
                        const title = that._title;
                        const titleBox = title.getCorrectedLayoutOptions();
                        if (!titleBox || !title.hasText()) {
                            return
                        }
                        const width = boxWidth - (that._background ? 2 * that._options.paddingLeftRight : 0);
                        const titleOptions = title.getOptions();
                        let titleY = titleBox.y + titleOptions.margin.top;
                        let titleX = 0;
                        if (titleOptions.verticalAlignment === BOTTOM && that._markersGroup) {
                            titleY += that._markersGroup.getBBox().height
                        }
                        if (titleOptions.horizontalAlignment === RIGHT) {
                            titleX = width - titleBox.width
                        } else if (titleOptions.horizontalAlignment === CENTER) {
                            titleX = (width - titleBox.width) / 2
                        }
                        title.shift(titleX, titleY)
                    },
                    _shiftMarkers: function() {
                        const titleBox = this._title.getLayoutOptions();
                        const markerBox = this._markersGroup.getBBox();
                        const titleOptions = this._title.getOptions() || {};
                        let center = 0;
                        let y = 0;
                        if (titleBox.width > markerBox.width && this._options.horizontalAlignment === CENTER) {
                            center = titleBox.width / 2 - markerBox.width / 2
                        }
                        if (titleOptions.verticalAlignment === TOP) {
                            y = titleBox.height
                        }
                        if (0 !== center || 0 !== y) {
                            this._markersGroup.attr({
                                translateX: center,
                                translateY: y
                            });
                            this._items.forEach((item => {
                                item.tracker.left += center;
                                item.tracker.right += center;
                                item.tracker.top += y;
                                item.tracker.bottom += y
                            }))
                        }
                    },
                    getPosition: function() {
                        return this._options.position
                    },
                    coordsIn: function(x, y) {
                        return x >= this._x1 && x <= this._x2 && y >= this._y1 && y <= this._y2
                    },
                    getItemByCoord: function(x, y) {
                        const items = this._items;
                        const legendGroup = this._insideLegendGroup;
                        x -= legendGroup.attr("translateX");
                        y -= legendGroup.attr("translateY");
                        for (let i = 0; i < items.length; i++) {
                            if (inRect(items[i].tracker, x, y)) {
                                return items[i].tracker
                            }
                        }
                        return null
                    },
                    dispose: function() {
                        this._title && this._title.dispose();
                        this._legendGroup = this._insideLegendGroup = this._title = this._renderer = this._options = this._data = this._items = null;
                        return this
                    },
                    layoutOptions: function() {
                        if (!this.isVisible()) {
                            return null
                        }
                        const pos = this.getLayoutOptions();
                        return {
                            horizontalAlignment: this._options.horizontalAlignment,
                            verticalAlignment: this._options.verticalAlignment,
                            side: pos.cutSide,
                            priority: 1,
                            position: this.getPosition()
                        }
                    },
                    measure: function(size) {
                        if (this._updated || !this._insideLegendGroup) {
                            this.draw(size[0], size[1]);
                            this._updated = false
                        } else {
                            this._items.forEach((item => {
                                item.bBoxes = []
                            }));
                            this._updateElementsPosition(size[0], size[1])
                        }
                        const rect = this.getLayoutOptions();
                        return [rect.width, rect.height]
                    },
                    move: function(rect) {
                        this.shift(rect[0], rect[1])
                    },
                    freeSpace: function() {
                        this._options._incidentOccurred("W2104");
                        this.erase()
                    }
                });
                exports.plugin = {
                    name: "legend",
                    init: function() {
                        const group = this._renderer.g().attr({
                            class: this._rootClassPrefix + "-legend"
                        }).enableLinks().append(this._renderer.root);
                        this._legend = new Legend({
                            renderer: this._renderer,
                            group: group,
                            widget: this,
                            itemGroupClass: this._rootClassPrefix + "-item",
                            titleGroupClass: this._rootClassPrefix + "-title",
                            textField: "text",
                            getFormatObject: function(data) {
                                return {
                                    item: data.item,
                                    text: data.text
                                }
                            }
                        });
                        this._layout.add(this._legend)
                    },
                    extenders: {
                        _applyTilesAppearance: function() {
                            const that = this;
                            this._items.forEach((function(item) {
                                that._applyLegendItemStyle(item.id, item.getState())
                            }))
                        },
                        _buildNodes: function() {
                            this._createLegendItems()
                        }
                    },
                    members: {
                        _applyLegendItemStyle: function(id, state) {
                            const legend = this._legend;
                            switch (state) {
                                case "hover":
                                    legend.applyHover(id);
                                    break;
                                case "selection":
                                    legend.applySelected(id);
                                    break;
                                default:
                                    legend.resetItem(id)
                            }
                        },
                        _createLegendItems: function() {
                            if (this._legend.update(this._getLegendData(), this._getOption("legend"), this._themeManager.theme("legend").title)) {
                                this._requestChange(["LAYOUT"])
                            }
                        }
                    },
                    dispose: function() {
                        this._legend.dispose()
                    },
                    customize: function(constructor) {
                        constructor.prototype._proxyData.push((function(x, y) {
                            if (this._legend.coordsIn(x, y)) {
                                const item = this._legend.getItemByCoord(x, y);
                                if (item) {
                                    return {
                                        id: item.id,
                                        type: "legend"
                                    }
                                }
                            }
                        }));
                        constructor.addChange({
                            code: "LEGEND",
                            handler: function() {
                                this._createLegendItems()
                            },
                            isThemeDependent: true,
                            option: "legend",
                            isOptionChange: true
                        })
                    }
                }
            },
        60976:
            /*!***************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/components/parse_utils.js ***!
              \***************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.correctValueType = correctValueType;
                exports.getParser = void 0;
                var _common = __webpack_require__( /*! ../../core/utils/common */ 17781);
                var _date_serialization = (e = __webpack_require__( /*! ../../core/utils/date_serialization */ 71051), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                var _type = __webpack_require__( /*! ../../core/utils/type */ 11528);
                const parsers = {
                    string: function(val) {
                        return (0, _type.isDefined)(val) ? "" + val : val
                    },
                    numeric: function(val) {
                        if (!(0, _type.isDefined)(val)) {
                            return val
                        }
                        let parsedVal = Number(val);
                        if (isNaN(parsedVal)) {
                            parsedVal = void 0
                        }
                        return parsedVal
                    },
                    datetime: function(val) {
                        if (!(0, _type.isDefined)(val)) {
                            return val
                        }
                        let parsedVal;
                        const numVal = Number(val);
                        if (!isNaN(numVal)) {
                            parsedVal = new Date(numVal)
                        } else {
                            parsedVal = _date_serialization.default.deserializeDate(val)
                        }
                        if (isNaN(Number(parsedVal))) {
                            parsedVal = void 0
                        }
                        return parsedVal
                    }
                };

                function correctValueType(type) {
                    return "numeric" === type || "datetime" === type || "string" === type ? type : ""
                }
                exports.getParser = function(valueType) {
                    return parsers[correctValueType(valueType)] || _common.noop
                }
            },
        16197:
            /*!***********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/components/tracker.js ***!
              \***********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.Tracker = Tracker;
                var _index = __webpack_require__( /*! ../../common/core/events/utils/index */ 98834);
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../core/dom_adapter */ 64960));
                var _click = __webpack_require__( /*! ../../common/core/events/click */ 64044);
                var _pointer = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/pointer */ 89797));
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/core/events_engine */ 92774));

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const downPointerEventName = _pointer.default.down;
                const movePointerEventName = _pointer.default.move;

                function Tracker(parameters) {
                    this._initHandlers(parameters)
                }
                Tracker.prototype = {
                    constructor: Tracker,
                    _initHandlers: function(parameters) {
                        const document = _dom_adapter.default.getDocument();
                        parameters.getCoords = function(e) {
                            const data = (0, _index.eventData)(e);
                            const offset = parameters.widget._renderer.getRootOffset();
                            return [data.x - offset.left, data.y - offset.top]
                        };
                        parameters.root.on(_click.name, clickHandler);
                        parameters.root.on(downPointerEventName, downHandler);
                        _events_engine.default.on(document, downPointerEventName, downHandler);
                        _events_engine.default.on(document, movePointerEventName, moveHandler);
                        this._disposeHandlers = function() {
                            parameters.root.off(_click.name, clickHandler);
                            parameters.root.off(downPointerEventName, downHandler);
                            _events_engine.default.off(document, downPointerEventName, downHandler);
                            _events_engine.default.off(document, movePointerEventName, moveHandler)
                        };

                        function clickHandler(e) {
                            ! function(e, params) {
                                const id = params.getData(e);
                                if (id >= 0) {
                                    params.click({
                                        node: params.getNode(id),
                                        coords: params.getCoords(e),
                                        event: e
                                    })
                                }
                            }(e, parameters)
                        }
                        let isRootDown = false;

                        function downHandler(e) {
                            if (isRootDown) {
                                isRootDown = false
                            } else {
                                if (void 0 !== parameters.getData(e)) {
                                    isRootDown = true
                                }
                                moveHandler(e)
                            }
                        }

                        function moveHandler(e) {
                            ! function(e, params) {
                                const id = params.getData(e);
                                if (id >= 0) {
                                    params.getNode(id).setHover()
                                } else {
                                    params.widget.clearHover()
                                }
                            }(e, parameters);
                            parameters.widget._getOption("tooltip").enabled && function(e, params) {
                                const id = params.getData(e, true);
                                let coords;
                                if (id >= 0) {
                                    coords = (0, _index.eventData)(e);
                                    params.getNode(id).showTooltip([coords.x, coords.y])
                                } else {
                                    params.widget.hideTooltip()
                                }
                            }(e, parameters)
                        }
                    },
                    dispose: function() {
                        this._disposeHandlers()
                    }
                }
            },
        97808:
            /*!*********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/core/annotations.js ***!
              \*********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.plugins = exports.createAnnotations = void 0;
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../core/dom_adapter */ 64960));
                var _type = __webpack_require__( /*! ../../core/utils/type */ 11528);
                var _tooltip = __webpack_require__( /*! ../core/tooltip */ 23277);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576);
                var _utils = __webpack_require__( /*! ./utils */ 28779);
                var _plaque = __webpack_require__( /*! ./plaque */ 87040);
                var _pointer = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/pointer */ 89797));
                var _drag = __webpack_require__( /*! ../../common/core/events/drag */ 59144);
                var _index = __webpack_require__( /*! ../../common/core/events/utils/index */ 98834);
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/core/events_engine */ 92774));

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const getDocument = _dom_adapter.default.getDocument;
                const POINTER_ACTION = (0, _index.addNamespace)([_pointer.default.down, _pointer.default.move], "annotations");
                const POINTER_UP_EVENT_NAME = (0, _index.addNamespace)(_pointer.default.up, "annotations");
                const DRAG_START_EVENT_NAME = _drag.start + ".annotations";
                const DRAG_EVENT_NAME = _drag.move + ".annotations";
                const DRAG_END_EVENT_NAME = _drag.end + ".annotations";

                function getImageObject(image) {
                    return "string" === typeof image ? {
                        url: image
                    } : image
                }
                let createAnnotations = function(widget, items) {
                    let commonAnnotationSettings = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};
                    let customizeAnnotation = arguments.length > 3 ? arguments[3] : void 0;
                    let pullOptions = arguments.length > 4 ? arguments[4] : void 0;
                    const commonImageOptions = getImageObject(commonAnnotationSettings.image);
                    return items.reduce(((arr, item) => {
                        const currentImageOptions = getImageObject(item.image);
                        const customizedItem = (0, _type.isFunction)(customizeAnnotation) ? customizeAnnotation(item) : {};
                        if (customizedItem) {
                            customizedItem.image = getImageObject(customizedItem.image)
                        }
                        const options = (0, _extend.extend)(true, {}, commonAnnotationSettings, item, {
                            image: commonImageOptions
                        }, {
                            image: currentImageOptions
                        }, customizedItem);
                        const templateFunction = function(options, widget) {
                            let template;
                            if ("text" === options.type) {
                                template = function(item, groupElement) {
                                    const text = widget._renderer.text(item.text).attr({
                                        class: item.cssClass
                                    }).append({
                                        element: groupElement
                                    });
                                    if (item.width > 0 || item.height > 0) {
                                        text.setMaxSize(item.width, item.height, {
                                            wordWrap: item.wordWrap,
                                            textOverflow: item.textOverflow
                                        })
                                    }
                                }
                            } else if ("image" === options.type) {
                                template = function(item, groupElement) {
                                    const {
                                        width: width,
                                        height: height,
                                        url: url,
                                        location: location
                                    } = item.image || {};
                                    const {
                                        width: outerWidth,
                                        height: outerHeight
                                    } = item;
                                    const imageWidth = outerWidth > 0 ? Math.min(width, outerWidth) : width;
                                    const imageHeight = outerHeight > 0 ? Math.min(height, outerHeight) : height;
                                    widget._renderer.image(0, 0, imageWidth, imageHeight, url, location || "center").append({
                                        element: groupElement
                                    })
                                }
                            } else if ("custom" === options.type) {
                                template = options.template
                            }
                            return template
                        }(options, widget);
                        const annotation = templateFunction && (0, _extend.extend)(true, pullOptions(options), function(options, contentTemplate) {
                            return {
                                draw: function(widget, group) {
                                    const annotationGroup = widget._renderer.g().append(group).css((0, _utils.patchFontOptions)(options.font));
                                    if (this.plaque) {
                                        this.plaque.clear()
                                    }
                                    this.plaque = new _plaque.Plaque((0, _extend.extend)(true, {}, options, {
                                        cornerRadius: (options.border || {}).cornerRadius
                                    }), widget, annotationGroup, contentTemplate, widget._isAnnotationBounded(options));
                                    this.plaque.draw(widget._getAnnotationCoords(this));
                                    if (options.allowDragging) {
                                        annotationGroup.on(DRAG_START_EVENT_NAME, {
                                            immediate: true
                                        }, (e => {
                                            this._dragOffsetX = this.plaque.x - e.pageX;
                                            this._dragOffsetY = this.plaque.y - e.pageY
                                        })).on(DRAG_EVENT_NAME, (e => {
                                            this.plaque.move(e.pageX + this._dragOffsetX, e.pageY + this._dragOffsetY)
                                        })).on(DRAG_END_EVENT_NAME, (e => {
                                            this.offsetX = (this.offsetX || 0) + e.offset.x;
                                            this.offsetY = (this.offsetY || 0) + e.offset.y
                                        }))
                                    }
                                },
                                hitTest(x, y) {
                                    return this.plaque.hitTest(x, y)
                                },
                                showTooltip(tooltip, _ref) {
                                    let {
                                        x: x,
                                        y: y
                                    } = _ref;
                                    const that = this;
                                    const options = that.options;
                                    if (tooltip.annotation !== that) {
                                        tooltip.setTemplate(options.tooltipTemplate);
                                        const callback = result => {
                                            result && (tooltip.annotation = that)
                                        };
                                        callback(tooltip.show(options, {
                                            x: x,
                                            y: y
                                        }, {
                                            target: options
                                        }, options.customizeTooltip, callback))
                                    } else if (!tooltip.isCursorOnTooltip(x, y)) {
                                        tooltip.move(x, y)
                                    }
                                }
                            }
                        }(options, widget._getTemplate(templateFunction)));
                        annotation && arr.push(annotation);
                        return arr
                    }), [])
                };
                exports.createAnnotations = createAnnotations;
                const chartPlugin = {
                    name: "annotations_chart",
                    init() {},
                    dispose() {},
                    members: {
                        _getAnnotationCoords(annotation) {
                            var _axis, _axis2;
                            const coords = {
                                offsetX: annotation.offsetX,
                                offsetY: annotation.offsetY
                            };
                            const argCoordName = this._options.silent("rotated") ? "y" : "x";
                            const valCoordName = this._options.silent("rotated") ? "x" : "y";
                            const argAxis = this.getArgumentAxis();
                            const argument = argAxis.validateUnit(annotation.argument);
                            let axis = this.getValueAxis(annotation.axis);
                            let series;
                            let pane = null === (_axis = axis) || void 0 === _axis ? void 0 : _axis.pane;
                            if (annotation.series) {
                                var _series;
                                series = this.series.filter((s => s.name === annotation.series))[0];
                                axis = null === (_series = series) || void 0 === _series ? void 0 : _series.getValueAxis();
                                (0, _type.isDefined)(axis) && (pane = axis.pane)
                            }
                            if ((0, _type.isDefined)(argument)) {
                                if (series) {
                                    const center = series.getPointCenterByArg(argument);
                                    center && (coords[argCoordName] = center[argCoordName])
                                } else {
                                    coords[argCoordName] = argAxis.getTranslator().translate(argument)
                                }!(0, _type.isDefined)(pane) && (pane = argAxis.pane)
                            }
                            const value = null === (_axis2 = axis) || void 0 === _axis2 ? void 0 : _axis2.validateUnit(annotation.value);
                            if ((0, _type.isDefined)(value)) {
                                var _axis3;
                                coords[valCoordName] = null === (_axis3 = axis) || void 0 === _axis3 ? void 0 : _axis3.getTranslator().translate(value);
                                !(0, _type.isDefined)(pane) && (0, _type.isDefined)(axis) && (pane = axis.pane)
                            }
                            coords.canvas = this._getCanvasForPane(pane);
                            if ((0, _type.isDefined)(coords[argCoordName]) && !(0, _type.isDefined)(value)) {
                                var _series2;
                                if (!(0, _type.isDefined)(axis) && !(0, _type.isDefined)(series)) {
                                    coords[valCoordName] = argAxis.getAxisPosition()
                                } else if ((0, _type.isDefined)(axis) && !(0, _type.isDefined)(series)) {
                                    coords[valCoordName] = this._argumentAxes.filter((a => a.pane === axis.pane))[0].getAxisPosition()
                                } else if (null !== (_series2 = series) && void 0 !== _series2 && _series2.checkSeriesViewportCoord(argAxis, coords[argCoordName])) {
                                    coords[valCoordName] = series.getSeriesPairCoord(coords[argCoordName], true)
                                }
                            }
                            if (!(0, _type.isDefined)(argument) && (0, _type.isDefined)(coords[valCoordName])) {
                                if ((0, _type.isDefined)(axis) && !(0, _type.isDefined)(series)) {
                                    coords[argCoordName] = axis.getAxisPosition()
                                } else if ((0, _type.isDefined)(series)) {
                                    if (series.checkSeriesViewportCoord(axis, coords[valCoordName])) {
                                        coords[argCoordName] = series.getSeriesPairCoord(coords[valCoordName], false)
                                    }
                                }
                            }
                            return coords
                        },
                        _annotationsPointerEventHandler(event) {
                            if (this._disposed) {
                                return
                            }
                            const originalEvent = event.originalEvent || {};
                            const touch = originalEvent.touches && originalEvent.touches[0] || {};
                            const rootOffset = this._renderer.getRootOffset();
                            const coords = {
                                x: touch.pageX || originalEvent.pageX || event.pageX,
                                y: touch.pageY || originalEvent.pageY || event.pageY
                            };
                            const annotation = this._annotations.items.filter((a => a.hitTest(coords.x - rootOffset.left, coords.y - rootOffset.top)))[0];
                            if (!annotation || !annotation.options.tooltipEnabled) {
                                this._annotations.hideTooltip();
                                return
                            }
                            this._clear();
                            if (annotation.options.allowDragging && event.type === _pointer.default.down) {
                                this._annotations._hideToolTipForDrag = true
                            }
                            if (!this._annotations._hideToolTipForDrag) {
                                annotation.showTooltip(this._annotations.tooltip, coords);
                                event.stopPropagation()
                            }
                        },
                        _isAnnotationBounded: options => (0, _type.isDefined)(options.value) || (0, _type.isDefined)(options.argument),
                        _pullOptions: options => ({
                            type: options.type,
                            name: options.name,
                            x: options.x,
                            y: options.y,
                            value: options.value,
                            argument: options.argument,
                            axis: options.axis,
                            series: options.series,
                            options: options,
                            offsetX: options.offsetX,
                            offsetY: options.offsetY
                        }),
                        _forceAnnotationRender() {
                            this._change(["FORCE_RENDER"])
                        },
                        _clear() {
                            this.hideTooltip();
                            this.clearHover()
                        }
                    }
                };
                const polarChartPlugin = {
                    name: "annotations_polar_chart",
                    init() {},
                    dispose() {},
                    members: {
                        _getAnnotationCoords(annotation) {
                            const coords = {
                                offsetX: annotation.offsetX,
                                offsetY: annotation.offsetY,
                                canvas: this._calcCanvas()
                            };
                            const argAxis = this.getArgumentAxis();
                            let argument = argAxis.validateUnit(annotation.argument);
                            const value = this.getValueAxis().validateUnit(annotation.value);
                            const radius = annotation.radius;
                            const angle = annotation.angle;
                            let pointCoords;
                            let series;
                            if (annotation.series) {
                                series = this.series.filter((s => s.name === annotation.series))[0]
                            }(0, _extend.extend)(true, coords, this.getXYFromPolar(angle, radius, argument, value));
                            if ((0, _type.isDefined)(series)) {
                                if ((0, _type.isDefined)(coords.angle) && !(0, _type.isDefined)(value) && !(0, _type.isDefined)(radius)) {
                                    if (!(0, _type.isDefined)(argument)) {
                                        argument = argAxis.getTranslator().from(isFinite(angle) ? this.getActualAngle(angle) : coords.angle)
                                    }
                                    pointCoords = series.getSeriesPairCoord({
                                        argument: argument,
                                        angle: -coords.angle
                                    }, true)
                                } else if ((0, _type.isDefined)(coords.radius) && !(0, _type.isDefined)(argument) && !(0, _type.isDefined)(angle)) {
                                    pointCoords = series.getSeriesPairCoord({
                                        radius: coords.radius
                                    }, false)
                                }
                                if ((0, _type.isDefined)(pointCoords)) {
                                    coords.x = pointCoords.x;
                                    coords.y = pointCoords.y
                                }
                            }
                            if (annotation.series && !(0, _type.isDefined)(pointCoords)) {
                                coords.x = coords.y = void 0
                            }
                            return coords
                        },
                        _annotationsPointerEventHandler: chartPlugin.members._annotationsPointerEventHandler,
                        _isAnnotationBounded: chartPlugin.members._isAnnotationBounded,
                        _pullOptions(options) {
                            const polarOptions = (0, _extend.extend)({}, {
                                radius: options.radius,
                                angle: options.angle
                            }, chartPlugin.members._pullOptions(options));
                            delete polarOptions.axis;
                            return polarOptions
                        },
                        _forceAnnotationRender: chartPlugin.members._forceAnnotationRender,
                        _clear: chartPlugin.members._clear
                    }
                };
                const vectorMapPlugin = {
                    name: "annotations_vector_map",
                    init() {},
                    dispose() {
                        this._annotations._offTracker();
                        this._annotations._offTracker = null
                    },
                    members: {
                        _getAnnotationCoords(annotation) {
                            const coords = {
                                offsetX: annotation.offsetX,
                                offsetY: annotation.offsetY
                            };
                            coords.canvas = this._projection.getCanvas();
                            if (annotation.coordinates) {
                                const data = this._projection.toScreenPoint(annotation.coordinates);
                                coords.x = data[0];
                                coords.y = data[1]
                            }
                            return coords
                        },
                        _annotationsPointerEventHandler: chartPlugin.members._annotationsPointerEventHandler,
                        _isAnnotationBounded: options => (0, _type.isDefined)(options.coordinates),
                        _pullOptions(options) {
                            const vectorMapOptions = (0, _extend.extend)({}, {
                                coordinates: options.coordinates
                            }, chartPlugin.members._pullOptions(options));
                            delete vectorMapOptions.axis;
                            delete vectorMapOptions.series;
                            delete vectorMapOptions.argument;
                            delete vectorMapOptions.value;
                            return vectorMapOptions
                        },
                        _forceAnnotationRender() {
                            this._change(["EXTRA_ELEMENTS"])
                        },
                        _getAnnotationStyles: () => ({
                            "text-anchor": "start"
                        }),
                        _clear() {}
                    },
                    extenders: {
                        _prepareExtraElements() {
                            const that = this;
                            const renderElements = () => {
                                that._renderExtraElements()
                            };
                            that._annotations._offTracker = that._tracker.on({
                                move: renderElements,
                                zoom: renderElements,
                                end: renderElements
                            })
                        }
                    }
                };
                const pieChartPlugin = {
                    name: "annotations_pie_chart",
                    init() {},
                    dispose() {},
                    members: {
                        _getAnnotationCoords(annotation) {
                            let series;
                            const coords = {
                                offsetX: annotation.offsetX,
                                offsetY: annotation.offsetY,
                                canvas: this._canvas
                            };
                            if (annotation.argument) {
                                if (annotation.series) {
                                    series = this.getSeriesByName(annotation.series)
                                } else {
                                    series = this.series[0]
                                }
                                const argument = series.getPointsByArg(annotation.argument)[0];
                                const {
                                    x: x,
                                    y: y
                                } = argument.getAnnotationCoords(annotation.location);
                                coords.x = x;
                                coords.y = y
                            }
                            return coords
                        },
                        _isAnnotationBounded: options => options.argument,
                        _annotationsPointerEventHandler: chartPlugin.members._annotationsPointerEventHandler,
                        _pullOptions(options) {
                            const pieChartOptions = (0, _extend.extend)({}, {
                                location: options.location
                            }, chartPlugin.members._pullOptions(options));
                            delete pieChartOptions.axis;
                            return pieChartOptions
                        },
                        _clear: chartPlugin.members._clear,
                        _forceAnnotationRender: chartPlugin.members._forceAnnotationRender
                    }
                };
                const corePlugin = {
                    name: "annotations_core",
                    init() {
                        this._annotations = {
                            items: [],
                            _hideToolTipForDrag: false,
                            tooltip: new _tooltip.Tooltip({
                                cssClass: `${this._rootClassPrefix}-annotation-tooltip`,
                                eventTrigger: this._eventTrigger,
                                widgetRoot: this.element(),
                                widget: this
                            }),
                            hideTooltip() {
                                this.tooltip.annotation = null;
                                this.tooltip.hide()
                            },
                            clearItems() {
                                this.items.forEach((i => i.plaque.clear()));
                                this.items = []
                            }
                        };
                        this._annotations.tooltip.setRendererOptions(this._getRendererOptions())
                    },
                    dispose() {
                        this._annotationsGroup.linkRemove().linkOff();
                        _events_engine.default.off(getDocument(), ".annotations");
                        this._annotationsGroup.off(".annotations");
                        this._annotations.tooltip && this._annotations.tooltip.dispose()
                    },
                    extenders: {
                        _createHtmlStructure() {
                            this._annotationsGroup = this._renderer.g().attr({
                                class: `${this._rootClassPrefix}-annotations`
                            }).css(this._getAnnotationStyles()).linkOn(this._renderer.root, "annotations").linkAppend();
                            _events_engine.default.on(getDocument(), POINTER_ACTION, (e => {
                                if (this._disposed) {
                                    return
                                }
                                if (!this._annotations.tooltip.isCursorOnTooltip(e.pageX, e.pageY)) {
                                    this._annotations.hideTooltip()
                                }
                            }));
                            _events_engine.default.on(getDocument(), POINTER_UP_EVENT_NAME, (event => {
                                this._annotations._hideToolTipForDrag = false;
                                this._annotationsPointerEventHandler(event)
                            }));
                            this._annotationsGroup.on(POINTER_ACTION, this._annotationsPointerEventHandler.bind(this))
                        },
                        _renderExtraElements() {
                            this._annotationsGroup.clear();
                            this._annotations.items.forEach((item => item.draw(this, this._annotationsGroup)))
                        },
                        _stopCurrentHandling() {
                            this._annotations.hideTooltip()
                        }
                    },
                    members: {
                        _buildAnnotations() {
                            this._annotations.clearItems();
                            const items = this._getOption("annotations", true);
                            if (!(null !== items && void 0 !== items && items.length)) {
                                return
                            }
                            this._annotations.items = createAnnotations(this, items, this._getOption("commonAnnotationSettings"), this._getOption("customizeAnnotation", true), this._pullOptions)
                        },
                        _setAnnotationTooltipOptions() {
                            const tooltipOptions = (0, _extend.extend)({}, this._getOption("tooltip"));
                            tooltipOptions.contentTemplate = tooltipOptions.customizeTooltip = void 0;
                            this._annotations.tooltip.update(tooltipOptions)
                        },
                        _getAnnotationCoords: () => ({}),
                        _pullOptions: () => ({}),
                        _getAnnotationStyles: () => ({})
                    },
                    customize(constructor) {
                        constructor.addChange({
                            code: "ANNOTATIONITEMS",
                            handler() {
                                this._requestChange(["ANNOTATIONS"])
                            },
                            isOptionChange: true,
                            option: "annotations"
                        });
                        constructor.addChange({
                            code: "ANNOTATIONSSETTINGS",
                            handler() {
                                this._requestChange(["ANNOTATIONS"])
                            },
                            isOptionChange: true,
                            option: "commonAnnotationSettings"
                        });
                        constructor.addChange({
                            code: "ANNOTATIONS",
                            handler() {
                                this._buildAnnotations();
                                this._setAnnotationTooltipOptions();
                                this._forceAnnotationRender()
                            },
                            isThemeDependent: true,
                            isOptionChange: true
                        })
                    },
                    fontFields: ["commonAnnotationSettings.font"]
                };
                exports.plugins = {
                    core: corePlugin,
                    chart: chartPlugin,
                    polarChart: polarChartPlugin,
                    vectorMap: vectorMapPlugin,
                    pieChart: pieChartPlugin
                }
            },
        71671:
            /*!****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/core/base_theme_manager.js ***!
              \****************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.BaseThemeManager = void 0;
                var _class = (e = __webpack_require__( /*! ../../core/class */ 55620), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                var _extend2 = __webpack_require__( /*! ../../core/utils/extend */ 52576);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 11528);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 21274);
                var _palette = __webpack_require__( /*! ../palette */ 9735);
                var _utils = __webpack_require__( /*! ./utils */ 28779);
                var _themes = __webpack_require__( /*! ../themes */ 84560);
                const _getTheme = _themes.getTheme;
                const _addCacheItem = _themes.addCacheItem;
                const _removeCacheItem = _themes.removeCacheItem;
                const _extend = _extend2.extend;
                const _each = _iterator.each;

                function getThemePart(theme, path) {
                    let _theme = theme;
                    path && _each(path.split("."), (function(_, pathItem) {
                        return _theme = _theme[pathItem]
                    }));
                    return _theme
                }
                exports.BaseThemeManager = _class.default.inherit({
                    ctor: function(options) {
                        this._themeSection = options.themeSection;
                        this._fontFields = options.fontFields || [];
                        _addCacheItem(this)
                    },
                    dispose: function() {
                        _removeCacheItem(this);
                        this._callback = this._theme = this._font = null;
                        return this
                    },
                    setCallback: function(callback) {
                        this._callback = callback;
                        return this
                    },
                    setTheme: function(theme, rtl) {
                        this._current = theme;
                        this._rtl = rtl;
                        return this.refresh()
                    },
                    refresh: function() {
                        const that = this;
                        const current = that._current || {};
                        let theme = _getTheme(current.name || current);
                        that._themeName = theme.name;
                        that._defaultPalette = theme.defaultPalette;
                        that._font = _extend({}, theme.font, current.font);
                        that._themeSection && _each(that._themeSection.split("."), (function(_, path) {
                            theme = _extend(true, {}, theme[path])
                        }));
                        that._theme = _extend(true, {}, theme, (0, _type.isString)(current) ? {} : current);
                        that._initializeTheme();
                        if ((0, _utils.parseScalar)(that._rtl, that._theme.rtlEnabled)) {
                            _extend(true, that._theme, that._theme._rtl)
                        }
                        that._callback();
                        return that
                    },
                    theme: function(path) {
                        return getThemePart(this._theme, path)
                    },
                    themeName: function() {
                        return this._themeName
                    },
                    createPalette: function(palette, options) {
                        return (0, _palette.createPalette)(palette, options, this._defaultPalette)
                    },
                    createDiscretePalette: function(palette, count) {
                        return (0, _palette.getDiscretePalette)(palette, count, this._defaultPalette)
                    },
                    createGradientPalette: function(palette) {
                        return (0, _palette.getGradientPalette)(palette, this._defaultPalette)
                    },
                    getAccentColor: function(palette) {
                        return (0, _palette.getAccentColor)(palette, this._defaultPalette)
                    },
                    _initializeTheme: function() {
                        const that = this;
                        _each(that._fontFields || [], (function(_, path) {
                            that._initializeFont(getThemePart(that._theme, path))
                        }))
                    },
                    _initializeFont: function(font) {
                        _extend(font, this._font, _extend({}, font))
                    }
                })
            },
        95943:
            /*!***************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/core/base_widget.utils.js ***!
              \***************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.createEventTrigger = function(eventsMap, callbackGetter) {
                    let triggers = {};
                    (0, _iterator.each)(eventsMap, (function(name, info) {
                        if (info.name) {
                            createEvent(name)
                        }
                    }));
                    let changes;
                    triggerEvent.change = function(name) {
                        const eventInfo = eventsMap[name];
                        if (eventInfo) {
                            (changes = changes || {})[name] = eventInfo
                        }
                        return !!eventInfo
                    };
                    triggerEvent.applyChanges = function() {
                        if (changes) {
                            (0, _iterator.each)(changes, (function(name, eventInfo) {
                                createEvent(eventInfo.newName || name)
                            }));
                            changes = null
                        }
                    };
                    triggerEvent.dispose = function() {
                        eventsMap = callbackGetter = triggers = null
                    };
                    return triggerEvent;

                    function createEvent(name) {
                        const eventInfo = eventsMap[name];
                        triggers[eventInfo.name] = callbackGetter(name, eventInfo.actionSettings)
                    }

                    function triggerEvent(name, arg, complete) {
                        triggers[name](arg);
                        complete && complete()
                    }
                };
                exports.createIncidentOccurred = void 0;
                exports.createResizeHandler = function(contentElement, redrawOnResize, resize) {
                    let disposeHandler;
                    const resizeManager = (resizeCallback = resize, (observe, unsubscribe) => {
                        const {
                            handler: handler,
                            dispose: dispose
                        } = function(callback, unsubscribe) {
                            let timeout;
                            const handler = function() {
                                clearTimeout(timeout);
                                timeout = setTimeout(callback, 100)
                            };
                            return {
                                handler: handler,
                                dispose() {
                                    clearTimeout(timeout);
                                    unsubscribe(handler)
                                }
                            }
                        }(resizeCallback, unsubscribe);
                        observe(handler);
                        return dispose
                    });
                    var resizeCallback;
                    if ("windowonly" === (0, _utils.normalizeEnum)(redrawOnResize)) {
                        disposeHandler = resizeManager((handler => _resize_callbacks.default.add(handler)), (handler => _resize_callbacks.default.remove(handler)))
                    } else if (true === redrawOnResize) {
                        disposeHandler = resizeManager((handler => _resize_observer.default.observe(contentElement, handler)), (() => _resize_observer.default.unobserve(contentElement)))
                    }
                    return disposeHandler
                };
                var _version = __webpack_require__( /*! ../../core/version */ 1956);
                var _string = __webpack_require__( /*! ../../core/utils/string */ 54497);
                var _errors_warnings = _interopRequireDefault(__webpack_require__( /*! ./errors_warnings */ 38355));
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 21274);
                var _resize_callbacks = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/resize_callbacks */ 63283));
                var _resize_observer = _interopRequireDefault(__webpack_require__( /*! ../../core/resize_observer */ 11787));
                var _utils = __webpack_require__( /*! ./utils */ 28779);

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const ERROR_MESSAGES = _errors_warnings.default.ERROR_MESSAGES;
                exports.createIncidentOccurred = function(widgetName, eventTrigger) {
                    return function(id, args) {
                        eventTrigger("incidentOccurred", {
                            target: {
                                id: id,
                                type: "E" === id[0] ? "error" : "warning",
                                args: args,
                                text: _string.format.apply(null, [ERROR_MESSAGES[id]].concat(args || [])),
                                widget: widgetName,
                                version: _version.version
                            }
                        })
                    }
                }
            },
        94618:
            /*!*************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/core/center_template.js ***!
              \*************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.plugins = void 0;
                var _utils = __webpack_require__( /*! ../core/utils */ 28779);
                var _common = __webpack_require__( /*! ../../core/utils/common */ 17781);
                const pieChartPlugin = {
                    name: "center_template_pie_chart",
                    init: _common.noop,
                    dispose: function() {
                        this._centerTemplateGroup.linkOff().dispose()
                    },
                    extenders: {
                        _createHtmlStructure() {
                            const patchedFontOptions = (0, _utils.patchFontOptions)(this._themeManager._font);
                            this._centerTemplateGroup = this._renderer.g().attr({
                                class: "dxc-hole-template"
                            }).linkOn(this._renderer.root, "center-template").css(patchedFontOptions).linkAppend()
                        },
                        _renderExtraElements() {
                            this._requestChange(["CENTER_TEMPLATE"])
                        }
                    },
                    members: {
                        _renderCenterTemplate() {
                            const template = this.option("centerTemplate");
                            const centerTemplateGroup = this._centerTemplateGroup.clear();
                            if (!template) {
                                return
                            }
                            centerTemplateGroup.attr({
                                visibility: "hidden"
                            });
                            const center = this._getCenter();
                            this._getTemplate(template).render({
                                model: this,
                                container: centerTemplateGroup.element,
                                onRendered: () => {
                                    const group = centerTemplateGroup;
                                    const bBox = group.getBBox();
                                    const bBoxCenterX = bBox.x + bBox.width / 2;
                                    const bBoxCenterY = bBox.y + bBox.height / 2;
                                    group.move(center.x - bBoxCenterX, center.y - bBoxCenterY);
                                    group.attr({
                                        visibility: "visible"
                                    })
                                }
                            })
                        }
                    },
                    customize(constructor) {
                        constructor.addChange({
                            code: "CENTER_TEMPLATE",
                            handler: function() {
                                this._renderCenterTemplate()
                            },
                            option: "centerTemplate"
                        })
                    }
                };
                const gaugePlugin = {
                    name: "center_template_gauge",
                    init: _common.noop,
                    dispose: pieChartPlugin.dispose,
                    extenders: {
                        _initCore() {
                            this._createCenterTemplateGroup()
                        },
                        _renderContent() {
                            const patchedFontOptions = (0, _utils.patchFontOptions)(this._themeManager._font);
                            this._centerTemplateGroup.css(patchedFontOptions);
                            this._requestChange(["CENTER_TEMPLATE"])
                        },
                        _updateExtraElements() {
                            this._requestChange(["CENTER_TEMPLATE"])
                        }
                    },
                    members: {
                        _renderCenterTemplate: pieChartPlugin.members._renderCenterTemplate,
                        _createCenterTemplateGroup() {
                            this._centerTemplateGroup = this._renderer.g().attr({
                                class: "dxg-hole-template"
                            }).linkOn(this._renderer.root, "center-template").linkAppend()
                        }
                    },
                    customize: pieChartPlugin.customize
                };
                exports.plugins = {
                    pieChart: pieChartPlugin,
                    gauge: gaugePlugin
                }
            },
        25058:
            /*!*********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/core/data_source.js ***!
              \*********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.plugin = void 0;
                var _common = __webpack_require__( /*! ../../core/utils/common */ 17781);
                var _data_helper = (e = __webpack_require__( /*! ../../data_helper */ 87755), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                const postCtor = _data_helper.default.postCtor;
                let name;
                const members = {
                    _dataSourceLoadErrorHandler: function() {
                        this._dataSourceChangedHandler()
                    },
                    _dataSourceOptions: function() {
                        return {
                            paginate: false
                        }
                    },
                    _updateDataSource: function() {
                        this._refreshDataSource();
                        if (!this.option("dataSource")) {
                            this._dataSourceChangedHandler()
                        }
                    },
                    _dataIsLoaded: function() {
                        return !this._dataSource || this._dataSource.isLoaded()
                    },
                    _dataSourceItems: function() {
                        return this._dataSource && this._dataSource.items()
                    }
                };
                for (name in _data_helper.default) {
                    if ("postCtor" === name) {
                        continue
                    }
                    members[name] = _data_helper.default[name]
                }
                exports.plugin = {
                    name: "data_source",
                    init: function() {
                        postCtor.call(this)
                    },
                    dispose: _common.noop,
                    members: members
                }
            },
        38355:
            /*!*************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/core/errors_warnings.js ***!
              \*************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _error = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/error */ 67264));
                var _errors = _interopRequireDefault(__webpack_require__( /*! ../../core/errors */ 87129));

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                exports.default = (0, _error.default)(_errors.default.ERROR_MESSAGES, {
                    E2001: "Invalid data source",
                    E2002: "Axis type and data type are incompatible",
                    E2003: 'The "{0}" data source field contains data of unsupported type',
                    E2004: 'The "{0}" data source field is inconsistent',
                    E2005: 'The value field "{0}" is absent in the data source or all its values are negative',
                    E2006: "A cycle is detected in provided data",
                    E2007: 'The value field "{0}" is absent in the data source',
                    E2008: 'The value field "{0}" must be a string',
                    E2009: 'The value field "{0}" must be a positive numeric value',
                    E2101: "Unknown series type: {0}",
                    E2102: "Ambiguity occurred between two value axes with the same name",
                    E2103: 'The "{0}" option is given an invalid value. Assign a function instead',
                    E2104: "Invalid logarithm base",
                    E2105: 'Invalid value of a "{0}"',
                    E2202: "Invalid {0} scale value",
                    E2203: "The range you are trying to set is invalid",
                    W2002: "The {0} series cannot be drawn because the {1} data field is missing",
                    W2003: "Tick interval is too small",
                    W2101: 'The "{0}" pane does not exist; the last pane is used by default',
                    W2102: 'A value axis with the "{0}" name was created automatically',
                    W2103: "The chart title was hidden due to the container size",
                    W2104: "The legend was hidden due to the container size",
                    W2105: 'The title of the "{0}" axis was hidden due to the container size',
                    W2106: 'The labels of the "{0}" axis were hidden due to the container size',
                    W2107: "The export menu was hidden due to the container size",
                    W2108: "The browser does not support exporting images to {0} format.",
                    W2301: "Invalid value range"
                });
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        74754:
            /*!****************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/core/export.js ***!
              \****************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.plugin = exports.getMarkup = exports.exportWidgets = exports.exportFromMarkup = exports.combineMarkups = exports.ExportMenu = void 0;
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576);
                var _window = __webpack_require__( /*! ../../core/utils/window */ 3104);
                var _utils = __webpack_require__( /*! ./utils */ 28779);
                var _svg = __webpack_require__( /*! ../../core/utils/svg */ 47420);
                var _exporter = __webpack_require__( /*! ../../exporter */ 73549);
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../common/core/localization/message */ 4671));
                var _type = __webpack_require__( /*! ../../core/utils/type */ 11528);
                var _themes = __webpack_require__( /*! ../themes */ 84560);
                var _hover = __webpack_require__( /*! ../../common/core/events/hover */ 638);
                var _pointer = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/pointer */ 89797));
                var _console = __webpack_require__( /*! ../../core/utils/console */ 31951);
                var _size = __webpack_require__( /*! ../../core/utils/size */ 57653);
                var _renderer = __webpack_require__( /*! ./renderers/renderer */ 63022);
                var _renderer2 = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553));

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const pointerActions = [_pointer.default.down, _pointer.default.move].join(" ");
                const ICON_COORDS = [
                    [9, 12, 26, 12, 26, 14, 9, 14],
                    [9, 17, 26, 17, 26, 19, 9, 19],
                    [9, 22, 26, 22, 26, 24, 9, 24]
                ];
                const ALLOWED_IMAGE_FORMATS = ["PNG", "JPEG", "GIF"];
                const ALLOWED_EXTRA_FORMATS = ["PDF", "SVG"];
                const GET_COLOR_REGEX = /data-backgroundcolor="([^"]*)"/;

                function getValidFormats() {
                    const imageFormats = _exporter.image.testFormats(ALLOWED_IMAGE_FORMATS);
                    return {
                        unsupported: imageFormats.unsupported,
                        supported: imageFormats.supported.concat(ALLOWED_EXTRA_FORMATS)
                    }
                }

                function validateFormat(format, incidentOccurred, validFormats) {
                    validFormats = validFormats || getValidFormats();
                    format = String(format).toUpperCase();
                    if (-1 !== validFormats.supported.indexOf(format)) {
                        return format
                    }
                    if (-1 !== validFormats.unsupported.indexOf(format)) {
                        incidentOccurred && incidentOccurred("W2108", [format])
                    }
                }

                function getCreatorFunc(format) {
                    if ("SVG" === format) {
                        return _exporter.svg.getData
                    } else if ("PDF" === format) {
                        return _exporter.pdf.getData
                    } else {
                        return _exporter.image.getData
                    }
                }

                function print(imageSrc, options) {
                    const document = (0, _window.getWindow)().document;
                    const iFrame = document.createElement("iframe");
                    iFrame.onload = function(imageSrc, options) {
                        return function() {
                            let window = this.contentWindow;
                            const img = window.document.createElement("img");
                            window.document.body.appendChild(img);
                            const widthRatio = function(iFrameBody) {
                                iFrameBody.style.width = "21cm";
                                const width = (0, _size.getWidth)(iFrameBody);
                                iFrameBody.style.width = "";
                                return width
                            }(window.document.body) / options.width;
                            if (widthRatio < 1) {
                                window.document.body.style.transform = `scale(${widthRatio})`;
                                window.document.body.style["transform-origin"] = "0 0"
                            }
                            const removeFrame = () => {
                                this.parentElement.removeChild(this)
                            };
                            img.addEventListener("load", (() => {
                                window.focus();
                                window.print()
                            }));
                            img.addEventListener("error", removeFrame);
                            window.addEventListener("afterprint", (() => {
                                setTimeout(removeFrame, 0)
                            }));
                            img.src = imageSrc
                        }
                    }(imageSrc, options);
                    iFrame.style.position = "fixed";
                    iFrame.style.width = "0";
                    iFrame.style.height = "0";
                    iFrame.style.right = "0";
                    iFrame.style.bottom = "0";
                    document.body.appendChild(iFrame)
                }

                function createMenuItem(renderer, options, settings) {
                    const itemData = {};
                    const type = settings.type;
                    const format = settings.format;
                    const attr = function(options, type, itemIndex) {
                        const x = -85;
                        const y = 40 + 30 * itemIndex;
                        const attr = {
                            rect: {
                                width: 118,
                                height: 30,
                                x: -84,
                                y: y
                            },
                            text: {
                                x: x + (options.rtl ? 105 : 15),
                                y: y + 30 - 8
                            }
                        };
                        if ("printing" === type) {
                            attr.separator = {
                                stroke: options.button.default.borderColor,
                                "stroke-width": 1,
                                cursor: "pointer",
                                sharp: "v",
                                d: "M -85 " + (y + 30 - 1) + " L 35 " + (y + 30 - 1)
                            }
                        }
                        return attr
                    }(options, type, settings.itemIndex);
                    const fontStyle = (0, _utils.patchFontOptions)(options.font);
                    fontStyle["pointer-events"] = "none";
                    const menuItem = renderer.g().attr({
                        class: "dx-export-menu-list-item"
                    });
                    itemData["export-element-type"] = type;
                    if (format) {
                        itemData["export-element-format"] = format
                    }
                    const rect = renderer.rect();
                    rect.attr(attr.rect).css({
                        cursor: "pointer",
                        "pointer-events": "all"
                    }).data(itemData);
                    rect.on(_hover.start + ".export", (() => rect.attr({
                        fill: options.button.hover.backgroundColor
                    }))).on(_hover.end + ".export", (() => rect.attr({
                        fill: null
                    })));
                    rect.append(menuItem);
                    const text = renderer.text(settings.text).css(fontStyle).attr(attr.text).append(menuItem);
                    if ("printing" === type) {
                        renderer.path(null, "line").attr(attr.separator).append(menuItem)
                    }
                    return {
                        g: menuItem,
                        rect: rect,
                        resetState: () => rect.attr({
                            fill: null
                        }),
                        fixPosition: () => {
                            const textBBox = text.getBBox();
                            text.move(attr.text.x - textBBox.x - (options.rtl ? textBBox.width : 0))
                        }
                    }
                }
                const exportFromMarkup = function(markup, options) {
                    options.format = validateFormat(options.format) || "PNG";
                    options.fileName = options.fileName || "file";
                    options.exportingAction = options.onExporting;
                    options.exportedAction = options.onExported;
                    options.fileSavingAction = options.onFileSaving;
                    options.margin = (0, _type.isDefined)(options.margin) ? options.margin : 10;
                    options.backgroundColor = (0, _type.isDefined)(options.backgroundColor) ? options.backgroundColor : function(markup) {
                        const parsedMarkup = GET_COLOR_REGEX.exec(markup);
                        return null === parsedMarkup || void 0 === parsedMarkup ? void 0 : parsedMarkup[1]
                    }(markup) || (0, _themes.getTheme)().backgroundColor;
                    (0, _exporter.export)(markup, options, getCreatorFunc(options.format))
                };
                exports.exportFromMarkup = exportFromMarkup;
                exports.getMarkup = widgets => combineMarkups(widgets).root.outerHTML;
                exports.exportWidgets = function(widgets, options) {
                    options = options || {};
                    const markupInfo = combineMarkups(widgets, {
                        gridLayout: options.gridLayout,
                        verticalAlignment: options.verticalAlignment,
                        horizontalAlignment: options.horizontalAlignment
                    });
                    options.width = markupInfo.width;
                    options.height = markupInfo.height;
                    exportFromMarkup(markupInfo.root, options)
                };
                let combineMarkups = function(widgets) {
                    let options = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
                    if (!Array.isArray(widgets)) {
                        widgets = [
                            [widgets]
                        ]
                    } else if (!Array.isArray(widgets[0])) {
                        widgets = widgets.map((item => [item]))
                    }
                    const compactView = !options.gridLayout;
                    const exportItems = widgets.reduce(((r, row, rowIndex) => {
                        const rowInfo = row.reduce(((r, item, colIndex) => {
                            const size = item.getSize();
                            const backgroundColor = item.option("backgroundColor") || (0, _themes.getTheme)(item.option("theme")).backgroundColor;
                            const node = (0, _renderer2.default)(item.element()).find("svg").get(0).cloneNode(true);
                            backgroundColor && -1 === r.backgroundColors.indexOf(backgroundColor) && r.backgroundColors.push(backgroundColor);
                            r.hOffset = r.width;
                            r.width += size.width;
                            r.height = Math.max(r.height, size.height);
                            r.itemWidth = Math.max(r.itemWidth, size.width);
                            r.items.push({
                                node: node,
                                width: size.width,
                                height: size.height,
                                c: colIndex,
                                r: rowIndex,
                                hOffset: r.hOffset
                            });
                            return r
                        }), {
                            items: [],
                            height: 0,
                            itemWidth: 0,
                            hOffset: 0,
                            width: 0,
                            backgroundColors: r.backgroundColors
                        });
                        r.rowOffsets.push(r.totalHeight);
                        r.rowHeights.push(rowInfo.height);
                        r.totalHeight += rowInfo.height;
                        r.items = r.items.concat(rowInfo.items);
                        r.itemWidth = Math.max(r.itemWidth, rowInfo.itemWidth);
                        r.maxItemLen = Math.max(r.maxItemLen, rowInfo.items.length);
                        r.totalWidth = compactView ? Math.max(r.totalWidth, rowInfo.width) : r.maxItemLen * r.itemWidth;
                        return r
                    }), {
                        items: [],
                        rowOffsets: [],
                        rowHeights: [],
                        itemWidth: 0,
                        totalHeight: 0,
                        maxItemLen: 0,
                        totalWidth: 0,
                        backgroundColors: []
                    });
                    const backgroundColor = `${1===exportItems.backgroundColors.length?exportItems.backgroundColors[0]:""}`;
                    const {
                        totalWidth: totalWidth,
                        totalHeight: totalHeight
                    } = exportItems;
                    const rootElement = function(width, height, backgroundColor, _ref) {
                        let {
                            exportItems: exportItems,
                            options: options,
                            compactView: compactView
                        } = _ref;
                        const rendererWrapper = function(width, height, backgroundColor) {
                            const rendererContainer = (0, _renderer2.default)("<div>").get(0);
                            const renderer = new _renderer.Renderer({
                                container: rendererContainer
                            });
                            renderer.resize(width, height);
                            renderer.root.element.setAttribute("data-backgroundcolor", backgroundColor);
                            return {
                                createGroup: () => renderer.g(),
                                getRootContent: () => renderer.root.element.cloneNode(true),
                                dispose() {
                                    renderer.dispose();
                                    rendererContainer.remove()
                                }
                            }
                        }(width, height, backgroundColor);
                        const getVOffset = item => {
                            const align = options.verticalAlignment;
                            const dy = exportItems.rowHeights[item.r] - item.height;
                            return exportItems.rowOffsets[item.r] + ("bottom" === align ? dy : "center" === align ? dy / 2 : 0)
                        };
                        const getHOffset = item => {
                            if (compactView) {
                                return item.hOffset
                            }
                            const align = options.horizontalAlignment;
                            const colWidth = exportItems.itemWidth;
                            const dx = colWidth - item.width;
                            return item.c * colWidth + ("right" === align ? dx : "center" === align ? dx / 2 : 0)
                        };
                        exportItems.items.forEach((item => {
                            const container = rendererWrapper.createGroup();
                            container.attr({
                                translateX: getHOffset(item),
                                translateY: getVOffset(item)
                            });
                            container.element.appendChild(item.node);
                            container.append()
                        }));
                        const result = rendererWrapper.getRootContent();
                        rendererWrapper.dispose();
                        return result
                    }(totalWidth, totalHeight, backgroundColor, {
                        options: options,
                        exportItems: exportItems,
                        compactView: compactView
                    });
                    return {
                        root: rootElement,
                        width: totalWidth,
                        height: totalHeight
                    }
                };
                exports.combineMarkups = combineMarkups;
                let ExportMenu = function(params) {
                    const renderer = this._renderer = params.renderer;
                    this._incidentOccurred = params.incidentOccurred;
                    this._exportTo = params.exportTo;
                    this._print = params.print;
                    this._shadow = renderer.shadowFilter("-50%", "-50%", "200%", "200%", 2, 6, 3);
                    this._shadow.attr({
                        opacity: .8
                    });
                    this._group = renderer.g().attr({
                        class: "dx-export-menu",
                        [_svg.HIDDEN_FOR_EXPORT]: true
                    }).linkOn(renderer.root, {
                        name: "export-menu",
                        after: "peripheral"
                    });
                    this._buttonGroup = renderer.g().attr({
                        class: "dx-export-menu-button"
                    }).append(this._group);
                    this._listGroup = renderer.g().attr({
                        class: "dx-export-menu-list"
                    }).append(this._group);
                    this._overlay = renderer.rect(-85, 39, 120, 0);
                    this._overlay.attr({
                        "stroke-width": 1,
                        cursor: "pointer",
                        rx: 4,
                        ry: 4,
                        filter: this._shadow.id
                    });
                    this._overlay.data({
                        "export-element-type": "list"
                    });
                    this.validFormats = getValidFormats();
                    this._subscribeEvents()
                };
                exports.ExportMenu = ExportMenu;
                (0, _extend.extend)(ExportMenu.prototype, {
                    getLayoutOptions() {
                        if (this._hiddenDueToLayout) {
                            return {
                                width: 0,
                                height: 0,
                                cutSide: "vertical",
                                cutLayoutSide: "top"
                            }
                        }
                        const bBox = this._buttonGroup.getBBox();
                        bBox.cutSide = "vertical";
                        bBox.cutLayoutSide = "top";
                        bBox.height += 10;
                        bBox.position = {
                            vertical: "top",
                            horizontal: "right"
                        };
                        bBox.verticalAlignment = "top";
                        bBox.horizontalAlignment = "right";
                        return bBox
                    },
                    shift(_, y) {
                        this._group.attr({
                            translateY: this._group.attr("translateY") + y
                        })
                    },
                    draw(width, height, canvas) {
                        this._group.move(width - 35 - 2 - 3 + canvas.left, Math.floor(height / 2 - 17.5));
                        const layoutOptions = this.getLayoutOptions();
                        if (layoutOptions.width > width || layoutOptions.height > height) {
                            this.freeSpace()
                        }
                        return this
                    },
                    show() {
                        this._group.linkAppend()
                    },
                    hide() {
                        this._group.linkRemove()
                    },
                    setOptions(options) {
                        this._options = options;
                        if (options.formats) {
                            options.formats = options.formats.reduce(((r, format) => {
                                format = validateFormat(format, this._incidentOccurred, this.validFormats);
                                format && r.push(format);
                                return r
                            }), [])
                        } else {
                            options.formats = this.validFormats.supported.slice()
                        }
                        options.printingEnabled = void 0 === options.printingEnabled ? true : options.printingEnabled;
                        if (options.enabled && (options.formats.length || options.printingEnabled)) {
                            this.show();
                            this._updateButton();
                            this._updateList();
                            this._hideList()
                        } else {
                            this.hide()
                        }
                    },
                    dispose() {
                        this._unsubscribeEvents();
                        this._group.linkRemove().linkOff();
                        this._group.dispose();
                        this._shadow.dispose()
                    },
                    layoutOptions() {
                        return this._options.enabled && {
                            horizontalAlignment: "right",
                            verticalAlignment: "top",
                            weak: true
                        }
                    },
                    measure() {
                        this._fillSpace();
                        const margin = this._options.button.margin;
                        return [35 + margin.left + margin.right, 35 + margin.top + margin.bottom]
                    },
                    move(rect) {
                        const margin = this._options.button.margin;
                        this._group.attr({
                            translateX: Math.round(rect[0]) + margin.left,
                            translateY: Math.round(rect[1]) + margin.top
                        })
                    },
                    _fillSpace() {
                        this._hiddenDueToLayout = false;
                        this.show()
                    },
                    freeSpace() {
                        this._incidentOccurred("W2107");
                        this._hiddenDueToLayout = true;
                        this.hide()
                    },
                    _hideList() {
                        this._listGroup.remove();
                        this._listShown = false;
                        this._setButtonState("default");
                        this._menuItems.forEach((item => item.resetState()))
                    },
                    _showList() {
                        this._listGroup.append(this._group);
                        this._listShown = true;
                        this._menuItems.forEach((item => item.fixPosition()))
                    },
                    _setButtonState(state) {
                        const style = this._options.button[state];
                        this._button.attr({
                            stroke: style.borderColor,
                            fill: style.backgroundColor
                        });
                        this._icon.attr({
                            fill: style.color
                        })
                    },
                    _subscribeEvents() {
                        this._renderer.root.on(_pointer.default.up + ".export", (e => {
                            const elementType = e.target["export-element-type"];
                            if (!elementType) {
                                if (this._button) {
                                    this._hideList()
                                }
                                return
                            }
                            if ("button" === elementType) {
                                if (this._listShown) {
                                    this._setButtonState("default");
                                    this._hideList()
                                } else {
                                    this._setButtonState("focus");
                                    this._showList()
                                }
                            } else if ("printing" === elementType) {
                                this._print();
                                this._hideList()
                            } else if ("exporting" === elementType) {
                                this._exportTo(e.target["export-element-format"]);
                                this._hideList()
                            }
                        }));
                        this._listGroup.on(pointerActions, (e => e.stopPropagation()));
                        this._buttonGroup.on(_pointer.default.enter, (() => this._setButtonState("hover")));
                        this._buttonGroup.on(_pointer.default.leave, (() => this._setButtonState(this._listShown ? "focus" : "default")));
                        this._buttonGroup.on(_pointer.default.down + ".export", (() => this._setButtonState("active")))
                    },
                    _unsubscribeEvents() {
                        this._renderer.root.off(".export");
                        this._listGroup.off();
                        this._buttonGroup.off()
                    },
                    _updateButton() {
                        const renderer = this._renderer;
                        const options = this._options;
                        const exportData = {
                            "export-element-type": "button"
                        };
                        if (!this._button) {
                            this._button = renderer.rect(0, 0, 35, 35).append(this._buttonGroup);
                            this._button.attr({
                                rx: 4,
                                ry: 4,
                                fill: options.button.default.backgroundColor,
                                stroke: options.button.default.borderColor,
                                "stroke-width": 1,
                                cursor: "pointer"
                            });
                            this._button.data(exportData);
                            this._icon = renderer.path(ICON_COORDS).append(this._buttonGroup);
                            this._icon.attr({
                                fill: options.button.default.color,
                                cursor: "pointer"
                            });
                            this._icon.data(exportData);
                            this._buttonGroup.setTitle(_message.default.format("vizExport-titleMenuText"))
                        }
                    },
                    _updateList() {
                        const options = this._options;
                        const buttonDefault = options.button.default;
                        const listGroup = this._listGroup;
                        const items = function(renderer, options) {
                            let items = [];
                            if (options.printingEnabled) {
                                items.push(createMenuItem(renderer, options, {
                                    type: "printing",
                                    text: _message.default.format("vizExport-printingButtonText"),
                                    itemIndex: items.length
                                }))
                            }
                            items = options.formats.reduce(((r, format) => {
                                r.push(createMenuItem(renderer, options, {
                                    type: "exporting",
                                    text: _message.default.getFormatter("vizExport-exportButtonText")(format),
                                    format: format,
                                    itemIndex: r.length
                                }));
                                return r
                            }), items);
                            return items
                        }(this._renderer, options);
                        this._shadow.attr({
                            color: options.shadowColor
                        });
                        this._overlay.attr({
                            height: 30 * items.length + 2,
                            fill: buttonDefault.backgroundColor,
                            stroke: buttonDefault.borderColor
                        });
                        listGroup.clear();
                        this._overlay.append(listGroup);
                        items.forEach((item => item.g.append(listGroup)));
                        this._menuItems = items
                    }
                });

                function getExportOptions(widget, exportOptions, fileName, format) {
                    if (format || exportOptions.format) {
                        format = validateFormat(format || exportOptions.format, widget._incidentOccurred)
                    }
                    const {
                        width: width,
                        height: height
                    } = widget.getSize();
                    return {
                        format: format || "PNG",
                        fileName: fileName || exportOptions.fileName || "file",
                        backgroundColor: exportOptions.backgroundColor,
                        width: width,
                        height: height,
                        margin: exportOptions.margin,
                        svgToCanvas: exportOptions.svgToCanvas,
                        exportingAction: widget._createActionByOption("onExporting", {
                            excludeValidators: ["disabled"]
                        }),
                        exportedAction: widget._createActionByOption("onExported", {
                            excludeValidators: ["disabled"]
                        }),
                        fileSavingAction: widget._createActionByOption("onFileSaving", {
                            excludeValidators: ["disabled"]
                        })
                    }
                }
                exports.plugin = {
                    name: "export",
                    init() {
                        this._exportMenu = new ExportMenu({
                            renderer: this._renderer,
                            incidentOccurred: this._incidentOccurred,
                            print: () => this.print(),
                            exportTo: format => this.exportTo(void 0, format)
                        });
                        this._layout.add(this._exportMenu)
                    },
                    dispose() {
                        this._exportMenu.dispose()
                    },
                    members: {
                        _getExportMenuOptions() {
                            return (0, _extend.extend)({}, this._getOption("export"), {
                                rtl: this._getOption("rtlEnabled", true)
                            })
                        },
                        _disablePointerEvents() {
                            const pointerEventsValue = this._renderer.root.attr("pointer-events");
                            this._renderer.root.attr({
                                "pointer-events": "none"
                            });
                            return pointerEventsValue
                        },
                        exportTo(fileName, format) {
                            const menu = this._exportMenu;
                            const options = getExportOptions(this, this._getOption("export") || {}, fileName, format);
                            menu && menu.hide();
                            const pointerEventsValue = this._disablePointerEvents();
                            const promise = (0, _exporter.export)(this._renderer.root.element, options, getCreatorFunc(options.format)).fail(_console.logger.error).always((() => {
                                this._renderer.root.attr({
                                    "pointer-events": pointerEventsValue
                                })
                            }));
                            menu && menu.show();
                            return promise
                        },
                        print() {
                            const menu = this._exportMenu;
                            const options = getExportOptions(this, this._getOption("export") || {});
                            options.exportingAction = null;
                            options.exportedAction = null;
                            options.margin = 0;
                            options.format = "PNG";
                            options.useBase64 = true;
                            options.fileSavingAction = eventArgs => {
                                print(`data:image/png;base64,${eventArgs.data}`, {
                                    width: options.width,
                                    __test: options.__test
                                });
                                eventArgs.cancel = true
                            };
                            const pointerEventsValue = this._disablePointerEvents();
                            menu && menu.hide();
                            const promise = (0, _exporter.export)(this._renderer.root.element, options, getCreatorFunc(options.format)).fail(_console.logger.error).always((() => {
                                this._renderer.root.attr({
                                    "pointer-events": pointerEventsValue
                                })
                            }));
                            menu && menu.show();
                            return promise
                        }
                    },
                    customize(constructor) {
                        const proto = constructor.prototype;
                        constructor.addChange({
                            code: "EXPORT",
                            handler() {
                                this._exportMenu.setOptions(this._getExportMenuOptions());
                                this._change(["LAYOUT"])
                            },
                            isThemeDependent: true,
                            isOptionChange: true,
                            option: "export"
                        });
                        proto._optionChangesMap.onExporting = "EXPORT";
                        proto._optionChangesMap.onExported = "EXPORT";
                        proto._optionChangesMap.onFileSaving = "EXPORT"
                    },
                    fontFields: ["export.font"]
                }
            },
        71115:
            /*!*****************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/core/helpers.js ***!
              \*****************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.changes = function() {
                    return new Flags
                };
                exports.expand = expand;
                exports.replaceInherit = void 0;
                var _extend2 = __webpack_require__( /*! ../../core/utils/extend */ 52576);
                var _window = __webpack_require__( /*! ../../core/utils/window */ 3104);
                var _common = __webpack_require__( /*! ../../core/utils/common */ 17781);
                const isServerSide = !(0, _window.hasWindow)();

                function Flags() {
                    this.reset()
                }
                Flags.prototype = {
                    constructor: Flags,
                    add: function(codes) {
                        let i;
                        const ii = codes.length;
                        const flags = this._flags;
                        for (i = 0; i < ii; ++i) {
                            flags[codes[i]] = 1
                        }
                    },
                    has: function(code) {
                        return this._flags[code] > 0
                    },
                    count: function() {
                        return Object.keys(this._flags).length
                    },
                    reset: function() {
                        this._flags = {}
                    }
                };

                function combineMaps(baseMap, thisMap) {
                    return baseMap !== thisMap ? (0, _extend2.extend)({}, baseMap, thisMap) : (0, _extend2.extend)({}, baseMap)
                }

                function combineLists(baseList, thisList) {
                    return baseList !== thisList ? baseList.concat(thisList) : baseList.slice()
                }

                function buildTotalChanges(proto) {
                    proto._totalChangesOrder = proto._optionChangesOrder.concat(proto._layoutChangesOrder, proto._customChangesOrder)
                }

                function addChange(settings) {
                    const proto = this.prototype;
                    const code = settings.code;
                    proto["_change_" + code] = settings.handler;
                    if (settings.isThemeDependent) {
                        proto._themeDependentChanges.push(code)
                    }
                    if (settings.option) {
                        proto._optionChangesMap[settings.option] = code
                    }(settings.isOptionChange ? proto._optionChangesOrder : proto._customChangesOrder).push(code);
                    buildTotalChanges(proto)
                }

                function createChainExecutor() {
                    const executeChain = function() {
                        let i;
                        const ii = executeChain._chain.length;
                        let result;
                        for (i = 0; i < ii; ++i) {
                            result = executeChain._chain[i].apply(this, arguments)
                        }
                        return result
                    };
                    executeChain._chain = [];
                    executeChain.add = function(item) {
                        executeChain._chain.push(item)
                    };
                    executeChain.copy = function(executor) {
                        executeChain._chain = executor._chain.slice()
                    };
                    return executeChain
                }

                function expand(target, name, expander) {
                    let current = target[name];
                    if (!current) {
                        current = expander
                    } else if (!current.add) {
                        current = createChainExecutor();
                        current.add(target[name]);
                        current.add(expander)
                    } else {
                        if (false === Object.prototype.hasOwnProperty.call(target, name)) {
                            current = createChainExecutor();
                            current.copy(target[name])
                        }
                        current.add(expander)
                    }
                    target[name] = current
                }

                function addPlugin(plugin) {
                    const proto = this.prototype;
                    proto._plugins.push(plugin);
                    plugin.fontFields && proto._fontFields.push.apply(proto._fontFields, plugin.fontFields);
                    if (plugin.members) {
                        (0, _extend2.extend)(this.prototype, plugin.members)
                    }
                    if (plugin.customize) {
                        plugin.customize(this)
                    }
                    if (plugin.extenders) {
                        Object.keys(plugin.extenders).forEach((function(key) {
                            const func = plugin.extenders[key];
                            expand(proto, key, func)
                        }), this)
                    }
                }
                exports.replaceInherit = isServerSide ? function(widget) {
                    const _inherit = widget.inherit;
                    widget.inherit = function() {
                        const result = _inherit.apply(this, arguments);
                        const proto = result.prototype;
                        ["_plugins", "_eventsMap", "_initialChanges", "_themeDependentChanges", "_optionChangesMap", "_optionChangesOrder", "_layoutChangesOrder", "_customChangesOrder", "_totalChangesOrder"].forEach((function(key) {
                            proto[key] = {}
                        }));
                        result.addPlugin = _common.noop;
                        return result
                    };
                    widget.addChange = _common.noop;
                    widget.addPlugin = _common.noop
                } : function(widget) {
                    const _inherit = widget.inherit;
                    widget.inherit = function() {
                        let proto = this.prototype;
                        const plugins = proto._plugins;
                        const fontFields = proto._fontFields;
                        const eventsMap = proto._eventsMap;
                        const initialChanges = proto._initialChanges;
                        const themeDependentChanges = proto._themeDependentChanges;
                        const optionChangesMap = proto._optionChangesMap;
                        const partialOptionChangesMap = proto._partialOptionChangesMap;
                        const partialOptionChangesPath = proto._partialOptionChangesPath;
                        const optionChangesOrder = proto._optionChangesOrder;
                        const layoutChangesOrder = proto._layoutChangesOrder;
                        const customChangesOrder = proto._customChangesOrder;
                        const result = _inherit.apply(this, arguments);
                        proto = result.prototype;
                        proto._plugins = combineLists(plugins, proto._plugins);
                        proto._fontFields = combineLists(fontFields, proto._fontFields);
                        proto._eventsMap = combineMaps(eventsMap, proto._eventsMap);
                        proto._initialChanges = combineLists(initialChanges, proto._initialChanges);
                        proto._themeDependentChanges = combineLists(themeDependentChanges, proto._themeDependentChanges);
                        proto._optionChangesMap = combineMaps(optionChangesMap, proto._optionChangesMap);
                        proto._partialOptionChangesMap = combineMaps(partialOptionChangesMap, proto._partialOptionChangesMap);
                        proto._partialOptionChangesPath = combineMaps(partialOptionChangesPath, proto._partialOptionChangesPath);
                        proto._optionChangesOrder = combineLists(optionChangesOrder, proto._optionChangesOrder);
                        proto._layoutChangesOrder = combineLists(layoutChangesOrder, proto._layoutChangesOrder);
                        proto._customChangesOrder = combineLists(customChangesOrder, proto._customChangesOrder);
                        buildTotalChanges(proto);
                        result.addPlugin = addPlugin;
                        return result
                    };
                    widget.prototype._plugins = [];
                    widget.prototype._fontFields = [];
                    widget.addChange = addChange;
                    widget.addPlugin = addPlugin
                }
            },
        48874:
            /*!****************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/core/layout.js ***!
              \****************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _utils = __webpack_require__( /*! ./utils */ 28779);
                const _min = Math.min;
                const _max = Math.max;
                const _round = Math.round;
                const horizontalAlignmentMap = {
                    left: 0,
                    center: 1,
                    right: 2
                };
                const verticalAlignmentMap = {
                    top: 0,
                    center: 1,
                    bottom: 2
                };
                const sideMap = {
                    horizontal: 0,
                    vertical: 1
                };
                const slicersMap = {};
                slicersMap[0] = function(a, b, size) {
                    return [a, _min(b, a + size)]
                };
                slicersMap[1] = function(a, b, size) {
                    return [_max(a, (a + b - size) / 2), _min(b, (a + b + size) / 2)]
                };
                slicersMap[2] = function(a, b, size) {
                    return [_max(a, b - size), b]
                };

                function pickValue(value, map, defaultValue) {
                    const val = (0, _utils.normalizeEnum)(value);
                    return val in map ? map[val] : defaultValue
                }

                function normalizeLayoutOptions(options) {
                    const side = pickValue(options.side, sideMap, 1);
                    const alignment = [pickValue(options.horizontalAlignment, horizontalAlignmentMap, 1), pickValue(options.verticalAlignment, verticalAlignmentMap, 0)];
                    return {
                        side: side,
                        primary: (primary = alignment[side], primary < 2 ? 0 : 2),
                        secondary: alignment[1 - side],
                        weak: options.weak,
                        priority: options.priority || 0,
                        header: options.header,
                        position: options.position
                    };
                    var primary
                }

                function getShrink(alignment, size) {
                    return (alignment > 0 ? -1 : 1) * size
                }

                function processForward(item, rect, minSize) {
                    const side = item.side;
                    const size = item.element.measure([rect[2] - rect[0], rect[3] - rect[1]]);
                    const minSide = "indside" === item.position ? 0 : minSize[side];
                    const isValid = size[side] < rect[2 + side] - rect[side] - minSide;
                    if (isValid) {
                        if ("inside" !== item.position) {
                            rect[item.primary + side] += getShrink(item.primary, size[side])
                        }
                        item.size = size
                    }
                    return isValid
                }

                function processRectBackward(item, rect, alignmentRect) {
                    const primarySide = item.side;
                    const secondarySide = (side = primarySide, 1 - side);
                    var side;
                    const itemRect = [];
                    const secondary = (alignment = item.secondary, a = alignmentRect[secondarySide], b = alignmentRect[2 + secondarySide], size = item.size[secondarySide], slicersMap[alignment](a, b, size));
                    var alignment, a, b, size;
                    itemRect[primarySide] = _round(itemRect[2 + primarySide] = rect[item.primary + primarySide] + ("inside" === item.position ? getShrink(item.primary, item.size[primarySide]) : 0));
                    itemRect[item.primary + primarySide] = _round(rect[item.primary + primarySide] - getShrink(item.primary, item.size[primarySide]));
                    if ("inside" !== item.position) {
                        rect[item.primary + primarySide] = itemRect[item.primary + primarySide]
                    }
                    itemRect[secondarySide] = _round(secondary[0]);
                    itemRect[2 + secondarySide] = _round(secondary[1]);
                    return itemRect
                }

                function processBackward(item, rect, alignmentRect, fitRect, size, targetRect) {
                    const itemRect = processRectBackward(item, rect, alignmentRect);
                    const itemFitRect = processRectBackward(item, fitRect, fitRect);
                    if (size[item.side] > 0) {
                        size[item.side] -= item.size[item.side];
                        targetRect[item.primary + item.side] = itemRect[item.primary + item.side];
                        item.element.freeSpace()
                    } else {
                        item.element.move(itemRect, itemFitRect)
                    }
                }

                function Layout() {
                    this._targets = []
                }
                Layout.prototype = {
                    constructor: Layout,
                    dispose: function() {
                        this._targets = null
                    },
                    add: function(target) {
                        this._targets.push(target)
                    },
                    forward: function(targetRect, minSize) {
                        const rect = targetRect.slice();
                        const targets = function(targets) {
                            let i;
                            const ii = targets.length;
                            let collection = [];
                            let layout;
                            for (i = 0; i < ii; ++i) {
                                layout = targets[i].layoutOptions();
                                if (layout) {
                                    layout = normalizeLayoutOptions(layout);
                                    layout.element = targets[i];
                                    collection.push(layout)
                                }
                            }
                            collection.sort((function(a, b) {
                                return b.side - a.side || a.priority - b.priority
                            }));
                            collection = function(collection) {
                                const weakItem = collection.filter((function(item) {
                                    return true === item.weak
                                }))[0];
                                let headerItem;
                                if (weakItem) {
                                    headerItem = collection.filter((function(item) {
                                        return weakItem.primary === item.primary && item.side === weakItem.side && item !== weakItem
                                    }))[0]
                                }
                                if (weakItem && headerItem) {
                                    return [makeHeader(headerItem, weakItem)].concat(collection.filter((function(item) {
                                        return !(item === headerItem || item === weakItem)
                                    })))
                                }
                                return collection
                            }(collection);
                            return collection
                        }(this._targets);
                        let i;
                        const ii = targets.length;
                        const cache = [];
                        for (i = 0; i < ii; ++i) {
                            if (processForward(targets[i], rect, minSize)) {
                                cache.push(targets[i])
                            } else {
                                targets[i].element.freeSpace()
                            }
                        }
                        this._cache = cache.reverse();
                        return rect
                    },
                    backward: function(targetRect, alignmentRect) {
                        let size = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : [0, 0];
                        let backwardRect = targetRect.slice();
                        const fitRect = targetRect.slice();
                        const targets = this._cache;
                        let targetSide = 0;
                        let target;
                        let i;
                        const ii = targets.length;
                        for (i = 0; i < ii; ++i) {
                            target = targets[i];
                            if (target.side !== targetSide) {
                                backwardRect = targetRect.slice()
                            }
                            processBackward(target, backwardRect, alignmentRect, fitRect, size, targetRect);
                            targetSide = target.side
                        }
                        return size
                    }
                };

                function processBackwardHeaderRect(element, rect) {
                    const rectCopy = rect.slice();
                    const itemRect = processRectBackward(element, rectCopy, rectCopy);
                    itemRect[element.side] = rect[element.side];
                    itemRect[2 + element.side] = rect[2 + element.side];
                    return itemRect
                }

                function makeHeader(header, weakElement) {
                    const side = header.side;
                    const primary = header.primary;
                    const secondary = header.secondary;
                    return {
                        side: side,
                        primary: primary,
                        secondary: secondary,
                        priority: 0,
                        element: {
                            measure: function(targetSize) {
                                const result = targetSize.slice();
                                const weakSize = weakElement.element.measure(targetSize.slice());
                                targetSize[primary] -= weakSize[primary];
                                const headerSize = header.element.measure(targetSize.slice());
                                result[side] = weakSize[side] = headerSize[side] = Math.max(headerSize[side], weakSize[side]);
                                weakElement.size = weakSize;
                                header.size = headerSize;
                                return result
                            },
                            move: function(rect, fitRect) {
                                if (fitRect[2] - fitRect[0] < header.size[0] + weakElement.size[0] - 2) {
                                    this.freeSpace();
                                    return
                                }
                                const weakRect = processBackwardHeaderRect(weakElement, fitRect);
                                fitRect[2 + weakElement.primary] = weakRect[weakElement.primary];
                                const headerFitReact = processBackwardHeaderRect(header, fitRect);
                                if (fitRect[2 + weakElement.primary] < rect[2 + weakElement.primary] && header.size[header.primary] > rect[2 + header.primary] - rect[header.primary]) {
                                    rect[2 + weakElement.primary] = fitRect[2 + weakElement.primary]
                                }
                                let headerRect = processBackwardHeaderRect(header, rect);
                                if (headerRect[2 + weakElement.primary] > fitRect[2 + weakElement.primary]) {
                                    rect[2 + weakElement.primary] = fitRect[2 + weakElement.primary];
                                    headerRect = processBackwardHeaderRect(header, rect)
                                }
                                weakElement.element.move(weakRect);
                                header.element.move(headerRect, headerFitReact)
                            },
                            freeSpace: function() {
                                header.element.freeSpace();
                                weakElement.element.freeSpace()
                            }
                        }
                    }
                }
                exports.default = Layout;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        77461:
            /*!************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/core/layout_element.js ***!
              \************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.LayoutElement = LayoutElement;
                exports.WrapperLayoutElement = WrapperLayoutElement;
                var _common = __webpack_require__( /*! ../../core/utils/common */ 17781);
                var _object = __webpack_require__( /*! ../../core/utils/object */ 22263);
                const _round = Math.round;
                const defaultOffset = {
                    horizontal: 0,
                    vertical: 0
                };
                const alignFactors = {
                    center: .5,
                    right: 1,
                    bottom: 1,
                    left: 0,
                    top: 0
                };

                function LayoutElement(options) {
                    this._options = options
                }
                LayoutElement.prototype = {
                    constructor: LayoutElement,
                    position: function(options) {
                        const ofBBox = options.of.getLayoutOptions();
                        const myBBox = this.getLayoutOptions();
                        const at = options.at;
                        const my = options.my;
                        const offset = options.offset || defaultOffset;
                        const shiftX = -alignFactors[my.horizontal] * myBBox.width + ofBBox.x + alignFactors[at.horizontal] * ofBBox.width + parseInt(offset.horizontal);
                        const shiftY = -alignFactors[my.vertical] * myBBox.height + ofBBox.y + alignFactors[at.vertical] * ofBBox.height + parseInt(offset.vertical);
                        this.shift(_round(shiftX), _round(shiftY))
                    },
                    getLayoutOptions: _common.noop
                };

                function WrapperLayoutElement(renderElement, bBox) {
                    this._renderElement = renderElement;
                    this._cacheBBox = bBox
                }
                const wrapperLayoutElementPrototype = WrapperLayoutElement.prototype = (0, _object.clone)(LayoutElement.prototype);
                wrapperLayoutElementPrototype.constructor = WrapperLayoutElement;
                wrapperLayoutElementPrototype.getLayoutOptions = function() {
                    return this._cacheBBox || this._renderElement.getBBox()
                };
                wrapperLayoutElementPrototype.shift = function(shiftX, shiftY) {
                    const bBox = this.getLayoutOptions();
                    this._renderElement.move(_round(shiftX - bBox.x), _round(shiftY - bBox.y))
                }
            },
        92528:
            /*!***************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/core/loading_indicator.js ***!
              \***************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.plugin = exports.LoadingIndicator = void 0;
                var _utils = __webpack_require__( /*! ./utils */ 28779);
                let LoadingIndicator = function(parameters) {
                    const renderer = parameters.renderer;
                    this._group = renderer.g().attr({
                        class: "dx-loading-indicator"
                    }).linkOn(renderer.root, {
                        name: "loading-indicator",
                        after: "peripheral"
                    });
                    this._rect = renderer.rect().attr({
                        opacity: 0
                    }).append(this._group);
                    this._text = renderer.text().attr({
                        align: "center"
                    }).append(this._group);
                    this._createStates(parameters.eventTrigger, this._group, renderer.root, parameters.notify)
                };
                exports.LoadingIndicator = LoadingIndicator;
                LoadingIndicator.prototype = {
                    constructor: LoadingIndicator,
                    _createStates: function(eventTrigger, group, root, notify) {
                        this._states = [{
                            opacity: 0,
                            start: function() {
                                notify(false)
                            },
                            complete: function() {
                                group.linkRemove();
                                root.css({
                                    "pointer-events": ""
                                });
                                eventTrigger("loadingIndicatorReady")
                            }
                        }, {
                            opacity: .85,
                            start: function() {
                                group.linkAppend();
                                root.css({
                                    "pointer-events": "none"
                                });
                                notify(true)
                            },
                            complete: function() {
                                eventTrigger("loadingIndicatorReady")
                            }
                        }];
                        this._state = 0
                    },
                    setSize: function(size) {
                        const width = size.width;
                        const height = size.height;
                        this._rect.attr({
                            width: width,
                            height: height
                        });
                        this._text.attr({
                            x: width / 2,
                            y: height / 2
                        })
                    },
                    setOptions: function(options) {
                        this._rect.attr({
                            fill: options.backgroundColor
                        });
                        this._text.css((0, _utils.patchFontOptions)(options.font)).attr({
                            text: options.text,
                            class: options.cssClass
                        });
                        this[options.show ? "show" : "hide"]()
                    },
                    dispose: function() {
                        this._group.linkRemove().linkOff();
                        this._group = this._rect = this._text = this._states = null
                    },
                    _transit: function(stateId) {
                        const that = this;
                        let state;
                        if (that._state !== stateId) {
                            that._state = stateId;
                            that._isHiding = false;
                            state = that._states[stateId];
                            that._rect.stopAnimation().animate({
                                opacity: state.opacity
                            }, {
                                complete: state.complete,
                                easing: "linear",
                                duration: 400,
                                unstoppable: true
                            });
                            that._noHiding = true;
                            state.start();
                            that._noHiding = false
                        }
                    },
                    show: function() {
                        this._transit(1)
                    },
                    hide: function() {
                        this._transit(0)
                    },
                    scheduleHiding: function() {
                        if (!this._noHiding) {
                            this._isHiding = true
                        }
                    },
                    fulfillHiding: function() {
                        if (this._isHiding) {
                            this.hide()
                        }
                    }
                };
                exports.plugin = {
                    name: "loading_indicator",
                    init: function() {
                        const that = this;
                        that._loadingIndicator = new LoadingIndicator({
                            eventTrigger: that._eventTrigger,
                            renderer: that._renderer,
                            notify: function(state) {
                                that._skipLoadingIndicatorOptions = true;
                                that.option("loadingIndicator", {
                                    show: state
                                });
                                that._skipLoadingIndicatorOptions = false;
                                if (state) {
                                    that._stopCurrentHandling()
                                }
                            }
                        });
                        that._scheduleLoadingIndicatorHiding()
                    },
                    dispose: function() {
                        this._loadingIndicator.dispose();
                        this._loadingIndicator = null
                    },
                    members: {
                        _scheduleLoadingIndicatorHiding: function() {
                            this._loadingIndicator.scheduleHiding()
                        },
                        _fulfillLoadingIndicatorHiding: function() {
                            this._loadingIndicator.fulfillHiding()
                        },
                        showLoadingIndicator: function() {
                            this._loadingIndicator.show()
                        },
                        hideLoadingIndicator: function() {
                            this._loadingIndicator.hide()
                        },
                        _onBeginUpdate: function() {
                            if (!this._optionChangedLocker) {
                                this._scheduleLoadingIndicatorHiding()
                            }
                        }
                    },
                    extenders: {
                        _dataSourceLoadingChangedHandler(isLoading) {
                            if (isLoading && (this._options.silent("loadingIndicator") || {}).enabled) {
                                this._loadingIndicator.show()
                            }
                        },
                        _setContentSize() {
                            this._loadingIndicator.setSize(this._canvas)
                        },
                        endUpdate() {
                            if (this._initialized && this._dataIsReady()) {
                                this._fulfillLoadingIndicatorHiding()
                            }
                        }
                    },
                    customize: function(constructor) {
                        const proto = constructor.prototype;
                        if (proto._dataSourceChangedHandler) {
                            const _dataSourceChangedHandler = proto._dataSourceChangedHandler;
                            proto._dataSourceChangedHandler = function() {
                                this._scheduleLoadingIndicatorHiding();
                                _dataSourceChangedHandler.apply(this, arguments)
                            }
                        }
                        constructor.addChange({
                            code: "LOADING_INDICATOR",
                            handler: function() {
                                if (!this._skipLoadingIndicatorOptions) {
                                    this._loadingIndicator.setOptions(this._getOption("loadingIndicator"))
                                }
                                this._scheduleLoadingIndicatorHiding()
                            },
                            isThemeDependent: true,
                            option: "loadingIndicator",
                            isOptionChange: true
                        });
                        proto._eventsMap.onLoadingIndicatorReady = {
                            name: "loadingIndicatorReady"
                        };
                        const _drawn = proto._drawn;
                        proto._drawn = function() {
                            _drawn.apply(this, arguments);
                            if (this._dataIsReady()) {
                                this._fulfillLoadingIndicatorHiding()
                            }
                        }
                    },
                    fontFields: ["loadingIndicator.font"]
                }
            },
        87040:
            /*!****************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/core/plaque.js ***!
              \****************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.Plaque = void 0;
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 11528);
                const _excluded = ["x", "y", "canvas", "offsetX", "offsetY", "offset"];

                function _extends() {
                    return _extends = Object.assign ? Object.assign.bind() : function(n) {
                        for (var e = 1; e < arguments.length; e++) {
                            var t = arguments[e];
                            for (var r in t) {
                                ({}).hasOwnProperty.call(t, r) && (n[r] = t[r])
                            }
                        }
                        return n
                    }, _extends.apply(null, arguments)
                }
                const math = Math;
                const round = math.round;
                const max = math.max;
                const min = math.min;
                const sin = math.sin;
                const cos = math.cos;
                const asin = math.asin;
                const PI = math.PI;
                const buildPath = function() {
                    for (var _len = arguments.length, points = new Array(_len), _key = 0; _key < _len; _key++) {
                        points[_key] = arguments[_key]
                    }
                    return points.join("")
                };

                function getArc(cornerRadius, xDirection, yDirection) {
                    return `a ${cornerRadius} ${cornerRadius} 0 0 1 ${xDirection*cornerRadius} ${yDirection*cornerRadius}`
                }

                function getAbsoluteArc(cornerRadius, x, y) {
                    return `A ${cornerRadius} ${cornerRadius} 0 0 1 ${x} ${y}`
                }

                function rotateX(x, y, angle, x0, y0) {
                    return (x - x0) * round(cos(angle)) + (y - y0) * round(sin(angle)) + x0
                }

                function rotateY(x, y, angle, x0, y0) {
                    return -(x - x0) * round(sin(angle)) + (y - y0) * round(cos(angle)) + y0
                }

                function rotateSize(options, angle) {
                    if (angle % 90 === 0 && angle % 180 !== 0) {
                        return {
                            width: options.height,
                            height: options.width
                        }
                    }
                    return options
                }

                function getCloudAngle(_ref, x, y, anchorX, anchorY) {
                    let {
                        width: width,
                        height: height
                    } = _ref;
                    const halfWidth = width / 2;
                    const halfHeight = height / 2;
                    const xr = Math.ceil(x + halfWidth);
                    const xl = Math.floor(x - halfWidth);
                    const yt = Math.floor(y - halfHeight);
                    const yb = Math.ceil(y + halfHeight);
                    if (anchorX < xl && anchorY < yt || anchorX >= xl && anchorX <= xr && anchorY < yt) {
                        return 270
                    }
                    if (anchorX > xr && anchorY > yb || anchorX >= xl && anchorX <= xr && anchorY > yb) {
                        return 90
                    } else if (anchorX < xl && anchorY > yb || anchorX < xl && anchorY >= yt && anchorY <= yb) {
                        return 180
                    }
                    return 0
                }

                function getCloudPoints(_ref2, x, y, anchorX, anchorY, _ref3, bounded) {
                    let {
                        width: width,
                        height: height
                    } = _ref2;
                    let {
                        arrowWidth: arrowWidth,
                        cornerRadius: cornerRadius = 0
                    } = _ref3;
                    const halfArrowWidth = arrowWidth / 2;
                    const halfWidth = width / 2;
                    const halfHeight = height / 2;
                    const xr = Math.ceil(x + halfWidth);
                    const xl = Math.floor(x - halfWidth);
                    const yt = Math.floor(y - halfHeight);
                    const yb = Math.ceil(y + halfHeight);
                    const leftTopCorner = [xl, yt];
                    const rightTopCorner = [xr, yt];
                    const rightBottomCorner = [xr, yb];
                    const leftBottomCorner = [xl, yb];
                    const arrowX = anchorX <= xl ? xl : xr <= anchorX ? xr : anchorX;
                    const arrowY = anchorY <= yt ? yt : yb <= anchorY ? yb : anchorY;
                    const arrowBaseBottom = min(arrowY + halfArrowWidth, yb);
                    const arrowBaseTop = max(arrowY - halfArrowWidth, yt);
                    const arrowBaseLeft = max(arrowX - halfArrowWidth, xl);
                    cornerRadius = Math.min(width / 2, height / 2, cornerRadius);
                    let points;
                    leftTopCorner[1] += cornerRadius;
                    rightTopCorner[0] -= cornerRadius;
                    rightBottomCorner[1] -= cornerRadius;
                    leftBottomCorner[0] += cornerRadius;
                    if (!bounded || xl <= anchorX && anchorX <= xr && yt <= anchorY && anchorY <= yb) {
                        points = buildPath(leftTopCorner, getArc(cornerRadius, 1, -1), "L", rightTopCorner, getArc(cornerRadius, 1, 1), "L", rightBottomCorner, getArc(cornerRadius, -1, 1), "L", leftBottomCorner, getArc(cornerRadius, -1, -1))
                    } else if (anchorX > xr && anchorY < yt) {
                        const arrowAngle = arrowWidth / cornerRadius || 0;
                        const angle = PI / 4 + arrowAngle / 2;
                        const endAngle = PI / 4 - arrowAngle / 2;
                        const arrowEndPointX = rightTopCorner[0] + cos(endAngle) * cornerRadius;
                        const arrowEndPointY = rightTopCorner[1] + (1 - sin(endAngle)) * cornerRadius;
                        let arrowArc = buildPath("L", rightTopCorner, getArc(cornerRadius, cos(angle), 1 - sin(angle)), "L", [anchorX, anchorY, arrowEndPointX, arrowEndPointY], getAbsoluteArc(cornerRadius, rightTopCorner[0] + cornerRadius, rightTopCorner[1] + cornerRadius));
                        if (Math.abs(angle) > PI / 2) {
                            arrowArc = buildPath("L", [arrowBaseLeft, yt, anchorX, anchorY, xr, arrowBaseBottom])
                        }
                        points = buildPath(leftTopCorner, getArc(cornerRadius, 1, -1), arrowArc, "L", rightBottomCorner, getArc(cornerRadius, -1, 1), "L", leftBottomCorner, getArc(cornerRadius, -1, -1))
                    } else if (anchorX > xr && anchorY >= yt && anchorY <= yb) {
                        let arrowArc;
                        if (arrowBaseTop >= rightTopCorner[1] + cornerRadius && arrowBaseBottom <= rightBottomCorner[1]) {
                            arrowArc = buildPath(getArc(cornerRadius, 1, 1), "L", [xr, arrowBaseTop, anchorX, anchorY, xr, arrowBaseBottom], "L", rightBottomCorner, getArc(cornerRadius, -1, 1))
                        } else if (arrowBaseTop < rightTopCorner[1] + cornerRadius && arrowBaseBottom >= rightTopCorner[1] + cornerRadius && arrowBaseBottom <= rightBottomCorner[1]) {
                            const arrowWidthRest = rightTopCorner[1] + cornerRadius - arrowBaseTop;
                            const angle = arrowWidthRest / cornerRadius;
                            const arrowBaseTopX = rightTopCorner[0] + cos(angle) * cornerRadius;
                            const arrowBaseTopY = rightTopCorner[1] + (1 - sin(angle)) * cornerRadius;
                            arrowArc = buildPath(getArc(cornerRadius, cos(angle), 1 - sin(angle)), "L", [arrowBaseTopX, arrowBaseTopY, anchorX, anchorY, xr, arrowBaseBottom], "L", rightBottomCorner, getArc(cornerRadius, -1, 1))
                        } else if (arrowBaseTop < rightTopCorner[1] + cornerRadius && arrowBaseBottom < rightTopCorner[1] + cornerRadius) {
                            const arrowWidthRest = rightTopCorner[1] + cornerRadius - arrowBaseTop;
                            const arrowAngle = arrowWidthRest / cornerRadius;
                            const angle = arrowAngle;
                            const arrowBaseTopX = rightTopCorner[0] + cos(angle) * cornerRadius;
                            const arrowBaseTopY = rightTopCorner[1] + (1 - sin(angle)) * cornerRadius;
                            const bottomAngle = Math.sin((rightTopCorner[1] + cornerRadius - arrowBaseBottom) / cornerRadius);
                            const arrowBaseBottomX = rightTopCorner[0] + cornerRadius * cos(bottomAngle);
                            const arrowBaseBottomY = rightTopCorner[1] + cornerRadius * (1 - sin(bottomAngle));
                            arrowArc = buildPath(getArc(cornerRadius, cos(angle), 1 - sin(angle)), "L", [arrowBaseTopX, arrowBaseTopY, anchorX, anchorY, arrowBaseBottomX, arrowBaseBottomY], getAbsoluteArc(cornerRadius, rightTopCorner[0] + cornerRadius, rightTopCorner[1] + cornerRadius), "L", rightBottomCorner, getArc(cornerRadius, -1, 1))
                        } else if (arrowBaseTop <= rightTopCorner[1] + cornerRadius && arrowBaseBottom >= rightBottomCorner[1]) {
                            const topAngle = asin((rightTopCorner[1] + cornerRadius - arrowBaseTop) / cornerRadius);
                            const arrowBaseTopX = rightTopCorner[0] + cornerRadius * cos(topAngle);
                            const arrowBaseTopY = rightTopCorner[1] + cornerRadius * (1 - sin(topAngle));
                            const bottomAngle = asin((arrowBaseBottom - rightBottomCorner[1]) / cornerRadius);
                            const arrowBaseBottomX = rightBottomCorner[0] + cornerRadius * (cos(bottomAngle) - 1);
                            const arrowBaseBottomY = rightBottomCorner[1] + cornerRadius * sin(bottomAngle);
                            arrowArc = buildPath(getArc(cornerRadius, cos(topAngle), 1 - sin(topAngle)), "L", [arrowBaseTopX, arrowBaseTopY, anchorX, anchorY, arrowBaseBottomX, arrowBaseBottomY], getAbsoluteArc(cornerRadius, rightBottomCorner[0] - cornerRadius, rightBottomCorner[1] + cornerRadius))
                        } else if (arrowBaseTop > rightTopCorner[1] + cornerRadius && arrowBaseTop <= rightBottomCorner[1] && arrowBaseBottom > rightBottomCorner[1]) {
                            const bottomAngle = asin((arrowBaseBottom - rightBottomCorner[1]) / cornerRadius);
                            const arrowBaseBottomX = rightBottomCorner[0] + cornerRadius * (cos(bottomAngle) - 1);
                            const arrowBaseBottomY = rightBottomCorner[1] + cornerRadius * sin(bottomAngle);
                            arrowArc = buildPath(getArc(cornerRadius, 1, 1), "L", [xr, arrowBaseTop, anchorX, anchorY, arrowBaseBottomX, arrowBaseBottomY], getAbsoluteArc(cornerRadius, rightBottomCorner[0] - cornerRadius, rightBottomCorner[1] + cornerRadius))
                        } else if (arrowBaseTop > rightTopCorner[1] + cornerRadius && arrowBaseBottom > rightBottomCorner[1]) {
                            const bottomAngle = asin((arrowBaseBottom - rightBottomCorner[1]) / cornerRadius);
                            const arrowBaseBottomX = rightBottomCorner[0] + cornerRadius * (cos(bottomAngle) - 1);
                            const arrowBaseBottomY = rightBottomCorner[1] + cornerRadius * sin(bottomAngle);
                            const topAngle = asin((arrowBaseTop - rightBottomCorner[1]) / cornerRadius);
                            const arrowBaseTopX = rightBottomCorner[0] + cornerRadius * (cos(topAngle) - 1);
                            const arrowBaseTopY = rightBottomCorner[1] + cornerRadius * sin(topAngle);
                            arrowArc = buildPath(getArc(cornerRadius, 1, 1), "L", rightBottomCorner, getArc(cornerRadius, cos(topAngle) - 1, sin(topAngle)), "L", [arrowBaseTopX, arrowBaseTopY, anchorX, anchorY, arrowBaseBottomX, arrowBaseBottomY], getAbsoluteArc(cornerRadius, rightBottomCorner[0] - cornerRadius, rightBottomCorner[1] + cornerRadius))
                        }
                        points = buildPath(leftTopCorner, getArc(cornerRadius, 1, -1), "L", rightTopCorner, arrowArc, "L", leftBottomCorner, getArc(cornerRadius, -1, -1))
                    }
                    return buildPath("M", points, "Z")
                }
                exports.Plaque = class {
                    constructor(options, widget, root, contentTemplate) {
                        let bounded = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : true;
                        let measureContent = arguments.length > 5 && void 0 !== arguments[5] ? arguments[5] : (_, g) => g.getBBox();
                        let moveContentGroup = arguments.length > 6 && void 0 !== arguments[6] ? arguments[6] : (_, g, x, y) => g.move(x, y);
                        this.widget = widget;
                        this.options = options;
                        this.root = root;
                        this.contentTemplate = contentTemplate;
                        this.bonded = bounded;
                        this.measureContent = measureContent;
                        this.moveContentGroup = moveContentGroup
                    }
                    draw(_ref4) {
                        let {
                            x: anchorX,
                            y: anchorY,
                            canvas: canvas = {},
                            offsetX: offsetX,
                            offsetY: offsetY,
                            offset: offset = 0
                        } = _ref4, restProps = function(r, e) {
                            if (null == r) {
                                return {}
                            }
                            var t = {};
                            for (var n in r) {
                                if ({}.hasOwnProperty.call(r, n)) {
                                    if (e.includes(n)) {
                                        continue
                                    }
                                    t[n] = r[n]
                                }
                            }
                            return t
                        }(_ref4, _excluded);
                        const options = this.options;
                        let {
                            x: x,
                            y: y
                        } = options;
                        const bounds_xl = canvas.left,
                            bounds_xr = canvas.width - canvas.right,
                            bounds_width = canvas.width - canvas.right - canvas.left,
                            bounds_yt = canvas.top,
                            bounds_yb = canvas.height - canvas.bottom,
                            bounds_height = canvas.height - canvas.bottom - canvas.top;
                        if (!((0, _type.isDefined)(anchorX) && (0, _type.isDefined)(anchorY)) && !((0, _type.isDefined)(x) && (0, _type.isDefined)(y))) {
                            return false
                        }
                        if ((0, _type.isDefined)(anchorX) && (anchorX < bounds_xl || bounds_xr < anchorX || anchorY < bounds_yt || bounds_yb < anchorY)) {
                            return false
                        }
                        if (!this._root) {
                            this._draw()
                        }
                        const shadowSettings = (0, _extend.extend)({
                            x: "-50%",
                            y: "-50%",
                            width: "200%",
                            height: "200%"
                        }, options.shadow);
                        const contentWidth = options.width > 0 ? options.width : null;
                        const contentHeight = options.height > 0 ? options.height : null;
                        const onRender = () => {
                            var _this$_root;
                            const bBox = this._contentBBox = this.measureContent(this.widget, this._contentGroup);
                            const size = this._size = {
                                width: max(contentWidth, bBox.width) + 2 * options.paddingLeftRight,
                                height: max(contentHeight, bBox.height) + 2 * options.paddingTopBottom,
                                offset: offset
                            };
                            const xOff = shadowSettings.offsetX;
                            const yOff = shadowSettings.offsetY;
                            const blur = 2 * shadowSettings.blur + 1;
                            const lm = max(blur - xOff, 0);
                            const rm = max(blur + xOff, 0);
                            const tm = max(blur - yOff, 0);
                            const bm = max(blur + yOff, 0);
                            this.margins = {
                                lm: lm,
                                rm: rm,
                                tm: tm,
                                bm: bm
                            };
                            if (!(0, _type.isDefined)(x)) {
                                if ((0, _type.isDefined)(offsetX)) {
                                    x = anchorX + offsetX
                                } else if (bounds_width < size.width) {
                                    x = round(bounds_xl + bounds_width / 2)
                                } else {
                                    x = min(max(anchorX, Math.ceil(bounds_xl + size.width / 2 + lm)), Math.floor(bounds_xr - size.width / 2 - rm))
                                }
                            } else {
                                x += offsetX || 0;
                                if (!(0, _type.isDefined)(anchorX)) {
                                    anchorX = x
                                }
                            }
                            if (!(0, _type.isDefined)(y)) {
                                if ((0, _type.isDefined)(offsetY)) {
                                    y = anchorY + offsetY
                                } else {
                                    const y_top = anchorY - options.arrowLength - size.height / 2 - offset;
                                    const y_bottom = anchorY + options.arrowLength + size.height / 2 + offset;
                                    if (bounds_height < size.height + options.arrowLength) {
                                        y = round(bounds_yt + size.height / 2)
                                    } else if (y_top - size.height / 2 - tm < bounds_yt) {
                                        if (y_bottom + size.height / 2 + bm < bounds_yb) {
                                            y = y_bottom;
                                            anchorY += offset
                                        } else {
                                            y = round(bounds_yt + size.height / 2)
                                        }
                                    } else {
                                        y = y_top;
                                        anchorY -= offset
                                    }
                                }
                            } else {
                                y += offsetY || 0;
                                if (!(0, _type.isDefined)(anchorY)) {
                                    anchorY = y + size.height / 2
                                }
                            }
                            this.anchorX = anchorX;
                            this.anchorY = anchorY;
                            this.move(x, y);
                            null === (_this$_root = this._root) || void 0 === _this$_root || _this$_root.append(this.root)
                        };
                        if (this.contentTemplate.render) {
                            this.contentTemplate.render({
                                model: options,
                                container: this._contentGroup.element,
                                onRendered: onRender
                            })
                        } else {
                            this.contentTemplate(_extends({
                                group: this._contentGroup,
                                onRender: onRender
                            }, restProps))
                        }
                        return true
                    }
                    _draw() {
                        const renderer = this.widget._renderer;
                        const options = this.options;
                        const shadowSettings = (0, _extend.extend)({
                            x: "-50%",
                            y: "-50%",
                            width: "200%",
                            height: "200%"
                        }, options.shadow);
                        const shadow = this._shadow = renderer.shadowFilter().attr(shadowSettings);
                        const cloudSettings = {
                            opacity: options.opacity,
                            "stroke-width": 0,
                            fill: options.color
                        };
                        const borderOptions = options.border || {};
                        if (borderOptions.visible) {
                            (0, _extend.extend)(cloudSettings, {
                                "stroke-width": borderOptions.width,
                                stroke: borderOptions.color,
                                "stroke-opacity": borderOptions.opacity,
                                dashStyle: borderOptions.dashStyle
                            })
                        }
                        const group = this._root = renderer.g().append(this.root);
                        if (options.type) {
                            group.attr({
                                class: `dxc-${options.type}-annotation`
                            })
                        }
                        const cloudGroup = renderer.g().attr({
                            filter: shadow.id
                        }).append(group);
                        this._cloud = renderer.path([], "area").attr(cloudSettings).sharp().append(cloudGroup);
                        this._contentGroup = renderer.g().append(group)
                    }
                    getBBox() {
                        const size = this._size || {};
                        const margins = this.margins || {};
                        const rotationAngle = getCloudAngle(size, this.x, this.y, this.anchorX, this.anchorY);
                        return {
                            x: Math.floor(this.x - size.width / 2 - margins.lm),
                            y: Math.floor(this.y - size.height / 2 - margins.tm - (270 === rotationAngle ? this.options.arrowLength : 0)),
                            width: size.width + margins.lm + margins.rm,
                            height: size.height + margins.tm + margins.bm + (90 === rotationAngle || 270 === rotationAngle ? this.options.arrowLength : 0)
                        }
                    }
                    clear() {
                        if (this._root) {
                            this._root.remove();
                            this._shadow.remove();
                            this._root = null
                        }
                        return this
                    }
                    customizeCloud(attr) {
                        if (this._cloud) {
                            this._cloud.attr(attr)
                        }
                    }
                    moveRoot(x, y) {
                        if (this._root) {
                            this._root.move(x, y)
                        }
                    }
                    move(x, y) {
                        x = round(x);
                        y = round(y);
                        this.x = x;
                        this.y = y;
                        const rotationAngle = getCloudAngle(this._size, x, y, this.anchorX, this.anchorY);
                        const radRotationAngle = rotationAngle * PI / 180;
                        this._cloud.attr({
                            d: getCloudPoints(rotateSize(this._size, rotationAngle), x, y, rotateX(this.anchorX, this.anchorY, radRotationAngle, x, y), rotateY(this.anchorX, this.anchorY, radRotationAngle, x, y), this.options, this.bonded)
                        }).rotate(rotationAngle, x, y);
                        this.moveContentGroup(this.widget, this._contentGroup, x - this._contentBBox.x - this._contentBBox.width / 2, y - this._contentBBox.y - this._contentBBox.height / 2)
                    }
                    hitTest(x, y) {
                        const {
                            width: width,
                            height: height
                        } = this._size || {};
                        return Math.abs(x - this.x) <= width / 2 && Math.abs(y - this.y) <= height / 2
                    }
                }
            },
        35523:
            /*!*****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/core/renderers/animation.js ***!
              \*****************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.AnimationController = AnimationController;
                exports.easingFunctions = exports.animationSvgStep = void 0;
                var _frame = __webpack_require__( /*! ../../../common/core/animation/frame */ 84096);
                const noop = function() {};
                const easingFunctions = exports.easingFunctions = {
                    easeOutCubic: function(pos, start, end) {
                        return 1 === pos ? end : (1 - Math.pow(1 - pos, 3)) * (end - start) + +start
                    },
                    linear: function(pos, start, end) {
                        return 1 === pos ? end : pos * (end - start) + +start
                    }
                };
                const animationSvgStep = exports.animationSvgStep = {
                    segments: function(elem, params, progress, easing, currentParams) {
                        const from = params.from;
                        const to = params.to;
                        let curSeg;
                        let seg;
                        let i;
                        let j;
                        const segments = [];
                        for (i = 0; i < from.length; i++) {
                            curSeg = from[i];
                            seg = [curSeg[0]];
                            if (curSeg.length > 1) {
                                for (j = 1; j < curSeg.length; j++) {
                                    seg.push(easing(progress, curSeg[j], to[i][j]))
                                }
                            }
                            segments.push(seg)
                        }
                        currentParams.segments = params.end && 1 === progress ? params.end : segments;
                        elem.attr({
                            segments: segments
                        })
                    },
                    arc: function(elem, params, progress, easing) {
                        const from = params.from;
                        const to = params.to;
                        const current = {};
                        for (const i in from) {
                            current[i] = easing(progress, from[i], to[i])
                        }
                        elem.attr(current)
                    },
                    transform: function(elem, params, progress, easing, currentParams) {
                        const from = params.from;
                        const to = params.to;
                        const current = {};
                        for (const i in from) {
                            current[i] = currentParams[i] = easing(progress, from[i], to[i])
                        }
                        elem.attr(current)
                    },
                    base: function(elem, params, progress, easing, currentParams, attributeName) {
                        const obj = {};
                        obj[attributeName] = currentParams[attributeName] = easing(progress, params.from, params.to);
                        elem.attr(obj)
                    },
                    _: noop,
                    complete: function(element, currentSettings) {
                        element.attr(currentSettings)
                    }
                };

                function step(now) {
                    const that = this;
                    const animateStep = that._animateStep;
                    let attrName;
                    that._progress = that._calcProgress(now);
                    for (attrName in that.params) {
                        const anim = animateStep[attrName] || animateStep.base;
                        anim(that.element, that.params[attrName], that._progress, that._easing, that._currentParams, attrName)
                    }
                    that.options.step && that.options.step(that._easing(that._progress, 0, 1), that._progress);
                    if (1 === that._progress) {
                        return that.stop()
                    }
                    return true
                }

                function delayTick(now) {
                    if (now - this._startTime >= this.delay) {
                        this.tick = step
                    }
                    return true
                }

                function start(now) {
                    this._startTime = now;
                    this.tick = this.delay ? delayTick : step;
                    return true
                }

                function Animation(element, params, options) {
                    this._progress = 0;
                    this.element = element;
                    this.params = params;
                    this.options = options;
                    this.duration = options.partitionDuration ? options.duration * options.partitionDuration : options.duration;
                    this.delay = options.delay && options.duration * options.delay || 0;
                    this._animateStep = options.animateStep || animationSvgStep;
                    this._easing = easingFunctions[options.easing] || easingFunctions.easeOutCubic;
                    this._currentParams = {};
                    this.tick = start
                }
                Animation.prototype = {
                    _calcProgress: function(now) {
                        return Math.min(1, (now - this.delay - this._startTime) / this.duration)
                    },
                    stop: function(disableComplete) {
                        const options = this.options;
                        const animateStep = this._animateStep;
                        this.stop = this.tick = noop;
                        animateStep.complete && animateStep.complete(this.element, this._currentParams);
                        options.complete && !disableComplete && options.complete()
                    }
                };

                function AnimationController(element) {
                    this._animationCount = 0;
                    this._timerId = null;
                    this._animations = {};
                    this.element = element
                }
                AnimationController.prototype = {
                    _loop: function() {
                        const that = this;
                        const animations = that._animations;
                        let activeAnimation = 0;
                        const now = (new Date).getTime();
                        let an;
                        const endAnimation = that._endAnimation;
                        for (an in animations) {
                            if (!animations[an].tick(now)) {
                                delete animations[an]
                            }
                            activeAnimation++
                        }
                        if (0 === activeAnimation) {
                            that.stop();
                            that._endAnimationTimer = endAnimation && setTimeout((function() {
                                if (0 === that._animationCount) {
                                    endAnimation();
                                    that._endAnimation = null
                                }
                            }));
                            return
                        }
                        that._timerId = _frame.requestAnimationFrame.call(null, (function() {
                            that._loop()
                        }), that.element)
                    },
                    addAnimation: function(animation) {
                        const that = this;
                        that._animations[that._animationCount++] = animation;
                        clearTimeout(that._endAnimationTimer);
                        if (!that._timerId) {
                            clearTimeout(that._startDelay);
                            that._startDelay = setTimeout((function() {
                                that._timerId = 1;
                                that._loop()
                            }), 0)
                        }
                    },
                    animateElement: function(elem, params, options) {
                        if (elem && params && options) {
                            elem.animation && elem.animation.stop();
                            this.addAnimation(elem.animation = new Animation(elem, params, options))
                        }
                    },
                    onEndAnimation: function(endAnimation) {
                        this._animationCount ? this._endAnimation = endAnimation : endAnimation()
                    },
                    dispose: function() {
                        this.stop();
                        this.element = null
                    },
                    stop: function() {
                        this._animations = {};
                        this._animationCount = 0;
                        (0, _frame.cancelAnimationFrame)(this._timerId);
                        clearTimeout(this._startDelay);
                        clearTimeout(this._endAnimationTimer);
                        this._timerId = null
                    },
                    lock: function() {
                        let an;
                        const animations = this._animations;
                        let unstoppable;
                        let hasUnstoppableInAnimations;
                        for (an in animations) {
                            unstoppable = animations[an].options.unstoppable;
                            hasUnstoppableInAnimations = hasUnstoppableInAnimations || unstoppable;
                            if (!unstoppable) {
                                animations[an].stop(true);
                                delete animations[an]
                            }
                        }!hasUnstoppableInAnimations && this.stop()
                    }
                }
            },
        63022:
            /*!****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/core/renderers/renderer.js ***!
              \****************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.RectSvgElement = exports.PathSvgElement = exports.ArcSvgElement = void 0;
                exports.Renderer = Renderer;
                exports.TextSvgElement = exports.SvgElement = void 0;
                exports.getFuncIri = getFuncIri;
                exports.processHatchingAttrs = processHatchingAttrs;
                exports.refreshPaths = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 64553));
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../core/dom_adapter */ 64960));
                var _window = __webpack_require__( /*! ../../../core/utils/window */ 3104);
                var _call_once = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/call_once */ 13630));
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../common/core/events/core/events_engine */ 92774));
                var _svg = __webpack_require__( /*! ../../../core/utils/svg */ 47420);
                var _animation = __webpack_require__( /*! ./animation */ 35523);
                var _utils = __webpack_require__( /*! ../utils */ 28779);
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528);

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const window = (0, _window.getWindow)();
                const {
                    max: max,
                    round: round
                } = Math;
                const pxAddingExceptions = {
                    "column-count": true,
                    "fill-opacity": true,
                    "flex-grow": true,
                    "flex-shrink": true,
                    "font-weight": true,
                    "line-height": true,
                    opacity: true,
                    order: true,
                    orphans: true,
                    widows: true,
                    "z-index": true,
                    zoom: true
                };
                const NONE = "none";
                const objectCreate = function() {
                    if (!Object.create) {
                        return function(proto) {
                            const F = function() {};
                            F.prototype = proto;
                            return new F
                        }
                    } else {
                        return function(proto) {
                            return Object.create(proto)
                        }
                    }
                }();
                const DEFAULTS = {
                    scaleX: 1,
                    scaleY: 1,
                    "pointer-events": null
                };
                const getBackup = (0, _call_once.default)((function() {
                    const backupContainer = _dom_adapter.default.createElement("div");
                    backupContainer.style.left = "-9999px";
                    backupContainer.style.position = "absolute";
                    return {
                        backupContainer: backupContainer,
                        backupCounter: 0
                    }
                }));

                function isObjectArgument(value) {
                    return value && "string" !== typeof value
                }

                function createElement(tagName) {
                    return _dom_adapter.default.createElementNS("http://www.w3.org/2000/svg", tagName)
                }

                function getFuncIri(id, pathModified) {
                    return null !== id ? "url(" + (pathModified ? window.location.href.split("#")[0] : "") + "#" + id + ")" : id
                }

                function extend(target, source) {
                    let key;
                    for (key in source) {
                        target[key] = source[key]
                    }
                    return target
                }
                const preserveAspectRatioMap = {
                    full: NONE,
                    lefttop: "xMinYMin",
                    leftcenter: "xMinYMid",
                    leftbottom: "xMinYMax",
                    centertop: "xMidYMin",
                    center: "xMidYMid",
                    centerbottom: "xMidYMax",
                    righttop: "xMaxYMin",
                    rightcenter: "xMaxYMid",
                    rightbottom: "xMaxYMax"
                };

                function processHatchingAttrs(element, attrs) {
                    if (attrs.hatching && "none" !== (0, _utils.normalizeEnum)(attrs.hatching.direction)) {
                        attrs = extend({}, attrs);
                        attrs.fill = element._hatching = element.renderer.lockDefsElements({
                            color: attrs.fill,
                            hatching: attrs.hatching
                        }, element._hatching, "pattern");
                        delete attrs.filter
                    } else if (element._hatching) {
                        element.renderer.releaseDefsElements(element._hatching);
                        element._hatching = null;
                        delete attrs.filter
                    } else if (attrs.filter) {
                        attrs = extend({}, attrs);
                        attrs.filter = element._filter = element.renderer.lockDefsElements({}, element._filter, "filter")
                    } else if (element._filter) {
                        element.renderer.releaseDefsElements(element._filter);
                        element._filter = null
                    }
                    delete attrs.hatching;
                    return attrs
                }
                const buildArcPath = function(x, y, innerR, outerR, startAngleCos, startAngleSin, endAngleCos, endAngleSin, isCircle, longFlag) {
                    return ["M", (x + outerR * startAngleCos).toFixed(5), (y - outerR * startAngleSin).toFixed(5), "A", outerR.toFixed(5), outerR.toFixed(5), 0, longFlag, 0, (x + outerR * endAngleCos).toFixed(5), (y - outerR * endAngleSin).toFixed(5), isCircle ? "M" : "L", (x + innerR * endAngleCos).toFixed(5), (y - innerR * endAngleSin).toFixed(5), "A", innerR.toFixed(5), innerR.toFixed(5), 0, longFlag, 1, (x + innerR * startAngleCos).toFixed(5), (y - innerR * startAngleSin).toFixed(5), "Z"].join(" ")
                };

                function buildPathSegments(points, type) {
                    let list = [
                        ["M", 0, 0]
                    ];
                    switch (type) {
                        case "line":
                            list = buildLineSegments(points);
                            break;
                        case "area":
                            list = buildLineSegments(points, true);
                            break;
                        case "bezier":
                            list = buildCurveSegments(points);
                            break;
                        case "bezierarea":
                            list = buildCurveSegments(points, true)
                    }
                    return list
                }

                function buildLineSegments(points, close) {
                    return buildSegments(points, buildSimpleLineSegment, close)
                }

                function buildCurveSegments(points, close) {
                    return buildSegments(points, buildSimpleCurveSegment, close)
                }

                function buildSegments(points, buildSimpleSegment, close) {
                    var _points$;
                    let i;
                    let ii;
                    const list = [];
                    if (null !== (_points$ = points[0]) && void 0 !== _points$ && _points$.length) {
                        for (i = 0, ii = points.length; i < ii; ++i) {
                            buildSimpleSegment(points[i], close, list)
                        }
                    } else {
                        buildSimpleSegment(points, close, list)
                    }
                    return list
                }

                function buildSimpleLineSegment(points, close, list) {
                    let i = 0;
                    const k0 = list.length;
                    let k = k0;
                    const ii = (points || []).length;
                    if (ii) {
                        if (void 0 !== points[0].x) {
                            for (; i < ii;) {
                                list[k++] = ["L", points[i].x, points[i++].y]
                            }
                        } else {
                            for (; i < ii;) {
                                list[k++] = ["L", points[i++], points[i++]]
                            }
                        }
                        list[k0][0] = "M"
                    } else {
                        list[k] = ["M", 0, 0]
                    }
                    close && list.push(["Z"]);
                    return list
                }

                function buildSimpleCurveSegment(points, close, list) {
                    let i;
                    let k = list.length;
                    const ii = (points || []).length;
                    if (ii) {
                        if (void 0 !== points[0].x) {
                            list[k++] = ["M", points[0].x, points[0].y];
                            for (i = 1; i < ii;) {
                                list[k++] = ["C", points[i].x, points[i++].y, points[i].x, points[i++].y, points[i].x, points[i++].y]
                            }
                        } else {
                            list[k++] = ["M", points[0], points[1]];
                            for (i = 2; i < ii;) {
                                list[k++] = ["C", points[i++], points[i++], points[i++], points[i++], points[i++], points[i++]]
                            }
                        }
                    } else {
                        list[k] = ["M", 0, 0]
                    }
                    close && list.push(["Z"]);
                    return list
                }

                function prepareConstSegment(constSeg, type) {
                    const x = constSeg[constSeg.length - 2];
                    const y = constSeg[constSeg.length - 1];
                    switch (type) {
                        case "line":
                        case "area":
                            constSeg[0] = "L";
                            break;
                        case "bezier":
                        case "bezierarea":
                            constSeg[0] = "C";
                            constSeg[1] = constSeg[3] = constSeg[5] = x;
                            constSeg[2] = constSeg[4] = constSeg[6] = y
                    }
                }

                function makeEqualLineSegments(short, long, type) {
                    const constSeg = short[short.length - 1].slice();
                    let i = short.length;
                    prepareConstSegment(constSeg, type);
                    for (; i < long.length; i++) {
                        short[i] = constSeg.slice(0)
                    }
                }

                function makeEqualAreaSegments(short, long, type) {
                    let i;
                    let head;
                    const shortLength = short.length;
                    const longLength = long.length;
                    let constsSeg1;
                    let constsSeg2;
                    if ((shortLength - 1) % 2 === 0 && (longLength - 1) % 2 === 0) {
                        i = (shortLength - 1) / 2 - 1;
                        head = short.slice(0, i + 1);
                        constsSeg1 = head[head.length - 1].slice(0);
                        constsSeg2 = short.slice(i + 1)[0].slice(0);
                        prepareConstSegment(constsSeg1, type);
                        prepareConstSegment(constsSeg2, type);
                        for (let j = i; j < (longLength - 1) / 2 - 1; j++) {
                            short.splice(j + 1, 0, constsSeg1);
                            short.splice(j + 3, 0, constsSeg2)
                        }
                    }
                }

                function baseCss(that, styles) {
                    const elemStyles = that._styles;
                    let key;
                    let value;
                    styles = styles || {};
                    for (key in styles) {
                        value = styles[key];
                        if ((0, _type.isDefined)(value)) {
                            value += "number" === typeof value && !pxAddingExceptions[key] ? "px" : "";
                            elemStyles[key] = "" !== value ? value : null
                        }
                    }
                    for (key in elemStyles) {
                        value = elemStyles[key];
                        if (value) {
                            that.element.style[key] = value
                        } else if (null === value) {
                            that.element.style[key] = ""
                        }
                    }
                    return that
                }

                function fixFuncIri(wrapper, attribute) {
                    const element = wrapper.element;
                    const id = wrapper.attr(attribute);
                    if (id && -1 !== id.indexOf("DevExpress")) {
                        element.removeAttribute(attribute);
                        element.setAttribute(attribute, getFuncIri(id, wrapper.renderer.pathModified))
                    }
                }

                function baseAttr(that, attrs) {
                    attrs = attrs || {};
                    const settings = that._settings;
                    const attributes = {};
                    let key;
                    let value;
                    const elem = that.element;
                    const renderer = that.renderer;
                    const rtl = renderer.rtl;
                    let hasTransformations;
                    let recalculateDashStyle;
                    let sw;
                    let i;
                    if (!isObjectArgument(attrs)) {
                        if (attrs in settings) {
                            return settings[attrs]
                        }
                        if (attrs in DEFAULTS) {
                            return DEFAULTS[attrs]
                        }
                        return 0
                    }
                    extend(attributes, attrs);
                    for (key in attributes) {
                        value = attributes[key];
                        if (void 0 === value) {
                            continue
                        }
                        settings[key] = value;
                        if ("align" === key) {
                            key = "text-anchor";
                            value = {
                                left: rtl ? "end" : "start",
                                center: "middle",
                                right: rtl ? "start" : "end"
                            } [value] || null
                        } else if ("dashStyle" === key) {
                            recalculateDashStyle = true;
                            continue
                        } else if ("stroke-width" === key) {
                            recalculateDashStyle = true
                        } else if (value && ("fill" === key || "clip-path" === key || "filter" === key) && 0 === value.indexOf("DevExpress")) {
                            that._addFixIRICallback();
                            value = getFuncIri(value, renderer.pathModified)
                        } else if (/^(translate(X|Y)|rotate[XY]?|scale(X|Y)|sharp|sharpDirection)$/i.test(key)) {
                            hasTransformations = true;
                            continue
                        } else if (/^(x|y|d)$/i.test(key)) {
                            hasTransformations = true
                        }
                        if (null === value) {
                            elem.removeAttribute(key)
                        } else {
                            elem.setAttribute(key, value)
                        }
                    }
                    if (recalculateDashStyle && "dashStyle" in settings) {
                        value = settings.dashStyle;
                        sw = ("_originalSW" in that ? that._originalSW : settings["stroke-width"]) || 1;
                        key = "stroke-dasharray";
                        value = null === value ? "" : (0, _utils.normalizeEnum)(value);
                        if ("" === value || "solid" === value || value === NONE) {
                            that.element.removeAttribute(key)
                        } else {
                            value = value.replace(/longdash/g, "8,3,").replace(/dash/g, "4,3,").replace(/dot/g, "1,3,").replace(/,$/, "").split(",");
                            i = value.length;
                            while (i--) {
                                value[i] = parseInt(value[i]) * sw
                            }
                            that.element.setAttribute(key, value.join(","))
                        }
                    }
                    if (hasTransformations) {
                        that._applyTransformation()
                    }
                    return that
                }

                function orderHtmlTree(list, line, node, parentStyle, parentClassName) {
                    let style;
                    let realStyle;
                    let i;
                    let ii;
                    let nodes;
                    if (void 0 !== node.wholeText) {
                        list.push({
                            value: node.wholeText,
                            style: parentStyle,
                            className: parentClassName,
                            line: line,
                            height: parentStyle["font-size"] || 0
                        })
                    } else if ("BR" === node.tagName) {
                        ++line
                    } else if (_dom_adapter.default.isElementNode(node)) {
                        extend(style = {}, parentStyle);
                        switch (node.tagName) {
                            case "B":
                            case "STRONG":
                                style["font-weight"] = "bold";
                                break;
                            case "I":
                            case "EM":
                                style["font-style"] = "italic";
                                break;
                            case "U":
                                style["text-decoration"] = "underline"
                        }
                        realStyle = node.style;
                        realStyle.color && (style.fill = realStyle.color);
                        realStyle.fontSize && (style["font-size"] = realStyle.fontSize);
                        realStyle.fontStyle && (style["font-style"] = realStyle.fontStyle);
                        realStyle.fontWeight && (style["font-weight"] = realStyle.fontWeight);
                        realStyle.textDecoration && (style["text-decoration"] = realStyle.textDecoration);
                        for (i = 0, nodes = node.childNodes, ii = nodes.length; i < ii; ++i) {
                            line = orderHtmlTree(list, line, nodes[i], style, node.className || parentClassName)
                        }
                    }
                    return line
                }

                function createTspans(items, element, fieldName) {
                    let i;
                    let ii;
                    let item;
                    for (i = 0, ii = items.length; i < ii; ++i) {
                        item = items[i];
                        item[fieldName] = createElement("tspan");
                        item[fieldName].appendChild(_dom_adapter.default.createTextNode(item.value));
                        item.style && baseCss({
                            element: item[fieldName],
                            _styles: {}
                        }, item.style);
                        item.className && item[fieldName].setAttribute("class", item.className);
                        element.appendChild(item[fieldName])
                    }
                }

                function restoreText() {
                    if (this._hasEllipsis) {
                        this.attr({
                            text: this._settings.text
                        })
                    }
                }

                function cloneAndRemoveAttrs(node) {
                    let clone;
                    if (node) {
                        clone = node.cloneNode();
                        clone.removeAttribute("y");
                        clone.removeAttribute("x")
                    }
                    return clone || node
                }

                function detachTitleElements(element) {
                    const titleElements = _dom_adapter.default.querySelectorAll(element, "title");
                    for (let i = 0; i < titleElements.length; i++) {
                        element.removeChild(titleElements[i])
                    }
                    return titleElements
                }

                function getIndexForEllipsis(text, maxWidth, startBox, endBox) {
                    let k;
                    let kk;
                    if (startBox <= maxWidth && endBox > maxWidth) {
                        for (k = 1, kk = text.value.length; k <= kk; ++k) {
                            if (startBox + text.tspan.getSubStringLength(0, k) > maxWidth) {
                                return k - 1
                            }
                        }
                    }
                }

                function getTextWidth(text) {
                    return text.value.length ? text.tspan.getSubStringLength(0, text.value.length) : 0
                }

                function getEllipsisString(ellipsisMaxWidth, _ref) {
                    let {
                        hideOverflowEllipsis: hideOverflowEllipsis
                    } = _ref;
                    return hideOverflowEllipsis && 0 === ellipsisMaxWidth ? "" : "..."
                }

                function setEllipsis(text, ellipsisMaxWidth, options) {
                    const ellipsis = getEllipsisString(ellipsisMaxWidth, options);
                    if (text.value.length && text.tspan.parentNode) {
                        for (let i = text.value.length - 1; i >= 1; i--) {
                            if (text.startBox + text.tspan.getSubStringLength(0, i) < ellipsisMaxWidth) {
                                setNewText(text, i, ellipsis);
                                break
                            } else if (1 === i) {
                                setNewText(text, 0, ellipsis)
                            }
                        }
                    }
                }

                function wordWrap(text, maxWidth, ellipsisMaxWidth, options, lastStepBreakIndex) {
                    const wholeText = text.value;
                    let breakIndex;
                    if ("none" !== options.wordWrap) {
                        breakIndex = "normal" === options.wordWrap ? function(text, maxWidth) {
                            const initialIndices = text.startBox > 0 ? [0] : [];
                            const spaceIndices = text.value.split("").reduce(((indices, char, index) => {
                                if (" " === char) {
                                    indices.push(index)
                                }
                                return indices
                            }), initialIndices);
                            let spaceIndex = 0;
                            while (void 0 !== spaceIndices[spaceIndex + 1] && text.startBox + text.tspan.getSubStringLength(0, spaceIndices[spaceIndex + 1]) < maxWidth) {
                                spaceIndex++
                            }
                            return spaceIndices[spaceIndex]
                        }(text, maxWidth) : function(text, maxWidth) {
                            for (let i = 0; i < text.value.length - 1; i++) {
                                if (text.startBox + text.tspan.getSubStringLength(0, i + 1) > maxWidth) {
                                    return i
                                }
                            }
                        }(text, maxWidth)
                    }
                    let restLines = [];
                    let restText;
                    if (isFinite(breakIndex) && !(0 === lastStepBreakIndex && 0 === breakIndex)) {
                        setNewText(text, breakIndex, "");
                        const newTextOffset = " " === wholeText[breakIndex] ? 1 : 0;
                        const restString = wholeText.slice(breakIndex + newTextOffset);
                        if (restString.length) {
                            const restTspan = cloneAndRemoveAttrs(text.tspan);
                            restTspan.textContent = restString;
                            text.tspan.parentNode.appendChild(restTspan);
                            restText = extend(extend({}, text), {
                                value: restString,
                                startBox: 0,
                                height: 0,
                                tspan: restTspan,
                                stroke: cloneAndRemoveAttrs(text.stroke),
                                endBox: restTspan.getSubStringLength(0, restString.length)
                            });
                            restText.stroke && (restText.stroke.textContent = restString);
                            if (restText.endBox > maxWidth) {
                                restLines = wordWrap(restText, maxWidth, ellipsisMaxWidth, options, breakIndex);
                                if (!restLines.length) {
                                    return []
                                }
                            }
                        }
                    }
                    if (text.value.length) {
                        if ("ellipsis" === options.textOverflow && text.tspan.getSubStringLength(0, text.value.length) > maxWidth) {
                            setEllipsis(text, ellipsisMaxWidth, options)
                        }
                        if ("hide" === options.textOverflow && text.tspan.getSubStringLength(0, text.value.length) > maxWidth) {
                            return []
                        }
                    } else {
                        text.tspan.parentNode.removeChild(text.tspan)
                    }
                    const parts = [];
                    if (restText) {
                        parts.push(restText)
                    }
                    return [{
                        commonLength: wholeText.length,
                        parts: parts
                    }].concat(restLines)
                }

                function setNewText(text, index) {
                    let insertString = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : "...";
                    const newText = text.value.substr(0, index) + insertString;
                    text.value = text.tspan.textContent = newText;
                    text.stroke && (text.stroke.textContent = newText);
                    if ("..." === insertString) {
                        text.hasEllipsis = true
                    }
                }

                function removeTextSpan(text) {
                    text.tspan.parentNode && text.tspan.parentNode.removeChild(text.tspan);
                    text.stroke && text.stroke.parentNode && text.stroke.parentNode.removeChild(text.stroke)
                }

                function setTextNodeAttribute(item, name, value) {
                    item.tspan.setAttribute(name, value);
                    item.stroke && item.stroke.setAttribute(name, value)
                }

                function getItemLineHeight(item, defaultValue) {
                    return item.inherits ? maxLengthFontSize(item.height, defaultValue) : item.height || defaultValue
                }

                function locateTextNodes(wrapper) {
                    if (!wrapper._texts) {
                        return
                    }
                    const items = wrapper._texts;
                    const x = wrapper._settings.x;
                    const lineHeight = wrapper._getLineHeight();
                    let i;
                    let ii;
                    let item = items[0];
                    setTextNodeAttribute(item, "x", x);
                    setTextNodeAttribute(item, "y", wrapper._settings.y);
                    for (i = 1, ii = items.length; i < ii; ++i) {
                        item = items[i];
                        if (parseFloat(item.height) >= 0) {
                            setTextNodeAttribute(item, "x", x);
                            const height = getItemLineHeight(item, lineHeight);
                            setTextNodeAttribute(item, "dy", height)
                        }
                    }
                }

                function maxLengthFontSize(fontSize1, fontSize2) {
                    const parsedHeight1 = parseFloat(fontSize1);
                    const parsedHeight2 = parseFloat(fontSize2);
                    const height1 = parsedHeight1 || 12;
                    const height2 = parsedHeight2 || 12;
                    return height1 > height2 ? !isNaN(parsedHeight1) ? fontSize1 : height1 : !isNaN(parsedHeight2) ? fontSize2 : height2
                }

                function baseAnimate(that, params, options, complete) {
                    options = options || {};
                    let key;
                    let value;
                    const renderer = that.renderer;
                    const settings = that._settings;
                    const animationParams = {};
                    const defaults = {
                        translateX: 0,
                        translateY: 0,
                        scaleX: 1,
                        scaleY: 1,
                        rotate: 0,
                        rotateX: 0,
                        rotateY: 0
                    };
                    if (complete) {
                        options.complete = complete
                    }
                    if (renderer.animationEnabled()) {
                        for (key in params) {
                            value = params[key];
                            if (/^(translate(X|Y)|rotate[XY]?|scale(X|Y))$/i.test(key)) {
                                animationParams.transform = animationParams.transform || {
                                    from: {},
                                    to: {}
                                };
                                animationParams.transform.from[key] = key in settings ? Number(settings[key].toFixed(3)) : defaults[key];
                                animationParams.transform.to[key] = value
                            } else if ("arc" === key || "segments" === key) {
                                animationParams[key] = value
                            } else {
                                animationParams[key] = {
                                    from: key in settings ? settings[key] : parseFloat(that.element.getAttribute(key) || 0),
                                    to: value
                                }
                            }
                        }
                        renderer.animateElement(that, animationParams, extend(extend({}, renderer._animation), options))
                    } else {
                        options.step && options.step.call(that, 1, 1);
                        options.complete && options.complete.call(that);
                        that.attr(params)
                    }
                    return that
                }

                function buildLink(target, parameters) {
                    const obj = {
                        is: false,
                        name: parameters.name || parameters,
                        after: parameters.after
                    };
                    if (target) {
                        obj.to = target
                    } else {
                        obj.virtual = true
                    }
                    return obj
                }
                let SvgElement = function(renderer, tagName, type) {
                    const that = this;
                    that.renderer = renderer;
                    that.element = createElement(tagName);
                    that._settings = {};
                    that._styles = {};
                    if ("path" === tagName) {
                        that.type = type || "line"
                    }
                };
                exports.SvgElement = SvgElement;

                function removeFuncIriCallback(callback) {
                    fixFuncIriCallbacks.remove(callback)
                }
                SvgElement.prototype = {
                    constructor: SvgElement,
                    _getJQElement: function() {
                        return this._$element || (this._$element = (0, _renderer.default)(this.element))
                    },
                    _addFixIRICallback: function() {
                        const that = this;
                        const fn = function() {
                            fixFuncIri(that, "fill");
                            fixFuncIri(that, "clip-path");
                            fixFuncIri(that, "filter")
                        };
                        that.element._fixFuncIri = fn;
                        fn.renderer = that.renderer;
                        fixFuncIriCallbacks.add(fn);
                        that._addFixIRICallback = function() {}
                    },
                    _clearChildrenFuncIri: function() {
                        const clearChildren = function(element) {
                            let i;
                            for (i = 0; i < element.childNodes.length; i++) {
                                removeFuncIriCallback(element.childNodes[i]._fixFuncIri);
                                clearChildren(element.childNodes[i])
                            }
                        };
                        clearChildren(this.element)
                    },
                    dispose: function() {
                        removeFuncIriCallback(this.element._fixFuncIri);
                        this._clearChildrenFuncIri();
                        this._getJQElement().remove();
                        return this
                    },
                    append: function(parent) {
                        (parent || this.renderer.root).element.appendChild(this.element);
                        return this
                    },
                    remove: function() {
                        const element = this.element;
                        element.parentNode && element.parentNode.removeChild(element);
                        return this
                    },
                    enableLinks: function() {
                        this._links = [];
                        return this
                    },
                    virtualLink: function(parameters) {
                        linkItem({
                            _link: buildLink(null, parameters)
                        }, this);
                        return this
                    },
                    linkAfter: function(name) {
                        this._linkAfter = name;
                        return this
                    },
                    linkOn: function(target, parameters) {
                        this._link = buildLink(target, parameters);
                        linkItem(this, target);
                        return this
                    },
                    linkOff: function() {
                        ! function(target) {
                            let i;
                            const items = target._link.to._links;
                            for (i = 0; items[i] !== target; ++i) {}
                            items.splice(i, 1);
                            updateIndexes(items, i)
                        }(this);
                        this._link = null;
                        return this
                    },
                    linkAppend: function() {
                        const link = this._link;
                        const items = link.to._links;
                        let i;
                        let next;
                        for (i = link.i + 1;
                            (next = items[i]) && !next._link.is; ++i) {}
                        this._insert(link.to, next);
                        link.is = true;
                        return this
                    },
                    _insert: function(parent, next) {
                        parent.element.insertBefore(this.element, next ? next.element : null)
                    },
                    linkRemove: function() {
                        this.remove();
                        this._link.is = false;
                        return this
                    },
                    clear: function() {
                        this._clearChildrenFuncIri();
                        this._getJQElement().empty();
                        return this
                    },
                    toBackground: function() {
                        const elem = this.element;
                        const parent = elem.parentNode;
                        parent && parent.insertBefore(elem, parent.firstChild);
                        return this
                    },
                    toForeground: function() {
                        const elem = this.element;
                        const parent = elem.parentNode;
                        parent && parent.appendChild(elem);
                        return this
                    },
                    attr: function(attrs) {
                        return baseAttr(this, attrs)
                    },
                    smartAttr: function(attrs) {
                        return this.attr(processHatchingAttrs(this, attrs))
                    },
                    css: function(styles) {
                        return baseCss(this, styles)
                    },
                    animate: function(params, options, complete) {
                        return baseAnimate(this, params, options, complete)
                    },
                    sharp(pos, sharpDirection) {
                        return this.attr({
                            sharp: pos || true,
                            sharpDirection: sharpDirection
                        })
                    },
                    _applyTransformation() {
                        const tr = this._settings;
                        let rotateX;
                        let rotateY;
                        const transformations = [];
                        const sharpMode = tr.sharp;
                        const trDirection = tr.sharpDirection || 1;
                        const strokeOdd = tr["stroke-width"] % 2;
                        const correctionX = strokeOdd && ("h" === sharpMode || true === sharpMode) ? .5 * trDirection : 0;
                        const correctionY = strokeOdd && ("v" === sharpMode || true === sharpMode) ? .5 * trDirection : 0;
                        transformations.push("translate(" + ((tr.translateX || 0) + correctionX) + "," + ((tr.translateY || 0) + correctionY) + ")");
                        if (tr.rotate) {
                            if ("rotateX" in tr) {
                                rotateX = tr.rotateX
                            } else {
                                rotateX = tr.x
                            }
                            if ("rotateY" in tr) {
                                rotateY = tr.rotateY
                            } else {
                                rotateY = tr.y
                            }
                            transformations.push("rotate(" + tr.rotate + "," + (rotateX || 0) + "," + (rotateY || 0) + ")")
                        }
                        const scaleXDefined = (0, _type.isDefined)(tr.scaleX);
                        const scaleYDefined = (0, _type.isDefined)(tr.scaleY);
                        if (scaleXDefined || scaleYDefined) {
                            transformations.push("scale(" + (scaleXDefined ? tr.scaleX : 1) + "," + (scaleYDefined ? tr.scaleY : 1) + ")")
                        }
                        if (transformations.length) {
                            this.element.setAttribute("transform", transformations.join(" "))
                        }
                    },
                    move: function(x, y, animate, animOptions) {
                        const obj = {};
                        (0, _type.isDefined)(x) && (obj.translateX = x);
                        (0, _type.isDefined)(y) && (obj.translateY = y);
                        if (!animate) {
                            this.attr(obj)
                        } else {
                            this.animate(obj, animOptions)
                        }
                        return this
                    },
                    rotate: function(angle, x, y, animate, animOptions) {
                        const obj = {
                            rotate: angle || 0
                        };
                        (0, _type.isDefined)(x) && (obj.rotateX = x);
                        (0, _type.isDefined)(y) && (obj.rotateY = y);
                        if (!animate) {
                            this.attr(obj)
                        } else {
                            this.animate(obj, animOptions)
                        }
                        return this
                    },
                    _getElementBBox: function() {
                        const elem = this.element;
                        let bBox;
                        try {
                            bBox = elem.getBBox && elem.getBBox()
                        } catch (e) {}
                        return bBox || {
                            x: 0,
                            y: 0,
                            width: elem.offsetWidth || 0,
                            height: elem.offsetHeight || 0
                        }
                    },
                    getBBox: function() {
                        const transformation = this._settings;
                        let bBox = this._getElementBBox();
                        if (transformation.rotate) {
                            bBox = (0, _utils.rotateBBox)(bBox, [("rotateX" in transformation ? transformation.rotateX : transformation.x) || 0, ("rotateY" in transformation ? transformation.rotateY : transformation.y) || 0], -transformation.rotate)
                        } else {
                            bBox = (0, _utils.normalizeBBox)(bBox)
                        }
                        return bBox
                    },
                    markup: function() {
                        return (0, _svg.getSvgMarkup)(this.element)
                    },
                    getOffset: function() {
                        return this._getJQElement().offset()
                    },
                    stopAnimation: function(disableComplete) {
                        const animation = this.animation;
                        animation && animation.stop(disableComplete);
                        return this
                    },
                    setTitle: function(text) {
                        const titleElem = createElement("title");
                        titleElem.textContent = text || "";
                        this.element.appendChild(titleElem)
                    },
                    removeTitle() {
                        detachTitleElements(this.element)
                    },
                    data: function(obj, val) {
                        const elem = this.element;
                        let key;
                        if (void 0 !== val) {
                            elem[obj] = val
                        } else {
                            for (key in obj) {
                                elem[key] = obj[key]
                            }
                        }
                        return this
                    },
                    on: function() {
                        const args = [this._getJQElement()];
                        args.push.apply(args, arguments);
                        _events_engine.default.on.apply(_events_engine.default, args);
                        return this
                    },
                    off: function() {
                        const args = [this._getJQElement()];
                        args.push.apply(args, arguments);
                        _events_engine.default.off.apply(_events_engine.default, args);
                        return this
                    },
                    trigger: function() {
                        const args = [this._getJQElement()];
                        args.push.apply(args, arguments);
                        _events_engine.default.trigger.apply(_events_engine.default, args);
                        return this
                    }
                };
                let PathSvgElement = function(renderer, type) {
                    SvgElement.call(this, renderer, "path", type)
                };
                exports.PathSvgElement = PathSvgElement;
                PathSvgElement.prototype = objectCreate(SvgElement.prototype);
                extend(PathSvgElement.prototype, {
                    constructor: PathSvgElement,
                    attr: function(attrs) {
                        const that = this;
                        let segments;
                        if (isObjectArgument(attrs)) {
                            attrs = extend({}, attrs);
                            segments = attrs.segments;
                            if ("points" in attrs) {
                                segments = buildPathSegments(attrs.points, that.type);
                                delete attrs.points
                            }
                            if (segments) {
                                attrs.d = function(segments) {
                                    const d = [];
                                    let k = 0;
                                    let i;
                                    const ii = segments.length;
                                    let segment;
                                    let j;
                                    let jj;
                                    for (i = 0; i < ii; ++i) {
                                        segment = segments[i];
                                        for (j = 0, jj = segment.length; j < jj; ++j) {
                                            d[k++] = segment[j]
                                        }
                                    }
                                    return d.join(" ")
                                }(segments);
                                that.segments = segments;
                                delete attrs.segments
                            }
                        }
                        return baseAttr(that, attrs)
                    },
                    animate: function(params, options, complete) {
                        const that = this;
                        const curSegments = that.segments || [];
                        let newSegments;
                        let endSegments;
                        if (that.renderer.animationEnabled() && "points" in params) {
                            newSegments = buildPathSegments(params.points, that.type);
                            endSegments = function(oldSegments, newSegments, type) {
                                const oldLength = oldSegments.length;
                                const newLength = newSegments.length;
                                let i;
                                let originalNewSegments;
                                const makeEqualSegments = -1 !== type.indexOf("area") ? makeEqualAreaSegments : makeEqualLineSegments;
                                if (0 === oldLength) {
                                    for (i = 0; i < newLength; i++) {
                                        oldSegments.push(newSegments[i].slice(0))
                                    }
                                } else if (oldLength < newLength) {
                                    makeEqualSegments(oldSegments, newSegments, type)
                                } else if (oldLength > newLength) {
                                    originalNewSegments = newSegments.slice(0);
                                    makeEqualSegments(newSegments, oldSegments, type)
                                }
                                return originalNewSegments
                            }(curSegments, newSegments, that.type);
                            params.segments = {
                                from: curSegments,
                                to: newSegments,
                                end: endSegments
                            };
                            delete params.points
                        }
                        return baseAnimate(that, params, options, complete)
                    }
                });
                let ArcSvgElement = function(renderer) {
                    SvgElement.call(this, renderer, "path", "arc")
                };
                exports.ArcSvgElement = ArcSvgElement;
                ArcSvgElement.prototype = objectCreate(SvgElement.prototype);
                extend(ArcSvgElement.prototype, {
                    constructor: ArcSvgElement,
                    attr: function(attrs) {
                        const settings = this._settings;
                        let x;
                        let y;
                        let innerRadius;
                        let outerRadius;
                        let startAngle;
                        let endAngle;
                        if (isObjectArgument(attrs)) {
                            attrs = extend({}, attrs);
                            if ("x" in attrs || "y" in attrs || "innerRadius" in attrs || "outerRadius" in attrs || "startAngle" in attrs || "endAngle" in attrs) {
                                settings.x = x = "x" in attrs ? attrs.x : settings.x;
                                delete attrs.x;
                                settings.y = y = "y" in attrs ? attrs.y : settings.y;
                                delete attrs.y;
                                settings.innerRadius = innerRadius = "innerRadius" in attrs ? attrs.innerRadius : settings.innerRadius;
                                delete attrs.innerRadius;
                                settings.outerRadius = outerRadius = "outerRadius" in attrs ? attrs.outerRadius : settings.outerRadius;
                                delete attrs.outerRadius;
                                settings.startAngle = startAngle = "startAngle" in attrs ? attrs.startAngle : settings.startAngle;
                                delete attrs.startAngle;
                                settings.endAngle = endAngle = "endAngle" in attrs ? attrs.endAngle : settings.endAngle;
                                delete attrs.endAngle;
                                attrs.d = buildArcPath.apply(null, (0, _utils.normalizeArcParams)(x, y, innerRadius, outerRadius, startAngle, endAngle))
                            }
                        }
                        return baseAttr(this, attrs)
                    },
                    animate: function(params, options, complete) {
                        const settings = this._settings;
                        const arcParams = {
                            from: {},
                            to: {}
                        };
                        if (this.renderer.animationEnabled() && ("x" in params || "y" in params || "innerRadius" in params || "outerRadius" in params || "startAngle" in params || "endAngle" in params)) {
                            arcParams.from.x = settings.x || 0;
                            arcParams.from.y = settings.y || 0;
                            arcParams.from.innerRadius = settings.innerRadius || 0;
                            arcParams.from.outerRadius = settings.outerRadius || 0;
                            arcParams.from.startAngle = settings.startAngle || 0;
                            arcParams.from.endAngle = settings.endAngle || 0;
                            arcParams.to.x = "x" in params ? params.x : settings.x;
                            delete params.x;
                            arcParams.to.y = "y" in params ? params.y : settings.y;
                            delete params.y;
                            arcParams.to.innerRadius = "innerRadius" in params ? params.innerRadius : settings.innerRadius;
                            delete params.innerRadius;
                            arcParams.to.outerRadius = "outerRadius" in params ? params.outerRadius : settings.outerRadius;
                            delete params.outerRadius;
                            arcParams.to.startAngle = "startAngle" in params ? params.startAngle : settings.startAngle;
                            delete params.startAngle;
                            arcParams.to.endAngle = "endAngle" in params ? params.endAngle : settings.endAngle;
                            delete params.endAngle;
                            params.arc = arcParams
                        }
                        return baseAnimate(this, params, options, complete)
                    }
                });
                let RectSvgElement = function(renderer) {
                    SvgElement.call(this, renderer, "rect")
                };
                exports.RectSvgElement = RectSvgElement;
                RectSvgElement.prototype = objectCreate(SvgElement.prototype);
                extend(RectSvgElement.prototype, {
                    constructor: RectSvgElement,
                    attr: function(attrs) {
                        const that = this;
                        let x;
                        let y;
                        let width;
                        let height;
                        let sw;
                        let maxSW;
                        let newSW;
                        if (isObjectArgument(attrs)) {
                            attrs = extend({}, attrs);
                            if (void 0 !== attrs.x || void 0 !== attrs.y || void 0 !== attrs.width || void 0 !== attrs.height || void 0 !== attrs["stroke-width"]) {
                                void 0 !== attrs.x ? x = that._originalX = attrs.x : x = that._originalX || 0;
                                void 0 !== attrs.y ? y = that._originalY = attrs.y : y = that._originalY || 0;
                                void 0 !== attrs.width ? width = that._originalWidth = attrs.width : width = that._originalWidth || 0;
                                void 0 !== attrs.height ? height = that._originalHeight = attrs.height : height = that._originalHeight || 0;
                                void 0 !== attrs["stroke-width"] ? sw = that._originalSW = attrs["stroke-width"] : sw = that._originalSW;
                                maxSW = ~~((width < height ? width : height) / 2);
                                newSW = (sw || 0) < maxSW ? sw || 0 : maxSW;
                                attrs.x = x + newSW / 2;
                                attrs.y = y + newSW / 2;
                                attrs.width = width - newSW;
                                attrs.height = height - newSW;
                                ((sw || 0) !== newSW || !(0 === newSW && void 0 === sw)) && (attrs["stroke-width"] = newSW)
                            }
                            if ("sharp" in attrs) {
                                delete attrs.sharp
                            }
                        }
                        return baseAttr(that, attrs)
                    }
                });
                let TextSvgElement = function(renderer) {
                    SvgElement.call(this, renderer, "text");
                    this.css({
                        "white-space": "pre"
                    })
                };
                exports.TextSvgElement = TextSvgElement;
                TextSvgElement.prototype = objectCreate(SvgElement.prototype);
                extend(TextSvgElement.prototype, {
                    constructor: TextSvgElement,
                    attr: function(attrs) {
                        const that = this;
                        let isResetRequired;
                        if (!isObjectArgument(attrs)) {
                            return baseAttr(that, attrs)
                        }
                        attrs = extend({}, attrs);
                        const settings = that._settings;
                        const wasStroked = (0, _type.isDefined)(settings.stroke) && (0, _type.isDefined)(settings["stroke-width"]);
                        if (void 0 !== attrs.text) {
                            settings.text = attrs.text;
                            delete attrs.text;
                            isResetRequired = true
                        }
                        if (void 0 !== attrs.stroke) {
                            settings.stroke = attrs.stroke;
                            delete attrs.stroke
                        }
                        if (void 0 !== attrs["stroke-width"]) {
                            settings["stroke-width"] = attrs["stroke-width"];
                            delete attrs["stroke-width"]
                        }
                        if (void 0 !== attrs["stroke-opacity"]) {
                            settings["stroke-opacity"] = attrs["stroke-opacity"];
                            delete attrs["stroke-opacity"]
                        }
                        if (void 0 !== attrs.textsAlignment) {
                            ! function(wrapper, alignment) {
                                if (!wrapper._texts || "center" === alignment) {
                                    return
                                }
                                const items = wrapper._texts;
                                const direction = "left" === alignment ? -1 : 1;
                                const maxTextWidth = Math.max.apply(Math, items.map((t => getTextWidth(t))));
                                for (let i = 0; i < items.length; i++) {
                                    const item = items[i];
                                    const textWidth = getTextWidth(item);
                                    if (0 !== maxTextWidth && maxTextWidth !== textWidth) {
                                        setTextNodeAttribute(item, "dx", direction * round((maxTextWidth - textWidth) / 2 * 10) / 10)
                                    }
                                }
                            }(that, attrs.textsAlignment);
                            delete attrs.textsAlignment
                        }
                        const isStroked = (0, _type.isDefined)(settings.stroke) && (0, _type.isDefined)(settings["stroke-width"]);
                        baseAttr(that, attrs);
                        isResetRequired = isResetRequired || isStroked !== wasStroked && settings.text;
                        if (isResetRequired) {
                            ! function(wrapper, text, isStroked) {
                                let items;
                                let parsedHtml;
                                wrapper._texts = null;
                                wrapper.clear();
                                if (null === text) {
                                    return
                                }
                                text = "" + text;
                                if (!wrapper.renderer.encodeHtml && (/<[a-z][\s\S]*>/i.test(text) || -1 !== text.indexOf("&"))) {
                                    parsedHtml = function(html) {
                                        const findTagAttrs = /(?:(<[a-z0-9]+\s*))([\s\S]*?)(>|\/>)/gi;
                                        const findStyleAndClassAttrs = /(style|class)\s*=\s*(["'])(?:(?!\2).)*\2\s?/gi;
                                        return html.replace(findTagAttrs, (function(allTagAttrs, p1, p2, p3) {
                                            p2 = (p2 && p2.match(findStyleAndClassAttrs) || []).map((function(str) {
                                                return str
                                            })).join(" ");
                                            return p1 + p2 + p3
                                        }))
                                    }(text);
                                    items = function(text) {
                                        const items = [];
                                        const div = _dom_adapter.default.createElement("div");
                                        div.innerHTML = text.replace(/\r/g, "").replace(/\n/g, "<br/>").replace(/style=/g, "data-style=");
                                        div.querySelectorAll("[data-style]").forEach((element => {
                                            element.style = element.getAttribute("data-style");
                                            element.removeAttribute("data-style")
                                        }));
                                        orderHtmlTree(items, 0, div, {}, "");
                                        ! function(items) {
                                            let i;
                                            let ii;
                                            let currentItem = items[0];
                                            let item;
                                            for (i = 1, ii = items.length; i < ii; ++i) {
                                                item = items[i];
                                                if (item.line === currentItem.line) {
                                                    currentItem.height = maxLengthFontSize(currentItem.height, item.height);
                                                    currentItem.inherits = currentItem.inherits || 0 === parseFloat(item.height);
                                                    item.height = NaN
                                                } else {
                                                    currentItem = item
                                                }
                                            }
                                        }(items);
                                        return items
                                    }(parsedHtml)
                                } else if (/\n/g.test(text)) {
                                    items = function(text) {
                                        const texts = text.replace(/\r/g, "").split(/\n/g);
                                        let i = 0;
                                        const items = [];
                                        for (; i < texts.length; i++) {
                                            items.push({
                                                value: texts[i].trim(),
                                                height: 0,
                                                line: i
                                            })
                                        }
                                        return items
                                    }(text)
                                } else if (isStroked) {
                                    items = [{
                                        value: text.trim(),
                                        height: 0
                                    }]
                                }
                                if (items) {
                                    if (items.length) {
                                        wrapper._texts = items;
                                        if (isStroked) {
                                            createTspans(items, wrapper.element, "stroke")
                                        }
                                        createTspans(items, wrapper.element, "tspan")
                                    }
                                } else {
                                    wrapper.element.appendChild(_dom_adapter.default.createTextNode(text))
                                }
                            }(that, settings.text, isStroked);
                            that._hasEllipsis = false
                        }
                        if (isResetRequired || void 0 !== attrs.x || void 0 !== attrs.y) {
                            locateTextNodes(that)
                        }
                        if (isStroked) {
                            ! function(wrapper) {
                                if (!wrapper._texts) {
                                    return
                                }
                                const items = wrapper._texts;
                                const stroke = wrapper._settings.stroke;
                                const strokeWidth = wrapper._settings["stroke-width"];
                                const strokeOpacity = wrapper._settings["stroke-opacity"] || 1;
                                let tspan;
                                let i;
                                let ii;
                                for (i = 0, ii = items.length; i < ii; ++i) {
                                    tspan = items[i].stroke;
                                    tspan.setAttribute("stroke", stroke);
                                    tspan.setAttribute("stroke-width", strokeWidth);
                                    tspan.setAttribute("stroke-opacity", strokeOpacity);
                                    tspan.setAttribute("stroke-linejoin", "round")
                                }
                            }(that)
                        }
                        return that
                    },
                    css: function(styles) {
                        styles = styles || {};
                        baseCss(this, styles);
                        if ("font-size" in styles) {
                            locateTextNodes(this)
                        }
                        return this
                    },
                    applyEllipsis: function(maxWidth) {
                        const that = this;
                        let lines;
                        let hasEllipsis = false;
                        let i;
                        let ii;
                        let lineParts;
                        let j;
                        let jj;
                        let text;
                        restoreText.call(that);
                        const ellipsis = that.renderer.text("...").attr(that._styles).append(that.renderer.root);
                        const ellipsisWidth = ellipsis.getBBox().width;
                        if (that._getElementBBox().width > maxWidth) {
                            if (maxWidth - ellipsisWidth < 0) {
                                maxWidth = 0
                            } else {
                                maxWidth -= ellipsisWidth
                            }
                            lines = function(element, texts, maxWidth) {
                                let lines = [];
                                let i;
                                let ii;
                                let text;
                                let startBox;
                                let endBox;
                                if (texts) {
                                    for (i = 0, ii = texts.length; i < ii; ++i) {
                                        text = texts[i];
                                        if (!lines[text.line]) {
                                            text.startBox = startBox = 0;
                                            lines.push({
                                                commonLength: text.value.length,
                                                parts: [text]
                                            })
                                        } else {
                                            text.startBox = startBox;
                                            lines[text.line].parts.push(text);
                                            lines[text.line].commonLength += text.value.length
                                        }
                                        endBox = startBox + text.tspan.getSubStringLength(0, text.value.length);
                                        text.endIndex = getIndexForEllipsis(text, maxWidth, startBox, endBox);
                                        startBox = endBox
                                    }
                                } else {
                                    text = {
                                        value: element.textContent,
                                        tspan: element
                                    };
                                    text.startBox = startBox = 0;
                                    endBox = startBox + getTextWidth(text);
                                    text.endIndex = getIndexForEllipsis(text, maxWidth, startBox, endBox);
                                    lines = [{
                                        commonLength: element.textContent.length,
                                        parts: [text]
                                    }]
                                }
                                return lines
                            }(that.element, that._texts, maxWidth);
                            for (i = 0, ii = lines.length; i < ii; ++i) {
                                lineParts = lines[i].parts;
                                if (1 === lines[i].commonLength) {
                                    continue
                                }
                                for (j = 0, jj = lineParts.length; j < jj; ++j) {
                                    text = lineParts[j];
                                    if ((0, _type.isDefined)(text.endIndex)) {
                                        setNewText(text, text.endIndex);
                                        hasEllipsis = true
                                    } else if (text.startBox > maxWidth) {
                                        removeTextSpan(text)
                                    }
                                }
                            }
                        }
                        ellipsis.remove();
                        that._hasEllipsis = hasEllipsis;
                        return hasEllipsis
                    },
                    setMaxSize: function(maxWidth, maxHeight) {
                        let options = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};
                        const that = this;
                        let lines = [];
                        let textChanged = false;
                        let textIsEmpty = false;
                        let ellipsisMaxWidth = maxWidth;
                        restoreText.call(that);
                        const restoreTitleElement = function(element) {
                            const titleElements = detachTitleElements(element);
                            return () => {
                                for (let i = 0; i < titleElements.length; i++) {
                                    element.appendChild(titleElements[i])
                                }
                            }
                        }(this.element);
                        const ellipsis = that.renderer.text("...").attr(that._styles).append(that.renderer.root);
                        const ellipsisWidth = ellipsis.getBBox().width;
                        const {
                            width: width,
                            height: height
                        } = that._getElementBBox();
                        if ((width || height) && (width > maxWidth || maxHeight && height > maxHeight)) {
                            if (maxWidth - ellipsisWidth < 0) {
                                ellipsisMaxWidth = 0
                            } else {
                                ellipsisMaxWidth -= ellipsisWidth
                            }
                            lines = function(element, texts, maxWidth, ellipsisMaxWidth, options) {
                                if (!texts) {
                                    const textValue = element.textContent;
                                    const text = {
                                        value: textValue,
                                        height: 0,
                                        line: 0
                                    };
                                    element.textContent = "";
                                    createTspans([text], element, "tspan");
                                    texts = [text]
                                }
                                return texts.reduce(((_ref3, text) => {
                                    let [lines, startBox, endBox, stop, lineNumber] = _ref3;
                                    const line = lines[lines.length - 1];
                                    if (stop) {
                                        return [lines, startBox, endBox, stop]
                                    }
                                    if (!line || text.line !== lineNumber) {
                                        text.startBox = startBox = 0;
                                        lines.push({
                                            commonLength: text.value.length,
                                            parts: [text]
                                        })
                                    } else {
                                        text.startBox = startBox;
                                        if (startBox > ellipsisMaxWidth && "none" === options.wordWrap && "ellipsis" === options.textOverflow) {
                                            removeTextSpan(text);
                                            return [lines, startBox, endBox, stop, lineNumber]
                                        }
                                        line.parts.push(text);
                                        line.commonLength += text.value.length
                                    }
                                    text.endBox = endBox = startBox + getTextWidth(text);
                                    startBox = endBox;
                                    if ((0, _type.isDefined)(maxWidth) && endBox > maxWidth) {
                                        const wordWrapLines = wordWrap(text, maxWidth, ellipsisMaxWidth, options);
                                        if (!wordWrapLines.length) {
                                            lines = [];
                                            stop = true
                                        } else {
                                            lines = lines.concat(wordWrapLines.filter((l => l.parts.length > 0)))
                                        }
                                    }
                                    return [lines, startBox, endBox, stop, text.line]
                                }), [
                                    [], 0, 0, false, 0
                                ])[0]
                            }(that.element, that._texts, maxWidth, ellipsisMaxWidth, options);
                            lines = function(lines, ellipsisMaxWidth, options, maxHeight, lineHeight) {
                                const textOverflow = options.textOverflow;
                                if (!isFinite(maxHeight) || 0 === Number(maxHeight) || "none" === textOverflow) {
                                    return lines
                                }
                                const result = lines.reduce(((_ref2, l, index, arr) => {
                                    let [lines, commonHeight] = _ref2;
                                    const height = function(line, lineHeight) {
                                        return line.parts.reduce(((height, text) => max(height, getItemLineHeight(text, lineHeight))), 0)
                                    }(l, lineHeight);
                                    commonHeight += height;
                                    if (commonHeight < maxHeight) {
                                        lines.push(l)
                                    } else {
                                        l.parts.forEach((item => {
                                            removeTextSpan(item)
                                        }));
                                        if ("ellipsis" === textOverflow) {
                                            const prevLine = arr[index - 1];
                                            if (prevLine) {
                                                const text = prevLine.parts[prevLine.parts.length - 1];
                                                if (!text.hasEllipsis) {
                                                    if (0 === ellipsisMaxWidth || text.endBox < ellipsisMaxWidth) {
                                                        setNewText(text, text.value.length, getEllipsisString(ellipsisMaxWidth, options))
                                                    } else {
                                                        setEllipsis(text, ellipsisMaxWidth, options)
                                                    }
                                                }
                                            }
                                        }
                                    }
                                    return [lines, commonHeight]
                                }), [
                                    [], 0
                                ]);
                                if ("hide" === textOverflow && result[1] > maxHeight) {
                                    result[0].forEach((l => {
                                        l.parts.forEach((item => {
                                            removeTextSpan(item)
                                        }))
                                    }));
                                    return []
                                }
                                return result[0]
                            }(lines, ellipsisMaxWidth, options, maxHeight, parseFloat(this._getLineHeight()));
                            this._texts = lines.reduce(((texts, line) => texts.concat(line.parts)), []).filter((t => "" !== t.value)).map((t => {
                                t.stroke && t.tspan.parentNode.appendChild(t.stroke);
                                return t
                            })).map((t => {
                                t.tspan.parentNode.appendChild(t.tspan);
                                return t
                            }));
                            !this._texts.length && (this._texts = null);
                            textChanged = true;
                            if (this._texts) {
                                locateTextNodes(this)
                            } else {
                                this.element.textContent = "";
                                textIsEmpty = true
                            }
                        }
                        ellipsis.remove();
                        that._hasEllipsis = textChanged;
                        restoreTitleElement();
                        return {
                            rowCount: lines.length,
                            textChanged: textChanged,
                            textIsEmpty: textIsEmpty
                        }
                    },
                    restoreText: restoreText,
                    _getLineHeight() {
                        return !isNaN(parseFloat(this._styles["font-size"])) ? this._styles["font-size"] : 12
                    }
                });

                function updateIndexes(items, k) {
                    let i;
                    let item;
                    for (i = k; item = items[i]; ++i) {
                        item._link.i = i
                    }
                }

                function linkItem(target, container) {
                    const items = container._links;
                    const key = target._link.after = target._link.after || container._linkAfter;
                    let i;
                    let item;
                    if (key) {
                        for (i = 0;
                            (item = items[i]) && item._link.name !== key; ++i) {}
                        if (item) {
                            for (++i;
                                (item = items[i]) && item._link.after === key; ++i) {}
                        }
                    } else {
                        i = items.length
                    }
                    items.splice(i, 0, target);
                    updateIndexes(items, i)
                }

                function Renderer(options) {
                    this.root = this._createElement("svg", {
                        xmlns: "http://www.w3.org/2000/svg",
                        version: "1.1",
                        fill: NONE,
                        stroke: NONE,
                        "stroke-width": 0
                    }).attr({
                        class: options.cssClass
                    }).css({
                        "line-height": "normal",
                        "-moz-user-select": NONE,
                        "-webkit-user-select": NONE,
                        "-webkit-tap-highlight-color": "rgba(0, 0, 0, 0)",
                        display: "block",
                        overflow: "hidden"
                    });
                    this._init();
                    this.pathModified = !!options.pathModified;
                    this._$container = (0, _renderer.default)(options.container);
                    this.root.append({
                        element: options.container
                    });
                    this._locker = 0;
                    this._backed = false
                }
                Renderer.prototype = {
                    constructor: Renderer,
                    _init: function() {
                        this._defs = this._createElement("defs").append(this.root);
                        this._animationController = new _animation.AnimationController(this.root.element);
                        this._animation = {
                            enabled: true,
                            duration: 1e3,
                            easing: "easeOutCubic"
                        }
                    },
                    setOptions: function(options) {
                        this.rtl = !!options.rtl;
                        this.encodeHtml = !!options.encodeHtml;
                        this.updateAnimationOptions(options.animation || {});
                        this.root.attr({
                            direction: this.rtl ? "rtl" : "ltr"
                        });
                        return this
                    },
                    _createElement: function(tagName, attr, type) {
                        const elem = new SvgElement(this, tagName, type);
                        attr && elem.attr(attr);
                        return elem
                    },
                    lock: function() {
                        const that = this;
                        if (0 === that._locker) {
                            that._backed = !that._$container.is(":visible");
                            if (that._backed) {
                                ! function(root) {
                                    if (0 === getBackup().backupCounter) {
                                        _dom_adapter.default.getBody().appendChild(getBackup().backupContainer)
                                    }++getBackup().backupCounter;
                                    root.append({
                                        element: getBackup().backupContainer
                                    })
                                }(that.root)
                            }
                        }++that._locker;
                        return that
                    },
                    unlock: function() {
                        const that = this;
                        --that._locker;
                        if (0 === that._locker) {
                            if (that._backed) {
                                ! function(root, container) {
                                    root.append({
                                        element: container
                                    });
                                    --getBackup().backupCounter;
                                    if (0 === getBackup().backupCounter) {
                                        _dom_adapter.default.getBody().removeChild(getBackup().backupContainer)
                                    }
                                }(that.root, that._$container[0])
                            }
                            that._backed = false
                        }
                        return that
                    },
                    resize: function(width, height) {
                        if (width >= 0 && height >= 0) {
                            this.root.attr({
                                width: width,
                                height: height
                            })
                        }
                        return this
                    },
                    dispose: function() {
                        const that = this;
                        let key;
                        that.root.dispose();
                        that._defs.dispose();
                        that._animationController.dispose();
                        fixFuncIriCallbacks.removeByRenderer(that);
                        for (key in that) {
                            that[key] = null
                        }
                        return that
                    },
                    animationEnabled: function() {
                        return !!this._animation.enabled
                    },
                    updateAnimationOptions: function(newOptions) {
                        extend(this._animation, newOptions);
                        return this
                    },
                    stopAllAnimations: function(lock) {
                        this._animationController[lock ? "lock" : "stop"]();
                        return this
                    },
                    animateElement: function(element, params, options) {
                        this._animationController.animateElement(element, params, options);
                        return this
                    },
                    svg: function() {
                        return this.root.markup()
                    },
                    getRootOffset: function() {
                        return this.root.getOffset()
                    },
                    onEndAnimation: function(endAnimation) {
                        this._animationController.onEndAnimation(endAnimation)
                    },
                    rect: function(x, y, width, height) {
                        const elem = new RectSvgElement(this);
                        return elem.attr({
                            x: x || 0,
                            y: y || 0,
                            width: width || 0,
                            height: height || 0
                        })
                    },
                    simpleRect: function() {
                        return this._createElement("rect")
                    },
                    circle: function(x, y, r) {
                        return this._createElement("circle", {
                            cx: x || 0,
                            cy: y || 0,
                            r: r || 0
                        })
                    },
                    g: function() {
                        return this._createElement("g")
                    },
                    image: function(x, y, w, h, href, location) {
                        const image = this._createElement("image", {
                            x: x || 0,
                            y: y || 0,
                            width: w || 0,
                            height: h || 0,
                            preserveAspectRatio: preserveAspectRatioMap[(0, _utils.normalizeEnum)(location)] || NONE
                        });
                        image.element.setAttributeNS("http://www.w3.org/1999/xlink", "href", href || "");
                        return image
                    },
                    path: function(points, type) {
                        const elem = new PathSvgElement(this, type);
                        return elem.attr({
                            points: points || []
                        })
                    },
                    arc: function(x, y, innerRadius, outerRadius, startAngle, endAngle) {
                        const elem = new ArcSvgElement(this);
                        return elem.attr({
                            x: x || 0,
                            y: y || 0,
                            innerRadius: innerRadius || 0,
                            outerRadius: outerRadius || 0,
                            startAngle: startAngle || 0,
                            endAngle: endAngle || 0
                        })
                    },
                    text: function(text, x, y) {
                        const elem = new TextSvgElement(this);
                        return elem.attr({
                            text: text,
                            x: x || 0,
                            y: y || 0
                        })
                    },
                    linearGradient: function(stops) {
                        let id = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : (0, _utils.getNextDefsSvgId)();
                        let rotationAngle = arguments.length > 2 ? arguments[2] : void 0;
                        const gradient = this._createElement("linearGradient", {
                            id: id,
                            gradientTransform: `rotate(${rotationAngle||0})`
                        }).append(this._defs);
                        gradient.id = id;
                        this._createGradientStops(stops, gradient);
                        return gradient
                    },
                    radialGradient: function(stops, id) {
                        const gradient = this._createElement("radialGradient", {
                            id: id
                        }).append(this._defs);
                        this._createGradientStops(stops, gradient);
                        return gradient
                    },
                    _createGradientStops: function(stops, group) {
                        stops.forEach((stop => {
                            this._createElement("stop", {
                                offset: stop.offset,
                                "stop-color": stop["stop-color"] ?? stop.color,
                                "stop-opacity": stop.opacity
                            }).append(group)
                        }))
                    },
                    pattern: function(color, hatching, _id) {
                        hatching = hatching || {};
                        const step = hatching.step || 6;
                        const stepTo2 = step / 2;
                        const stepBy15 = 1.5 * step;
                        const id = _id || (0, _utils.getNextDefsSvgId)();
                        const d = "right" === (0, _utils.normalizeEnum)(hatching.direction) ? "M " + stepTo2 + " " + -stepTo2 + " L " + -stepTo2 + " " + stepTo2 + " M 0 " + step + " L " + step + " 0 M " + stepBy15 + " " + stepTo2 + " L " + stepTo2 + " " + stepBy15 : "M 0 0 L " + step + " " + step + " M " + -stepTo2 + " " + stepTo2 + " L " + stepTo2 + " " + stepBy15 + " M " + stepTo2 + " " + -stepTo2 + " L " + stepBy15 + " " + stepTo2;
                        const pattern = this._createElement("pattern", {
                            id: id,
                            width: step,
                            height: step,
                            patternUnits: "userSpaceOnUse"
                        }).append(this._defs);
                        pattern.id = id;
                        this.rect(0, 0, step, step).attr({
                            fill: color,
                            opacity: hatching.opacity
                        }).append(pattern);
                        new PathSvgElement(this).attr({
                            d: d,
                            "stroke-width": hatching.width || 1,
                            stroke: color
                        }).append(pattern);
                        return pattern
                    },
                    customPattern: function(id, template, width, height) {
                        const option = {
                            id: id,
                            width: width,
                            height: height,
                            patternContentUnits: "userSpaceOnUse",
                            patternUnits: this._getPatternUnits(width, height)
                        };
                        const pattern = this._createElement("pattern", option).append(this._defs);
                        template.render({
                            container: pattern.element
                        });
                        return pattern
                    },
                    _getPatternUnits: function(width, height) {
                        if (Number(width) && Number(height)) {
                            return "userSpaceOnUse"
                        }
                    },
                    _getPointsWithYOffset: function(points, offset) {
                        return points.map((function(point, index) {
                            if (index % 2 !== 0) {
                                return point + offset
                            }
                            return point
                        }))
                    },
                    clipShape: function(method, methodArgs) {
                        const id = (0, _utils.getNextDefsSvgId)();
                        let clipPath = this._createElement("clipPath", {
                            id: id
                        }).append(this._defs);
                        const shape = method.apply(this, methodArgs).append(clipPath);
                        shape.id = id;
                        shape.remove = function() {
                            throw "Not implemented"
                        };
                        shape.dispose = function() {
                            clipPath.dispose();
                            clipPath = null;
                            return this
                        };
                        return shape
                    },
                    clipRect(x, y, width, height) {
                        return this.clipShape(this.rect, arguments)
                    },
                    clipCircle(x, y, radius) {
                        return this.clipShape(this.circle, arguments)
                    },
                    shadowFilter: function(x, y, width, height, offsetX, offsetY, blur, color, opacity) {
                        const id = (0, _utils.getNextDefsSvgId)();
                        const filter = this._createElement("filter", {
                            id: id,
                            x: x || 0,
                            y: y || 0,
                            width: width || 0,
                            height: height || 0
                        }).append(this._defs);
                        const gaussianBlur = this._createElement("feGaussianBlur", {
                            in: "SourceGraphic",
                            result: "gaussianBlurResult",
                            stdDeviation: blur || 0
                        }).append(filter);
                        const offset = this._createElement("feOffset", {
                            in: "gaussianBlurResult",
                            result: "offsetResult",
                            dx: offsetX || 0,
                            dy: offsetY || 0
                        }).append(filter);
                        const flood = this._createElement("feFlood", {
                            result: "floodResult",
                            "flood-color": color || "",
                            "flood-opacity": opacity
                        }).append(filter);
                        const composite = this._createElement("feComposite", {
                            in: "floodResult",
                            in2: "offsetResult",
                            operator: "in",
                            result: "compositeResult"
                        }).append(filter);
                        const finalComposite = this._createElement("feComposite", {
                            in: "SourceGraphic",
                            in2: "compositeResult",
                            operator: "over"
                        }).append(filter);
                        filter.id = id;
                        filter.gaussianBlur = gaussianBlur;
                        filter.offset = offset;
                        filter.flood = flood;
                        filter.composite = composite;
                        filter.finalComposite = finalComposite;
                        filter.attr = function(attrs) {
                            const filterAttrs = {};
                            const offsetAttrs = {};
                            const floodAttrs = {};
                            "x" in attrs && (filterAttrs.x = attrs.x);
                            "y" in attrs && (filterAttrs.y = attrs.y);
                            "width" in attrs && (filterAttrs.width = attrs.width);
                            "height" in attrs && (filterAttrs.height = attrs.height);
                            baseAttr(this, filterAttrs);
                            "blur" in attrs && this.gaussianBlur.attr({
                                stdDeviation: attrs.blur
                            });
                            "offsetX" in attrs && (offsetAttrs.dx = attrs.offsetX);
                            "offsetY" in attrs && (offsetAttrs.dy = attrs.offsetY);
                            this.offset.attr(offsetAttrs);
                            "color" in attrs && (floodAttrs["flood-color"] = attrs.color);
                            "opacity" in attrs && (floodAttrs["flood-opacity"] = attrs.opacity);
                            this.flood.attr(floodAttrs);
                            return this
                        };
                        return filter
                    },
                    brightFilter: function(type, slope) {
                        const id = (0, _utils.getNextDefsSvgId)();
                        const filter = this._createElement("filter", {
                            id: id
                        }).append(this._defs);
                        const componentTransferElement = this._createElement("feComponentTransfer").append(filter);
                        const attrs = {
                            type: type,
                            slope: slope
                        };
                        filter.id = id;
                        this._createElement("feFuncR", attrs).append(componentTransferElement);
                        this._createElement("feFuncG", attrs).append(componentTransferElement);
                        this._createElement("feFuncB", attrs).append(componentTransferElement);
                        return filter
                    },
                    getGrayScaleFilter: function() {
                        if (this._grayScaleFilter) {
                            return this._grayScaleFilter
                        }
                        const id = (0, _utils.getNextDefsSvgId)();
                        const filter = this._createElement("filter", {
                            id: id
                        }).append(this._defs);
                        this._createElement("feColorMatrix").attr({
                            type: "matrix",
                            values: "0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 0.6 0"
                        }).append(filter);
                        filter.id = id;
                        this._grayScaleFilter = filter;
                        return filter
                    },
                    lightenFilter: function(id) {
                        const filter = this._createElement("filter", {
                            id: id
                        }).append(this._defs);
                        this._createElement("feColorMatrix", {
                            type: "matrix",
                            values: "1.3 0 0 0 0 0 1.3 0 0 0 0 0 1.3 0 0 0 0 0 1 0"
                        }).append(filter);
                        filter.id = id;
                        return filter
                    },
                    initDefsElements: function() {
                        const storage = this._defsElementsStorage = this._defsElementsStorage || {
                            byHash: {},
                            baseId: (0, _utils.getNextDefsSvgId)()
                        };
                        const byHash = storage.byHash;
                        let name;
                        for (name in byHash) {
                            byHash[name].pattern.dispose()
                        }
                        storage.byHash = {};
                        storage.refToHash = {};
                        storage.nextId = 0
                    },
                    drawPattern: function(_ref4, storageId, nextId) {
                        let {
                            color: color,
                            hatching: hatching
                        } = _ref4;
                        return this.pattern(color, hatching, `${storageId}-hatching-${nextId++}`)
                    },
                    drawFilter: function(_, storageId, nextId) {
                        return this.lightenFilter(`${storageId}-lightening-${nextId++}`)
                    },
                    lockDefsElements: function(attrs, ref, type) {
                        const storage = this._defsElementsStorage;
                        let storageItem;
                        const hash = "pattern" === type ? function(_ref5) {
                            let {
                                color: color,
                                hatching: hatching
                            } = _ref5;
                            return "@" + color + "::" + hatching.step + ":" + hatching.width + ":" + hatching.opacity + ":" + hatching.direction
                        }(attrs) : "@filter::lightening";
                        const method = "pattern" === type ? this.drawPattern : this.drawFilter;
                        let pattern;
                        if (storage.refToHash[ref] !== hash) {
                            if (ref) {
                                this.releaseDefsElements(ref)
                            }
                            storageItem = storage.byHash[hash];
                            if (!storageItem) {
                                pattern = method.call(this, attrs, storage.baseId, storage.nextId++);
                                storageItem = storage.byHash[hash] = {
                                    pattern: pattern,
                                    count: 0
                                };
                                storage.refToHash[pattern.id] = hash
                            }++storageItem.count;
                            ref = storageItem.pattern.id
                        }
                        return ref
                    },
                    releaseDefsElements: function(ref) {
                        const storage = this._defsElementsStorage;
                        const hash = storage.refToHash[ref];
                        const storageItem = storage.byHash[hash];
                        if (storageItem && 0 === --storageItem.count) {
                            storageItem.pattern.dispose();
                            delete storage.byHash[hash];
                            delete storage.refToHash[ref]
                        }
                    }
                };
                const fixFuncIriCallbacks = function() {
                    let callbacks = [];
                    return {
                        add: function(fn) {
                            callbacks.push(fn)
                        },
                        remove: function(fn) {
                            callbacks = callbacks.filter((function(el) {
                                return el !== fn
                            }))
                        },
                        removeByRenderer: function(renderer) {
                            callbacks = callbacks.filter((function(el) {
                                return el.renderer !== renderer
                            }))
                        },
                        fire: function() {
                            callbacks.forEach((function(fn) {
                                fn()
                            }))
                        }
                    }
                }();
                exports.refreshPaths = function() {
                    fixFuncIriCallbacks.fire()
                }
            },
        11348:
            /*!***********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/core/series_family.js ***!
              \***********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.SeriesFamily = SeriesFamily;
                var _type = __webpack_require__( /*! ../../core/utils/type */ 11528);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 21274);
                var _math = __webpack_require__( /*! ../../core/utils/math */ 50254);
                var _common = __webpack_require__( /*! ../../core/utils/common */ 17781);
                var _utils = __webpack_require__( /*! ./utils */ 28779);
                var _date = (e = __webpack_require__( /*! ../../core/utils/date */ 41380), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                const {
                    round: round,
                    abs: abs,
                    pow: pow,
                    sqrt: sqrt
                } = Math;
                const _min = Math.min;
                const DEFAULT_BAR_GROUP_PADDING = .3;

                function correctStackCoordinates(series, currentStacks, arg, stack, parameters, barsArea, seriesStackIndexCallback) {
                    series.forEach((function(series) {
                        const stackIndex = seriesStackIndexCallback(currentStacks.indexOf(stack), currentStacks.length);
                        const points = series.getPointsByArg(arg, true);
                        const barPadding = function(barPadding) {
                            return barPadding < 0 || barPadding > 1 ? void 0 : barPadding
                        }(series.getOptions().barPadding);
                        const barWidth = series.getOptions().barWidth;
                        let offset = getOffset(stackIndex, parameters);
                        let width = parameters.width;
                        let extraParameters;
                        if (-1 === stackIndex) {
                            return
                        }
                        if ((0, _type.isDefined)(barPadding) || (0, _type.isDefined)(barWidth)) {
                            extraParameters = calculateParams(barsArea, currentStacks.length, 1 - barPadding, barWidth);
                            width = extraParameters.width;
                            if (!series.getBarOverlapGroup()) {
                                offset = getOffset(stackIndex, extraParameters)
                            }
                        }! function(points, width, offset) {
                            (0, _iterator.each)(points, (function(_, point) {
                                point.correctCoordinates({
                                    width: width,
                                    offset: offset
                                })
                            }))
                        }(points, width, offset)
                    }))
                }

                function getStackName(series) {
                    return series.getStackName() || series.getBarOverlapGroup()
                }

                function adjustBarSeriesDimensionsCore(series, options, seriesStackIndexCallback) {
                    var _series$, _series$2;
                    const commonStacks = [];
                    const allArguments = [];
                    const seriesInStacks = {};
                    const barGroupWidth = options.barGroupWidth;
                    const argumentAxis = null === (_series$ = series[0]) || void 0 === _series$ ? void 0 : _series$.getArgumentAxis();
                    let interval;
                    if (null !== (_series$2 = series[0]) && void 0 !== _series$2 && _series$2.useAggregation()) {
                        var _series$3;
                        const isDateArgAxis = "datetime" === (null === (_series$3 = series[0]) || void 0 === _series$3 ? void 0 : _series$3.argumentType);
                        let tickInterval = argumentAxis.getTickInterval();
                        let aggregationInterval = argumentAxis.getAggregationInterval();
                        tickInterval = isDateArgAxis ? _date.default.dateToMilliseconds(tickInterval) : tickInterval;
                        aggregationInterval = isDateArgAxis ? _date.default.dateToMilliseconds(aggregationInterval) : aggregationInterval;
                        interval = aggregationInterval < tickInterval ? aggregationInterval : tickInterval
                    }
                    interval = null === argumentAxis || void 0 === argumentAxis ? void 0 : argumentAxis.getTranslator().getInterval(interval);
                    const barsArea = barGroupWidth ? interval > barGroupWidth ? barGroupWidth : interval : interval * (1 - (barGroupPadding = options.barGroupPadding, barGroupPadding < 0 || barGroupPadding > 1 ? DEFAULT_BAR_GROUP_PADDING : barGroupPadding));
                    var barGroupPadding;
                    series.forEach((function(s, i) {
                        const stackName = getStackName(s) || i.toString();
                        let argument;
                        for (argument in s.pointsByArgument) {
                            if (-1 === allArguments.indexOf(argument.valueOf())) {
                                allArguments.push(argument.valueOf())
                            }
                        }
                        if (-1 === commonStacks.indexOf(stackName)) {
                            commonStacks.push(stackName);
                            seriesInStacks[stackName] = []
                        }
                        seriesInStacks[stackName].push(s)
                    }));
                    allArguments.forEach((function(arg) {
                        const currentStacks = commonStacks.reduce(((stacks, stack) => {
                            if (function(series, arg) {
                                    return series.some((function(s) {
                                        return !s.getOptions().ignoreEmptyPoints || s.getPointsByArg(arg, true).some((function(point) {
                                            return point.hasValue()
                                        }))
                                    }))
                                }(seriesInStacks[stack], arg)) {
                                stacks.push(stack)
                            }
                            return stacks
                        }), []);
                        const parameters = calculateParams(barsArea, currentStacks.length);
                        commonStacks.forEach((stack => {
                            correctStackCoordinates(seriesInStacks[stack], currentStacks, arg, stack, parameters, barsArea, seriesStackIndexCallback)
                        }))
                    }))
                }

                function calculateParams(barsArea, count, percentWidth, fixedBarWidth) {
                    let spacing;
                    let width;
                    if (fixedBarWidth) {
                        width = _min(fixedBarWidth, barsArea / count);
                        spacing = count > 1 ? round((barsArea - round(width) * count) / (count - 1)) : 0
                    } else if ((0, _type.isDefined)(percentWidth)) {
                        width = barsArea * percentWidth / count;
                        spacing = count > 1 ? round((barsArea - barsArea * percentWidth) / (count - 1)) : 0
                    } else {
                        spacing = round(barsArea / count * .2);
                        width = (barsArea - spacing * (count - 1)) / count
                    }
                    return {
                        width: width > 1 ? round(width) : 1,
                        spacing: spacing,
                        middleIndex: count / 2,
                        rawWidth: width
                    }
                }

                function getOffset(stackIndex, parameters) {
                    const width = parameters.rawWidth < 1 ? parameters.rawWidth : parameters.width;
                    return (stackIndex - parameters.middleIndex + .5) * width - (parameters.middleIndex - stackIndex - .5) * parameters.spacing
                }

                function getVisibleSeries(that) {
                    return that.series.filter((function(s) {
                        return s.isVisible()
                    }))
                }

                function getAbsStackSumByArg(stackKeepers, stackName, argument) {
                    const positiveStackValue = (stackKeepers.positive[stackName] || {})[argument] || 0;
                    const negativeStackValue = -(stackKeepers.negative[stackName] || {})[argument] || 0;
                    return positiveStackValue + negativeStackValue
                }

                function getSeriesStackIndexCallback(inverted) {
                    if (!inverted) {
                        return function(index) {
                            return index
                        }
                    } else {
                        return function(index, stackCount) {
                            return stackCount - index - 1
                        }
                    }
                }

                function isInverted(series) {
                    return series[0] && series[0].getArgumentAxis().getTranslator().isInverted()
                }

                function adjustBarSeriesDimensions() {
                    const series = getVisibleSeries(this);
                    adjustBarSeriesDimensionsCore(series, this._options, getSeriesStackIndexCallback(isInverted(series)))
                }

                function adjustStackedSeriesValues() {
                    const negativesAsZeroes = this._options.negativesAsZeroes;
                    const series = getVisibleSeries(this);
                    const stackKeepers = {
                        positive: {},
                        negative: {}
                    };
                    const holesStack = {
                        left: {},
                        right: {}
                    };
                    const lastSeriesInPositiveStack = {};
                    const lastSeriesInNegativeStack = {};
                    series.forEach((function(singleSeries) {
                        const stackName = getStackName(singleSeries);
                        let hole = false;
                        const stack = function(series) {
                            const points = series.getPoints();
                            let value;
                            for (let i = 0; i < points.length; i++) {
                                const point = points[i];
                                value = point.initialValue && point.initialValue.valueOf();
                                if (abs(value) > 0) {
                                    break
                                }
                            }
                            return (0, _math.sign)(value)
                        }(singleSeries) < 0 ? lastSeriesInNegativeStack : lastSeriesInPositiveStack;
                        singleSeries._prevSeries = stack[stackName];
                        stack[stackName] = singleSeries;
                        singleSeries.holes = (0, _extend.extend)(true, {}, holesStack);
                        singleSeries.getPoints().forEach((function(point, index, points) {
                            let value = point.initialValue && point.initialValue.valueOf();
                            let argument = point.argument.valueOf();
                            let stacks = value >= 0 ? stackKeepers.positive : stackKeepers.negative;
                            const isNotBarSeries = "bar" !== singleSeries.type;
                            if (negativesAsZeroes && value < 0) {
                                stacks = stackKeepers.positive;
                                value = 0;
                                point.resetValue()
                            }
                            stacks[stackName] = stacks[stackName] || {};
                            const currentStack = stacks[stackName];
                            if (currentStack[argument]) {
                                if (isNotBarSeries) {
                                    point.correctValue(currentStack[argument])
                                }
                                currentStack[argument] += value
                            } else {
                                currentStack[argument] = value;
                                if (isNotBarSeries) {
                                    point.resetCorrection()
                                }
                            }
                            if (!point.hasValue()) {
                                const prevPoint = points[index - 1];
                                if (!hole && prevPoint && prevPoint.hasValue()) {
                                    argument = prevPoint.argument.valueOf();
                                    prevPoint._skipSetRightHole = true;
                                    holesStack.right[argument] = (holesStack.right[argument] || 0) + (prevPoint.value.valueOf() - (isFinite(prevPoint.minValue) ? prevPoint.minValue.valueOf() : 0))
                                }
                                hole = true
                            } else if (hole) {
                                hole = false;
                                holesStack.left[argument] = (holesStack.left[argument] || 0) + (point.value.valueOf() - (isFinite(point.minValue) ? point.minValue.valueOf() : 0));
                                point._skipSetLeftHole = true
                            }
                        }))
                    }));
                    series.forEach((function(singleSeries) {
                        const holes = singleSeries.holes;
                        singleSeries.getPoints().forEach((function(point) {
                            const argument = point.argument.valueOf();
                            point.resetHoles();
                            !point._skipSetLeftHole && point.setHole(holes.left[argument] || holesStack.left[argument] && 0, "left");
                            !point._skipSetRightHole && point.setHole(holes.right[argument] || holesStack.right[argument] && 0, "right");
                            point._skipSetLeftHole = null;
                            point._skipSetRightHole = null
                        }))
                    }));
                    this._stackKeepers = stackKeepers;
                    series.forEach((function(singleSeries) {
                        singleSeries.getPoints().forEach((function(point) {
                            const argument = point.argument.valueOf();
                            const stackName = getStackName(singleSeries);
                            const absTotal = getAbsStackSumByArg(stackKeepers, stackName, argument);
                            const total = function(stackKeepers, stackName, argument) {
                                const positiveStackValue = (stackKeepers.positive[stackName] || {})[argument] || 0;
                                const negativeStackValue = (stackKeepers.negative[stackName] || {})[argument] || 0;
                                return positiveStackValue + negativeStackValue
                            }(stackKeepers, stackName, argument);
                            point.setPercentValue(absTotal, total, holesStack.left[argument], holesStack.right[argument])
                        }))
                    }))
                }

                function updateStackedSeriesValues() {
                    const that = this;
                    const series = getVisibleSeries(that);
                    const stack = that._stackKeepers;
                    const stackKeepers = {
                        positive: {},
                        negative: {}
                    };
                    (0, _iterator.each)(series, (function(_, singleSeries) {
                        const minBarSize = singleSeries.getOptions().minBarSize;
                        const valueAxisTranslator = singleSeries.getValueAxis().getTranslator();
                        const minShownBusinessValue = minBarSize && valueAxisTranslator.getMinBarSize(minBarSize);
                        const stackName = singleSeries.getStackName();
                        (0, _iterator.each)(singleSeries.getPoints(), (function(index, point) {
                            if (!point.hasValue()) {
                                return
                            }
                            let value = point.initialValue && point.initialValue.valueOf();
                            const argument = point.argument.valueOf();
                            if (that.fullStacked) {
                                value = value / getAbsStackSumByArg(stack, stackName, argument) || 0
                            }
                            const updateValue = valueAxisTranslator.checkMinBarSize(value, minShownBusinessValue, point.value);
                            const valueType = function(value) {
                                return value >= 0 ? "positive" : "negative"
                            }(updateValue);
                            const currentStack = stackKeepers[valueType][stackName] = stackKeepers[valueType][stackName] || {};
                            if (currentStack[argument]) {
                                point.minValue = currentStack[argument];
                                currentStack[argument] += updateValue
                            } else {
                                currentStack[argument] = updateValue
                            }
                            point.value = currentStack[argument]
                        }))
                    }));
                    if (that.fullStacked) {
                        ! function(series, stackKeepers) {
                            (0, _iterator.each)(series, (function(_, singleSeries) {
                                const stackName = singleSeries.getStackName ? singleSeries.getStackName() : "default";
                                (0, _iterator.each)(singleSeries.getPoints(), (function(index, point) {
                                    const stackSum = getAbsStackSumByArg(stackKeepers, stackName, point.argument.valueOf());
                                    if (0 !== stackSum) {
                                        point.value = point.value / stackSum;
                                        if ((0, _type.isNumeric)(point.minValue)) {
                                            point.minValue = point.minValue / stackSum
                                        }
                                    }
                                }))
                            }))
                        }(series, stackKeepers)
                    }
                }

                function updateRangeSeriesValues() {
                    const series = getVisibleSeries(this);
                    (0, _iterator.each)(series, (function(_, singleSeries) {
                        const minBarSize = singleSeries.getOptions().minBarSize;
                        const valueAxisTranslator = singleSeries.getValueAxis().getTranslator();
                        const minShownBusinessValue = minBarSize && valueAxisTranslator.getMinBarSize(minBarSize);
                        if (minShownBusinessValue) {
                            (0, _iterator.each)(singleSeries.getPoints(), (function(_, point) {
                                if (!point.hasValue()) {
                                    return
                                }
                                if (point.value.valueOf() - point.minValue.valueOf() < minShownBusinessValue) {
                                    point.value = valueAxisTranslator.toValue(point.value.valueOf() + minShownBusinessValue / 2);
                                    point.minValue = valueAxisTranslator.toValue(point.minValue.valueOf() - minShownBusinessValue / 2)
                                }
                            }))
                        }
                    }))
                }

                function updateBarSeriesValues() {
                    (0, _iterator.each)(this.series, (function(_, singleSeries) {
                        const minBarSize = singleSeries.getOptions().minBarSize;
                        const valueAxisTranslator = singleSeries.getValueAxis().getTranslator();
                        const minShownBusinessValue = minBarSize && valueAxisTranslator.getMinBarSize(minBarSize);
                        if (minShownBusinessValue) {
                            (0, _iterator.each)(singleSeries.getPoints(), (function(index, point) {
                                if (point.hasValue()) {
                                    point.value = valueAxisTranslator.checkMinBarSize(point.initialValue, minShownBusinessValue)
                                }
                            }))
                        }
                    }))
                }

                function adjustCandlestickSeriesDimensions() {
                    const series = getVisibleSeries(this);
                    adjustBarSeriesDimensionsCore(series, {
                        barGroupPadding: .3
                    }, getSeriesStackIndexCallback(isInverted(series)))
                }

                function adjustBubbleSeriesDimensions() {
                    const series = getVisibleSeries(this);
                    if (!series.length) {
                        return
                    }
                    const options = this._options;
                    const visibleAreaX = series[0].getArgumentAxis().getVisibleArea();
                    const visibleAreaY = series[0].getValueAxis().getVisibleArea();
                    const min = _min(visibleAreaX[1] - visibleAreaX[0], visibleAreaY[1] - visibleAreaY[0]);
                    const minBubbleArea = pow(options.minBubbleSize, 2);
                    const maxBubbleArea = pow(min * options.maxBubbleSize, 2);
                    const equalBubbleSize = (min * options.maxBubbleSize + options.minBubbleSize) / 2;
                    let minPointSize = 1 / 0;
                    let maxPointSize = -1 / 0;
                    let pointSize;
                    let bubbleArea;
                    let sizeProportion;
                    (0, _iterator.each)(series, (function(_, seriesItem) {
                        (0, _iterator.each)(seriesItem.getPoints(), (function(_, point) {
                            maxPointSize = maxPointSize > point.size ? maxPointSize : point.size;
                            minPointSize = minPointSize < point.size ? minPointSize : point.size
                        }))
                    }));
                    const sizeDispersion = maxPointSize - minPointSize;
                    const areaDispersion = abs(maxBubbleArea - minBubbleArea);
                    (0, _iterator.each)(series, (function(_, seriesItem) {
                        (0, _iterator.each)(seriesItem.getPoints(), (function(_, point) {
                            if (maxPointSize === minPointSize) {
                                pointSize = round(equalBubbleSize)
                            } else {
                                sizeProportion = abs(point.size - minPointSize) / sizeDispersion;
                                bubbleArea = areaDispersion * sizeProportion + minBubbleArea;
                                pointSize = round(sqrt(bubbleArea))
                            }
                            point.correctCoordinates(pointSize)
                        }))
                    }))
                }

                function SeriesFamily(options) {
                    const that = this;
                    that.type = (0, _utils.normalizeEnum)(options.type);
                    that.pane = options.pane;
                    that.series = [];
                    that.updateOptions(options);
                    switch (that.type) {
                        case "bar":
                            that.adjustSeriesDimensions = adjustBarSeriesDimensions;
                            that.updateSeriesValues = updateBarSeriesValues;
                            that.adjustSeriesValues = adjustStackedSeriesValues;
                            break;
                        case "rangebar":
                            that.adjustSeriesDimensions = adjustBarSeriesDimensions;
                            that.updateSeriesValues = updateRangeSeriesValues;
                            break;
                        case "fullstackedbar":
                            that.fullStacked = true;
                            that.adjustSeriesDimensions = adjustBarSeriesDimensions;
                            that.adjustSeriesValues = adjustStackedSeriesValues;
                            that.updateSeriesValues = updateStackedSeriesValues;
                            break;
                        case "stackedbar":
                            that.adjustSeriesDimensions = adjustBarSeriesDimensions;
                            that.adjustSeriesValues = adjustStackedSeriesValues;
                            that.updateSeriesValues = updateStackedSeriesValues;
                            break;
                        case "fullstackedarea":
                        case "fullstackedline":
                        case "fullstackedspline":
                        case "fullstackedsplinearea":
                            that.fullStacked = true;
                            that.adjustSeriesValues = adjustStackedSeriesValues;
                            break;
                        case "stackedarea":
                        case "stackedsplinearea":
                        case "stackedline":
                        case "stackedspline":
                            that.adjustSeriesValues = adjustStackedSeriesValues;
                            break;
                        case "candlestick":
                        case "stock":
                            that.adjustSeriesDimensions = adjustCandlestickSeriesDimensions;
                            break;
                        case "bubble":
                            that.adjustSeriesDimensions = adjustBubbleSeriesDimensions
                    }
                }
                SeriesFamily.prototype = {
                    constructor: SeriesFamily,
                    adjustSeriesDimensions: _common.noop,
                    adjustSeriesValues: _common.noop,
                    updateSeriesValues: _common.noop,
                    updateOptions: function(options) {
                        this._options = options
                    },
                    dispose: function() {
                        this.series = null
                    },
                    add: function(series) {
                        const type = this.type;
                        this.series = (0, _utils.map)(series, (singleSeries => singleSeries.type === type ? singleSeries : null))
                    }
                }
            },
        16216:
            /*!***************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/core/title.js ***!
              \***************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.plugin = exports.Title = void 0;
                var _type = __webpack_require__( /*! ../../core/utils/type */ 11528);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576);
                var _utils = __webpack_require__( /*! ./utils */ 28779);
                var _layout_element = __webpack_require__( /*! ./layout_element */ 77461);
                const _Number = Number;
                const parseHorizontalAlignment = (0, _utils.enumParser)(["left", "center", "right"]);
                const parseVerticalAlignment = (0, _utils.enumParser)(["top", "bottom"]);

                function hasText(text) {
                    return !!(text && String(text).length > 0)
                }

                function processTitleLength(elem, text, width, options, placeholderSize) {
                    if (elem.attr({
                            text: text
                        }).setMaxSize(width, placeholderSize, options).textChanged) {
                        elem.setTitle(text)
                    }
                }

                function pickMarginValue(value) {
                    return value >= 0 ? _Number(value) : 10
                }
                let Title = function(params) {
                    this._params = params;
                    this._group = params.renderer.g().attr({
                        class: params.cssClass
                    }).linkOn(params.root || params.renderer.root, "title");
                    this._hasText = false
                };
                exports.Title = Title;
                (0, _extend.extend)(Title.prototype, _layout_element.LayoutElement.prototype, {
                    dispose: function() {
                        const that = this;
                        that._group.linkRemove();
                        that._group.linkOff();
                        if (that._titleElement) {
                            that._clipRect.dispose();
                            that._titleElement = that._subtitleElement = that._clipRect = null
                        }
                        that._params = that._group = that._options = null
                    },
                    _updateOptions: function(options) {
                        this._options = options;
                        this._options.horizontalAlignment = parseHorizontalAlignment(options.horizontalAlignment, "center");
                        this._options.verticalAlignment = parseVerticalAlignment(options.verticalAlignment, "top");
                        this._options.margin = function(margin) {
                            let result;
                            if (margin >= 0) {
                                result = {
                                    left: _Number(margin),
                                    top: _Number(margin),
                                    right: _Number(margin),
                                    bottom: _Number(margin)
                                }
                            } else {
                                margin = margin || {};
                                result = {
                                    left: pickMarginValue(margin.left),
                                    top: pickMarginValue(margin.top),
                                    right: pickMarginValue(margin.right),
                                    bottom: pickMarginValue(margin.bottom)
                                }
                            }
                            return result
                        }(options.margin)
                    },
                    _updateStructure: function() {
                        const that = this;
                        const renderer = that._params.renderer;
                        const group = that._group;
                        const options = that._options;
                        const align = options.horizontalAlignment;
                        if (!that._titleElement) {
                            that._titleElement = renderer.text().append(group);
                            that._subtitleElement = renderer.text();
                            that._clipRect = renderer.clipRect();
                            group.attr({
                                "clip-path": that._clipRect.id
                            })
                        }
                        that._titleElement.attr({
                            align: align,
                            class: options.cssClass
                        });
                        that._subtitleElement.attr({
                            align: align,
                            class: options.subtitle.cssClass
                        });
                        group.linkAppend();
                        hasText(options.subtitle.text) ? that._subtitleElement.append(group) : that._subtitleElement.remove()
                    },
                    _updateTexts: function() {
                        const options = this._options;
                        const subtitleOptions = options.subtitle;
                        const titleElement = this._titleElement;
                        const subtitleElement = this._subtitleElement;
                        let titleBox;
                        titleElement.attr({
                            text: "A",
                            y: 0
                        }).css((0, _utils.patchFontOptions)(options.font));
                        titleBox = titleElement.getBBox();
                        this._baseLineCorrection = titleBox.height + titleBox.y;
                        titleElement.attr({
                            text: options.text
                        });
                        titleBox = titleElement.getBBox();
                        const y = -titleBox.y;
                        titleElement.attr({
                            y: y
                        });
                        if (hasText(subtitleOptions.text)) {
                            subtitleElement.attr({
                                text: subtitleOptions.text,
                                y: 0
                            }).css((0, _utils.patchFontOptions)(subtitleOptions.font))
                        }
                    },
                    _shiftSubtitle() {
                        const titleBox = this._titleElement.getBBox();
                        const element = this._subtitleElement;
                        const offset = this._options.subtitle.offset;
                        element.move(0, titleBox.y + titleBox.height - element.getBBox().y - offset)
                    },
                    _updateBoundingRectAlignment: function() {
                        const boundingRect = this._boundingRect;
                        const options = this._options;
                        boundingRect.verticalAlignment = options.verticalAlignment;
                        boundingRect.horizontalAlignment = options.horizontalAlignment;
                        boundingRect.cutLayoutSide = options.verticalAlignment;
                        boundingRect.cutSide = "vertical";
                        boundingRect.position = {
                            horizontal: options.horizontalAlignment,
                            vertical: options.verticalAlignment
                        }
                    },
                    hasText: function() {
                        return this._hasText
                    },
                    update: function(themeOptions, userOptions) {
                        const that = this;
                        const options = (0, _extend.extend)(true, {}, themeOptions, function(options) {
                            const newOptions = (0, _type.isString)(options) ? {
                                text: options
                            } : options || {};
                            newOptions.subtitle = (0, _type.isString)(newOptions.subtitle) ? {
                                text: newOptions.subtitle
                            } : newOptions.subtitle || {};
                            return newOptions
                        }(userOptions));
                        const _hasText = hasText(options.text);
                        const isLayoutChanged = _hasText || _hasText !== that._hasText;
                        that._baseLineCorrection = 0;
                        that._updateOptions(options);
                        that._boundingRect = {};
                        if (_hasText) {
                            that._updateStructure();
                            that._updateTexts()
                        } else {
                            that._group.linkRemove()
                        }
                        that._updateBoundingRect();
                        that._updateBoundingRectAlignment();
                        that._hasText = _hasText;
                        return isLayoutChanged
                    },
                    draw: function(width, height) {
                        const that = this;
                        if (that._hasText) {
                            that._group.linkAppend();
                            that._correctTitleLength(width);
                            if (that._group.getBBox().height > height) {
                                this.freeSpace()
                            }
                        }
                        return that
                    },
                    _correctTitleLength: function(width) {
                        const that = this;
                        const options = that._options;
                        const margin = options.margin;
                        const maxWidth = width - margin.left - margin.right;
                        let placeholderSize = options.placeholderSize;
                        processTitleLength(that._titleElement, options.text, maxWidth, options, placeholderSize);
                        if (that._subtitleElement) {
                            if (_Number(placeholderSize) > 0) {
                                placeholderSize -= that._titleElement.getBBox().height
                            }
                            processTitleLength(that._subtitleElement, options.subtitle.text, maxWidth, options.subtitle, placeholderSize);
                            that._shiftSubtitle()
                        }
                        that._updateBoundingRect();
                        const {
                            x: x,
                            y: y,
                            height: height
                        } = this.getCorrectedLayoutOptions();
                        this._clipRect.attr({
                            x: x,
                            y: y,
                            width: width,
                            height: height
                        })
                    },
                    getLayoutOptions: function() {
                        return this._boundingRect || null
                    },
                    shift: function(x, y) {
                        const box = this.getLayoutOptions();
                        this._group.move(x - box.x, y - box.y);
                        return this
                    },
                    _updateBoundingRect: function() {
                        const that = this;
                        const options = that._options;
                        const margin = options.margin;
                        const boundingRect = that._boundingRect;
                        const box = that._hasText ? that._group.getBBox() : {
                            width: 0,
                            height: 0,
                            x: 0,
                            y: 0,
                            isEmpty: true
                        };
                        if (!box.isEmpty) {
                            box.height += margin.top + margin.bottom - that._baseLineCorrection;
                            box.width += margin.left + margin.right;
                            box.x -= margin.left;
                            box.y += that._baseLineCorrection - margin.top
                        }
                        if (options.placeholderSize > 0) {
                            box.height = options.placeholderSize
                        }
                        boundingRect.height = box.height;
                        boundingRect.width = box.width;
                        boundingRect.x = box.x;
                        boundingRect.y = box.y
                    },
                    getCorrectedLayoutOptions() {
                        const srcBox = this.getLayoutOptions();
                        const correction = this._baseLineCorrection;
                        return (0, _extend.extend)({}, srcBox, {
                            y: srcBox.y - correction,
                            height: srcBox.height + correction
                        })
                    },
                    layoutOptions: function() {
                        if (!this._hasText) {
                            return null
                        }
                        return {
                            horizontalAlignment: this._boundingRect.horizontalAlignment,
                            verticalAlignment: this._boundingRect.verticalAlignment,
                            priority: 0
                        }
                    },
                    measure: function(size) {
                        this.draw(size[0], size[1]);
                        return [this._boundingRect.width, this._boundingRect.height]
                    },
                    move: function(rect, fitRect) {
                        const boundingRect = this._boundingRect;
                        if (function(rect, boundingRect) {
                                return rect[2] - rect[0] < boundingRect.width || rect[3] - rect[1] < boundingRect.height
                            }(rect, boundingRect)) {
                            this.shift(fitRect[0], fitRect[1])
                        } else {
                            this.shift(Math.round(rect[0]), Math.round(rect[1]))
                        }
                    },
                    freeSpace: function() {
                        this._params.incidentOccurred("W2103");
                        this._group.linkRemove();
                        this._boundingRect.width = this._boundingRect.height = 0
                    },
                    getOptions: function() {
                        return this._options
                    },
                    changeLink: function(root) {
                        this._group.linkRemove();
                        this._group.linkOn(root, "title")
                    }
                });
                exports.plugin = {
                    name: "title",
                    init: function() {
                        this._title = new Title({
                            renderer: this._renderer,
                            cssClass: this._rootClassPrefix + "-title",
                            incidentOccurred: this._incidentOccurred
                        });
                        this._layout.add(this._title)
                    },
                    dispose: function() {
                        this._title.dispose();
                        this._title = null
                    },
                    customize: function(constructor) {
                        constructor.addChange({
                            code: "TITLE",
                            handler: function() {
                                if (this._title.update(this._themeManager.theme("title"), this.option("title"))) {
                                    this._change(["LAYOUT"])
                                }
                            },
                            isThemeDependent: true,
                            option: "title",
                            isOptionChange: true
                        })
                    },
                    fontFields: ["title.font", "title.subtitle.font"]
                }
            },
        23277:
            /*!*****************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/core/tooltip.js ***!
              \*****************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.plugin = exports.Tooltip = void 0;
                var _size = __webpack_require__( /*! ../../core/utils/size */ 57653);
                var _style = __webpack_require__( /*! ../../core/utils/style */ 58515);
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../core/dom_adapter */ 64960));
                var _window = __webpack_require__( /*! ../../core/utils/window */ 3104);
                var _dom = __webpack_require__( /*! ../../core/utils/dom */ 86858);
                var _inflector = __webpack_require__( /*! ../../core/utils/inflector */ 53124);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553));
                var _renderer2 = __webpack_require__( /*! ./renderers/renderer */ 63022);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 11528);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576);
                var _utils = __webpack_require__( /*! ./utils */ 28779);
                var _format_helper = _interopRequireDefault(__webpack_require__( /*! ../../format_helper */ 2082));
                var _plaque = __webpack_require__( /*! ./plaque */ 87040);

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const format = _format_helper.default.format;
                const mathCeil = Math.ceil;
                const mathMax = Math.max;
                const mathMin = Math.min;
                const window = (0, _window.getWindow)();

                function hideElement($element) {
                    $element.css({
                        left: "-9999px"
                    }).detach()
                }

                function createTextHtml() {
                    return (0, _renderer.default)("<div>").css({
                        position: "relative",
                        display: "inline-block",
                        padding: 0,
                        margin: 0,
                        border: "0px solid transparent"
                    })
                }
                let Tooltip = function(params) {
                    this._eventTrigger = params.eventTrigger;
                    this._widgetRoot = params.widgetRoot;
                    this._widget = params.widget;
                    this._textHtmlContainers = [];
                    this._wrapper = (0, _renderer.default)("<div>").css({
                        position: "absolute",
                        overflow: "hidden",
                        pointerEvents: "none"
                    }).addClass(params.cssClass);
                    const renderer = this._renderer = new _renderer2.Renderer({
                        pathModified: params.pathModified,
                        container: this._wrapper[0]
                    });
                    const root = renderer.root;
                    root.attr({
                        "pointer-events": "none"
                    });
                    this._text = renderer.text(void 0, 0, 0);
                    this._textGroupHtml = (0, _renderer.default)("<div>").css({
                        position: "absolute",
                        padding: 0,
                        margin: 0,
                        border: "0px solid transparent"
                    }).appendTo(this._wrapper);
                    this._textHtml = createTextHtml().appendTo(this._textGroupHtml)
                };
                exports.Tooltip = Tooltip;
                Tooltip.prototype = {
                    constructor: Tooltip,
                    dispose: function() {
                        this._wrapper.remove();
                        this._renderer.dispose();
                        this._options = this._widgetRoot = null
                    },
                    _getContainer: function() {
                        const options = this._options;
                        let container = (0, _renderer.default)(this._widgetRoot).closest(options.container);
                        if (0 === container.length) {
                            container = (0, _renderer.default)(options.container)
                        }
                        return (container.length ? container : (0, _renderer.default)("body")).get(0)
                    },
                    setTemplate(contentTemplate) {
                        this._template = contentTemplate ? this._widget._getTemplate(contentTemplate) : null
                    },
                    setOptions: function(options) {
                        options = options || {};
                        const that = this;
                        that._options = options;
                        that._textFontStyles = (0, _utils.patchFontOptions)(options.font);
                        that._textFontStyles.color = that._textFontStyles.fill;
                        that._wrapper.css({
                            zIndex: options.zIndex
                        });
                        that._customizeTooltip = options.customizeTooltip;
                        const textGroupHtml = that._textGroupHtml;
                        if (this.plaque) {
                            this.plaque.clear()
                        }
                        this.setTemplate(options.contentTemplate);
                        const pointerEvents = options.interactive ? "auto" : "none";
                        if (options.interactive) {
                            this._renderer.root.css({
                                "-moz-user-select": "auto",
                                "-webkit-user-select": "auto"
                            })
                        }
                        this.plaque = new _plaque.Plaque({
                            opacity: that._options.opacity,
                            color: that._options.color,
                            border: that._options.border,
                            paddingLeftRight: that._options.paddingLeftRight,
                            paddingTopBottom: that._options.paddingTopBottom,
                            arrowLength: that._options.arrowLength,
                            arrowWidth: 20,
                            shadow: that._options.shadow,
                            cornerRadius: that._options.cornerRadius
                        }, that, that._renderer.root, (_ref => {
                            let {
                                group: group,
                                onRender: onRender,
                                eventData: eventData,
                                isMoving: isMoving,
                                templateCallback: templateCallback = () => {}
                            } = _ref;
                            const state = that._state;
                            if (!isMoving) {
                                const template = that._template;
                                const useTemplate = template && !state.formatObject.skipTemplate;
                                if (state.html || useTemplate) {
                                    textGroupHtml.css({
                                        color: state.textColor,
                                        width: 3e3,
                                        pointerEvents: pointerEvents
                                    });
                                    if (useTemplate) {
                                        const htmlContainers = that._textHtmlContainers;
                                        const containerToTemplateRender = createTextHtml().appendTo(that._textGroupHtml);
                                        htmlContainers.push(containerToTemplateRender);
                                        template.render({
                                            model: state.formatObject,
                                            container: containerToTemplateRender,
                                            onRendered: () => {
                                                elements = htmlContainers.splice(0, htmlContainers.length - 1), void elements.forEach((el => el.remove()));
                                                var elements;
                                                that._textHtml = (0, _dom.replaceWith)(that._textHtml, containerToTemplateRender);
                                                state.html = that._textHtml.html();
                                                if (0 === (0, _size.getWidth)(that._textHtml) && 0 === (0, _size.getHeight)(that._textHtml)) {
                                                    this.plaque.clear();
                                                    templateCallback(false);
                                                    return
                                                }
                                                onRender();
                                                that._riseEvents(eventData);
                                                that._moveWrapper();
                                                that.plaque.customizeCloud({
                                                    fill: state.color,
                                                    stroke: state.borderColor,
                                                    "pointer-events": pointerEvents
                                                });
                                                templateCallback(true);
                                                that._textHtmlContainers = []
                                            }
                                        });
                                        return
                                    } else {
                                        that._text.attr({
                                            text: ""
                                        });
                                        that._textHtml.html(state.html)
                                    }
                                } else {
                                    that._text.css({
                                        fill: state.textColor
                                    }).attr({
                                        text: state.text,
                                        class: options.cssClass,
                                        "pointer-events": pointerEvents
                                    }).append(group.attr({
                                        align: options.textAlignment
                                    }))
                                }
                                that._riseEvents(eventData);
                                that.plaque.customizeCloud({
                                    fill: state.color,
                                    stroke: state.borderColor,
                                    "pointer-events": pointerEvents
                                })
                            }
                            onRender();
                            that._moveWrapper();
                            return true
                        }), true, ((tooltip, g) => {
                            const state = tooltip._state;
                            if (state.html) {
                                let bBox = window.getComputedStyle(that._textHtml.get(0));
                                bBox = {
                                    x: 0,
                                    y: 0,
                                    width: mathCeil(parseFloat(bBox.width)),
                                    height: mathCeil(parseFloat(bBox.height))
                                };
                                return bBox
                            }
                            return g.getBBox()
                        }), ((tooltip, g, x, y) => {
                            const state = tooltip._state;
                            if (state.html) {
                                that._textGroupHtml.css({
                                    left: x,
                                    top: y
                                })
                            } else {
                                g.move(x, y)
                            }
                        }));
                        return that
                    },
                    _riseEvents: function(eventData) {
                        this._eventData && this._eventTrigger("tooltipHidden", this._eventData);
                        this._eventData = eventData;
                        this._eventTrigger("tooltipShown", this._eventData)
                    },
                    setRendererOptions: function(options) {
                        this._renderer.setOptions(options);
                        this._textGroupHtml.css({
                            direction: options.rtl ? "rtl" : "ltr"
                        });
                        return this
                    },
                    update: function(options) {
                        const that = this;
                        that.setOptions(options);
                        hideElement(that._wrapper);
                        const normalizedCSS = {};
                        for (const name in that._textFontStyles) {
                            const normalizedName = (0, _inflector.camelize)(name);
                            normalizedCSS[normalizedName] = (0, _style.normalizeStyleProp)(normalizedName, that._textFontStyles[name])
                        }
                        that._textGroupHtml.css(normalizedCSS);
                        that._text.css(that._textFontStyles);
                        that._eventData = null;
                        return that
                    },
                    _prepare: function(formatObject, state) {
                        let customizeTooltip = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : this._customizeTooltip;
                        const options = this._options;
                        let customize = {};
                        if ((0, _type.isFunction)(customizeTooltip)) {
                            customize = customizeTooltip.call(formatObject, formatObject);
                            customize = (0, _type.isPlainObject)(customize) ? customize : {};
                            if ("text" in customize) {
                                state.text = (0, _type.isDefined)(customize.text) ? String(customize.text) : ""
                            }
                            if ("html" in customize) {
                                state.html = (0, _type.isDefined)(customize.html) ? String(customize.html) : ""
                            }
                        }
                        if (!("text" in state) && !("html" in state)) {
                            state.text = formatObject.valueText || formatObject.description || ""
                        }
                        state.color = customize.color || options.color;
                        state.borderColor = customize.borderColor || (options.border || {}).color;
                        state.textColor = customize.fontColor || (this._textFontStyles || {}).color;
                        return !!state.text || !!state.html || !!this._template
                    },
                    show: function(formatObject, params, eventData, customizeTooltip, templateCallback) {
                        const that = this;
                        if (that._options.forceEvents) {
                            eventData.x = params.x;
                            eventData.y = params.y - params.offset;
                            that._riseEvents(eventData);
                            return true
                        }
                        const state = {
                            formatObject: formatObject,
                            eventData: eventData,
                            templateCallback: templateCallback
                        };
                        if (!that._prepare(formatObject, state, customizeTooltip)) {
                            return false
                        }
                        that._state = state;
                        that._wrapper.appendTo(that._getContainer());
                        that._clear();
                        const parameters = (0, _extend.extend)({}, that._options, {
                            canvas: that._getCanvas()
                        }, state, {
                            x: params.x,
                            y: params.y,
                            offset: params.offset
                        });
                        return this.plaque.clear().draw(parameters)
                    },
                    isCursorOnTooltip: function(x, y) {
                        if (this._options.interactive) {
                            const box = this.plaque.getBBox();
                            return x > box.x && x < box.x + box.width && y > box.y && y < box.y + box.height
                        }
                        return false
                    },
                    hide: function(isPointerOut) {
                        const that = this;
                        hideElement(that._wrapper);
                        if (that._eventData) {
                            that._eventTrigger("tooltipHidden", that._options.forceEvents ? (0, _extend.extend)({
                                isPointerOut: isPointerOut
                            }, that._eventData) : that._eventData);
                            that._clear();
                            that._eventData = null
                        }
                    },
                    _clear() {
                        this._textHtml.empty()
                    },
                    move: function(x, y, offset) {
                        this.plaque.draw({
                            x: x,
                            y: y,
                            offset: offset,
                            canvas: this._getCanvas(),
                            isMoving: true
                        })
                    },
                    _moveWrapper: function() {
                        const that = this;
                        const plaqueBBox = this.plaque.getBBox();
                        that._renderer.resize(plaqueBBox.width, plaqueBBox.height);
                        const offset = that._wrapper.css({
                            left: 0,
                            top: 0
                        }).offset();
                        const left = plaqueBBox.x;
                        const top = plaqueBBox.y;
                        that._wrapper.css({
                            left: left - offset.left,
                            top: top - offset.top
                        });
                        this.plaque.moveRoot(-left, -top);
                        if (this._state.html) {
                            that._textHtml.css({
                                left: -left,
                                top: -top
                            });
                            that._textGroupHtml.css({
                                width: mathCeil((0, _size.getWidth)(that._textHtml))
                            })
                        }
                    },
                    formatValue: function(value, _specialFormat) {
                        const options = _specialFormat ? function(options, specialFormat) {
                            let result = options;
                            switch (specialFormat) {
                                case "argument":
                                    result = {
                                        format: options.argumentFormat
                                    };
                                    break;
                                case "percent":
                                    result = {
                                        format: {
                                            type: "percent",
                                            precision: options.format && options.format.percentPrecision
                                        }
                                    }
                            }
                            return result
                        }(this._options, _specialFormat) : this._options;
                        return format(value, options.format)
                    },
                    getOptions() {
                        return this._options
                    },
                    getLocation: function() {
                        return (0, _utils.normalizeEnum)(this._options.location)
                    },
                    isEnabled: function() {
                        return !!this._options.enabled || !!this._options.forceEvents
                    },
                    isShared: function() {
                        return !!this._options.shared
                    },
                    _getCanvas: function() {
                        const container = this._getContainer();
                        const containerBox = container.getBoundingClientRect();
                        const html = _dom_adapter.default.getDocumentElement();
                        const document = _dom_adapter.default.getDocument();
                        let left = window.pageXOffset || html.scrollLeft || 0;
                        let top = window.pageYOffset || html.scrollTop || 0;
                        const box = {
                            left: left,
                            top: top,
                            width: mathMax(html.clientWidth, document.body.clientWidth) + left,
                            height: mathMax(document.body.scrollHeight, html.scrollHeight, document.body.offsetHeight, html.offsetHeight, document.body.clientHeight, html.clientHeight),
                            right: 0,
                            bottom: 0
                        };
                        if (container !== _dom_adapter.default.getBody()) {
                            left = mathMax(box.left, box.left + containerBox.left);
                            top = mathMax(box.top, box.top + containerBox.top);
                            box.width = mathMin(containerBox.width, box.width) + left + box.left;
                            box.height = mathMin(containerBox.height, box.height) + top + box.top;
                            box.left = left;
                            box.top = top
                        }
                        return box
                    }
                };
                exports.plugin = {
                    name: "tooltip",
                    init: function() {
                        this._initTooltip()
                    },
                    dispose: function() {
                        this._disposeTooltip()
                    },
                    members: {
                        _initTooltip: function() {
                            this._tooltip = new Tooltip({
                                cssClass: this._rootClassPrefix + "-tooltip",
                                eventTrigger: this._eventTrigger,
                                pathModified: this.option("pathModified"),
                                widgetRoot: this.element(),
                                widget: this
                            })
                        },
                        _disposeTooltip: function() {
                            this._tooltip.dispose();
                            this._tooltip = null
                        },
                        _setTooltipRendererOptions: function() {
                            this._tooltip.setRendererOptions(this._getRendererOptions())
                        },
                        _setTooltipOptions: function() {
                            this._tooltip.update(this._getOption("tooltip"))
                        }
                    },
                    extenders: {
                        _stopCurrentHandling() {
                            this._tooltip && this._tooltip.hide()
                        }
                    },
                    customize: function(constructor) {
                        const proto = constructor.prototype;
                        proto._eventsMap.onTooltipShown = {
                            name: "tooltipShown"
                        };
                        proto._eventsMap.onTooltipHidden = {
                            name: "tooltipHidden"
                        };
                        constructor.addChange({
                            code: "TOOLTIP_RENDERER",
                            handler: function() {
                                this._setTooltipRendererOptions()
                            },
                            isThemeDependent: true,
                            isOptionChange: true
                        });
                        constructor.addChange({
                            code: "TOOLTIP",
                            handler: function() {
                                this._setTooltipOptions()
                            },
                            isThemeDependent: true,
                            isOptionChange: true,
                            option: "tooltip"
                        })
                    },
                    fontFields: ["tooltip.font"]
                }
            },
        28779:
            /*!***************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/core/utils.js ***!
              \***************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.PANE_PADDING = void 0;
                exports.adjustVisualRange = function(options, visualRange, wholeRange, dataRange) {
                    const minDefined = (0, _type.isDefined)(visualRange.startValue);
                    const maxDefined = (0, _type.isDefined)(visualRange.endValue);
                    const nonDiscrete = "discrete" !== options.axisType;
                    dataRange = dataRange || wholeRange;
                    const add = getAddFunction(options, false);
                    let min = minDefined ? visualRange.startValue : dataRange.min;
                    let max = maxDefined ? visualRange.endValue : dataRange.max;
                    let rangeLength = visualRange.length;
                    const categories = dataRange.categories;
                    if (nonDiscrete && !(0, _type.isDefined)(min) && !(0, _type.isDefined)(max)) {
                        return {
                            startValue: min,
                            endValue: max
                        }
                    }
                    if ((0, _type.isDefined)(rangeLength)) {
                        if (nonDiscrete) {
                            if ("datetime" === options.dataType && !(0, _type.isNumeric)(rangeLength)) {
                                rangeLength = dateToMilliseconds(rangeLength)
                            }
                            if (maxDefined && !minDefined || !maxDefined && !minDefined) {
                                (0, _type.isDefined)(wholeRange.max) && (max = max > wholeRange.max ? wholeRange.max : max);
                                min = add(max, rangeLength, -1)
                            } else if (minDefined && !maxDefined) {
                                (0, _type.isDefined)(wholeRange.min) && (min = min < wholeRange.min ? wholeRange.min : min);
                                max = add(min, rangeLength)
                            }
                        } else {
                            rangeLength = parseInt(rangeLength);
                            if (!isNaN(rangeLength) && isFinite(rangeLength)) {
                                rangeLength--;
                                if (!maxDefined && !minDefined) {
                                    max = categories[categories.length - 1];
                                    min = categories[categories.length - 1 - rangeLength]
                                } else if (minDefined && !maxDefined) {
                                    const categoriesInfo = getCategoriesInfo(categories, min, void 0);
                                    max = categoriesInfo.categories[rangeLength]
                                } else if (!minDefined && maxDefined) {
                                    const categoriesInfo = getCategoriesInfo(categories, void 0, max);
                                    min = categoriesInfo.categories[categoriesInfo.categories.length - 1 - rangeLength]
                                }
                            }
                        }
                    }
                    if (nonDiscrete) {
                        if ((0, _type.isDefined)(wholeRange.max) && max > wholeRange.max) {
                            max = wholeRange.max
                        }
                        if ((0, _type.isDefined)(wholeRange.min) && min < wholeRange.min) {
                            min = wholeRange.min
                        }
                    }
                    return {
                        startValue: min,
                        endValue: max
                    }
                };
                exports.convertAngleToRendererSpace = void 0;
                exports.convertPolarToXY = function(centerCoords, startAngle, angle, radius) {
                    const normalizedRadius = radius > 0 ? radius : 0;
                    angle = (0, _type.isDefined)(angle) ? angle + startAngle - 90 : 0;
                    const cosSin = getCosAndSin(angle);
                    return {
                        x: _round(centerCoords.x + normalizedRadius * cosSin.cos),
                        y: _round(centerCoords.y + normalizedRadius * cosSin.sin)
                    }
                };
                exports.convertVisualRangeObject = function(visualRange, convertToVisualRange) {
                    if (convertToVisualRange) {
                        return visualRange
                    }
                    return [visualRange.startValue, visualRange.endValue]
                };
                exports.enumParser = exports.degreesToRadians = exports.decreaseGaps = exports.convertXYToPolar = void 0;
                exports.extractColor = function(color, isBase) {
                    if ((0, _type.isString)(color) || !color) {
                        return color
                    } else if (isBase) {
                        return color.base
                    } else {
                        return color.fillId || color.base
                    }
                };
                exports.getAddFunction = getAddFunction;
                exports.getLog = exports.getDistance = exports.getDecimalOrder = exports.getCosAndSin = exports.getCategoriesInfo = exports.getAppropriateFormat = exports.getAdjustedLog10 = void 0;
                exports.getLogExt = getLogExt;
                exports.getVerticallyShiftedAngularCoords = exports.getPower = exports.getNextDefsSvgId = void 0;
                exports.getVizRangeObject = function(value) {
                    if (Array.isArray(value)) {
                        return {
                            startValue: value[0],
                            endValue: value[1]
                        }
                    } else {
                        return value || {}
                    }
                };
                exports.isRelativeHeightPane = isRelativeHeightPane;
                exports.map = map;
                exports.mergeMarginOptions = function(opt1, opt2) {
                    return {
                        checkInterval: opt1.checkInterval || opt2.checkInterval,
                        size: _max(opt1.size || 0, opt2.size || 0),
                        percentStick: opt1.percentStick || opt2.percentStick,
                        sizePointNormalState: _max(opt1.sizePointNormalState || 0, opt2.sizePointNormalState || 0)
                    }
                };
                exports.normalizeAngle = void 0;
                exports.normalizeArcParams = function(x, y, innerRadius, outerRadius, startAngle, endAngle) {
                    let isCircle;
                    let noArc = true;
                    const angleDiff = roundValue(endAngle, 3) - roundValue(startAngle, 3);
                    if (angleDiff) {
                        if (abs(angleDiff) % 360 === 0) {
                            startAngle = 0;
                            endAngle = 360;
                            isCircle = true;
                            endAngle -= .01
                        }
                        if (startAngle > 360) {
                            startAngle %= 360
                        }
                        if (endAngle > 360) {
                            endAngle %= 360
                        }
                        if (startAngle > endAngle) {
                            startAngle -= 360
                        }
                        noArc = false
                    }
                    startAngle *= PI_DIV_180;
                    endAngle *= PI_DIV_180;
                    return [x, y, Math.min(outerRadius, innerRadius), Math.max(outerRadius, innerRadius), Math.cos(startAngle), Math.sin(startAngle), Math.cos(endAngle), Math.sin(endAngle), isCircle, floor(abs(endAngle - startAngle) / PI) % 2 ? "1" : "0", noArc]
                };
                exports.normalizeBBox = normalizeBBox;
                exports.normalizeEnum = normalizeEnum;
                exports.normalizePanesHeight = function(panes) {
                    panes.forEach((pane => {
                        const height = pane.height;
                        let unit = 0;
                        let parsedHeight = parseFloat(height) || void 0;
                        if ((0, _type.isString)(height) && height.indexOf("px") > -1 || (0, _type.isNumeric)(height) && height > 1) {
                            parsedHeight = _round(parsedHeight);
                            unit = 1
                        }
                        if (!unit && parsedHeight) {
                            if ((0, _type.isString)(height) && height.indexOf("%") > -1) {
                                parsedHeight /= 100;
                                unit = 2
                            } else if (parsedHeight < 0) {
                                parsedHeight = parsedHeight < -1 ? 1 : abs(parsedHeight)
                            }
                        }
                        pane.height = parsedHeight;
                        pane.unit = unit
                    }));
                    const relativeHeightPanes = panes.filter(isRelativeHeightPane);
                    const weightSum = relativeHeightPanes.reduce(((prev, next) => prev + (next.height || 0)), 0);
                    const weightHeightCount = relativeHeightPanes.length;
                    const emptyHeightPanes = relativeHeightPanes.filter((pane => !pane.height));
                    const emptyHeightCount = emptyHeightPanes.length;
                    if (weightSum < 1 && emptyHeightCount) {
                        emptyHeightPanes.forEach((pane => pane.height = (1 - weightSum) / emptyHeightCount))
                    } else if (weightSum > 1 || weightSum < 1 && !emptyHeightCount || 1 === weightSum && emptyHeightCount) {
                        if (emptyHeightCount) {
                            const weightForEmpty = weightSum / weightHeightCount;
                            const emptyWeightSum = emptyHeightCount * weightForEmpty;
                            relativeHeightPanes.filter((pane => pane.height)).forEach((pane => pane.height *= (weightSum - emptyWeightSum) / weightSum));
                            emptyHeightPanes.forEach((pane => pane.height = weightForEmpty))
                        }
                        relativeHeightPanes.forEach((pane => pane.height *= 1 / weightSum))
                    }
                };
                exports.patchFontOptions = exports.parseScalar = void 0;
                exports.pointInCanvas = function(canvas, x, y) {
                    return x >= canvas.left && x <= canvas.right && y >= canvas.top && y <= canvas.bottom
                };
                exports.raiseTo = exports.processSeriesTemplate = void 0;
                exports.raiseToExt = raiseToExt;
                exports.rangesAreEqual = function(range, rangeFromOptions) {
                    if (Array.isArray(rangeFromOptions)) {
                        return range.length === rangeFromOptions.length && range.every(((item, i) => valueOf(item) === valueOf(rangeFromOptions[i])))
                    } else {
                        return valueOf(range.startValue) === valueOf(rangeFromOptions.startValue) && valueOf(range.endValue) === valueOf(rangeFromOptions.endValue)
                    }
                };
                exports.rotateBBox = function(bBox, center, angle) {
                    const cos = _Number(_cos(angle * PI_DIV_180).toFixed(3));
                    const sin = _Number(_sin(angle * PI_DIV_180).toFixed(3));
                    const w2 = bBox.width / 2;
                    const h2 = bBox.height / 2;
                    const centerX = bBox.x + w2;
                    const centerY = bBox.y + h2;
                    const w2_ = abs(w2 * cos) + abs(h2 * sin);
                    const h2_ = abs(w2 * sin) + abs(h2 * cos);
                    const centerX_ = center[0] + (centerX - center[0]) * cos + (centerY - center[1]) * sin;
                    const centerY_ = center[1] - (centerX - center[0]) * sin + (centerY - center[1]) * cos;
                    return normalizeBBox({
                        x: centerX_ - w2_,
                        y: centerY_ - h2_,
                        width: 2 * w2_,
                        height: 2 * h2_
                    })
                };
                exports.roundValue = void 0;
                exports.setCanvasValues = setCanvasValues;
                exports.unique = void 0;
                exports.updatePanesCanvases = function(panes, canvas, rotated) {
                    let distributedSpace = 0;
                    const padding = PANE_PADDING;
                    const paneSpace = rotated ? canvas.width - canvas.left - canvas.right : canvas.height - canvas.top - canvas.bottom;
                    const totalCustomSpace = panes.reduce(((prev, cur) => prev + (!isRelativeHeightPane(cur) ? cur.height : 0)), 0);
                    const usefulSpace = paneSpace - padding * (panes.length - 1) - totalCustomSpace;
                    const startName = rotated ? "left" : "top";
                    const endName = rotated ? "right" : "bottom";
                    panes.forEach((pane => {
                        const calcLength = !isRelativeHeightPane(pane) ? pane.height : _round(pane.height * usefulSpace);
                        pane.canvas = pane.canvas || {};
                        (0, _extend.extend)(pane.canvas, canvas);
                        pane.canvas[startName] = canvas[startName] + distributedSpace;
                        pane.canvas[endName] = canvas[endName] + (paneSpace - calcLength - distributedSpace);
                        distributedSpace = distributedSpace + calcLength + padding;
                        setCanvasValues(pane.canvas)
                    }))
                };
                exports.valueOf = valueOf;
                var _common = __webpack_require__( /*! ../../core/utils/common */ 17781);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 11528);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 21274);
                var _math = __webpack_require__( /*! ../../core/utils/math */ 50254);
                var _date = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/date */ 41380));
                var _color = _interopRequireDefault(__webpack_require__( /*! ../../color */ 43101));

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const {
                    PI: PI,
                    LN10: LN10,
                    abs: abs,
                    log: log,
                    floor: floor,
                    ceil: ceil,
                    pow: pow,
                    sqrt: sqrt,
                    atan2: atan2
                } = Math;
                const _min = Math.min;
                const _max = Math.max;
                const _cos = Math.cos;
                const _sin = Math.sin;
                const _round = Math.round;
                const dateToMilliseconds = _date.default.dateToMilliseconds;
                const MAX_PIXEL_COUNT = 1e10;
                const PI_DIV_180 = PI / 180;
                const _isNaN = isNaN;
                const _Number = Number;
                let numDefsSvgElements = 1;
                const PANE_PADDING = exports.PANE_PADDING = 10;
                const getLog = function(value, base) {
                    if (!value) {
                        return NaN
                    }
                    return log(value) / log(base)
                };
                exports.getLog = getLog;
                exports.getAdjustedLog10 = function(value) {
                    return (0, _math.adjust)(getLog(value, 10))
                };
                const raiseTo = function(power, base) {
                    return pow(base, power)
                };
                exports.raiseTo = raiseTo;
                const normalizeAngle = function(angle) {
                    return (angle % 360 + 360) % 360
                };
                exports.normalizeAngle = normalizeAngle;
                exports.convertAngleToRendererSpace = function(angle) {
                    return 90 - angle
                };
                const degreesToRadians = function(value) {
                    return PI * value / 180
                };
                exports.degreesToRadians = degreesToRadians;
                const getCosAndSin = function(angle) {
                    const angleInRadians = degreesToRadians(angle);
                    return {
                        cos: _cos(angleInRadians),
                        sin: _sin(angleInRadians)
                    }
                };
                exports.getCosAndSin = getCosAndSin;
                const getDistance = function(x1, y1, x2, y2) {
                    const diffX = x2 - x1;
                    const diffY = y2 - y1;
                    return sqrt(diffY * diffY + diffX * diffX)
                };
                exports.getDistance = getDistance;
                const getDecimalOrder = function(number) {
                    let n = abs(number);
                    let cn;
                    if (!_isNaN(n)) {
                        if (n > 0) {
                            n = log(n) / LN10;
                            cn = ceil(n);
                            return cn - n < 1e-14 ? cn : floor(n)
                        }
                        return 0
                    }
                    return NaN
                };
                exports.getDecimalOrder = getDecimalOrder;
                exports.getAppropriateFormat = function(start, end, count) {
                    const order = _max(getDecimalOrder(start), getDecimalOrder(end));
                    let precision = -getDecimalOrder(abs(end - start) / count);
                    let format;
                    if (!_isNaN(order) && !_isNaN(precision)) {
                        if (abs(order) <= 4) {
                            format = "fixedPoint";
                            precision < 0 && (precision = 0);
                            precision > 4 && (precision = 4)
                        } else {
                            format = "exponential";
                            precision += order - 1;
                            precision > 3 && (precision = 3)
                        }
                        return {
                            type: format,
                            precision: precision
                        }
                    }
                    return null
                };
                const roundValue = function(value, precision) {
                    if (precision > 20) {
                        precision = 20
                    }
                    if ((0, _type.isNumeric)(value)) {
                        if ((0, _type.isExponential)(value)) {
                            return _Number(value.toExponential(precision))
                        } else {
                            return _Number(value.toFixed(precision))
                        }
                    }
                };
                exports.roundValue = roundValue;
                exports.getPower = function(value) {
                    return value.toExponential().split("e")[1]
                };

                function map(array, callback) {
                    let i = 0;
                    const len = array.length;
                    const result = [];
                    let value;
                    while (i < len) {
                        value = callback(array[i], i);
                        if (null !== value) {
                            result.push(value)
                        }
                        i++
                    }
                    return result
                }

                function selectByKeys(object, keys) {
                    return map(keys, (key => object[key] ? object[key] : null))
                }

                function decreaseFields(object, keys, eachDecrease, decrease) {
                    let dec = decrease;
                    (0, _iterator.each)(keys, ((_, key) => {
                        if (object[key]) {
                            object[key] -= eachDecrease;
                            dec -= eachDecrease
                        }
                    }));
                    return dec
                }

                function normalizeEnum(value) {
                    return String(value).toLowerCase()
                }

                function setCanvasValues(canvas) {
                    if (canvas) {
                        canvas.originalTop = canvas.top;
                        canvas.originalBottom = canvas.bottom;
                        canvas.originalLeft = canvas.left;
                        canvas.originalRight = canvas.right
                    }
                    return canvas
                }

                function normalizeBBoxField(value) {
                    return -MAX_PIXEL_COUNT < value && value < +MAX_PIXEL_COUNT ? value : 0
                }

                function normalizeBBox(bBox) {
                    const xl = normalizeBBoxField(floor(bBox.x));
                    const yt = normalizeBBoxField(floor(bBox.y));
                    const xr = normalizeBBoxField(ceil(bBox.width + bBox.x));
                    const yb = normalizeBBoxField(ceil(bBox.height + bBox.y));
                    const result = {
                        x: xl,
                        y: yt,
                        width: xr - xl,
                        height: yb - yt
                    };
                    result.isEmpty = !result.x && !result.y && !result.width && !result.height;
                    return result
                }
                exports.decreaseGaps = function(object, keys, decrease) {
                    let arrayGaps;
                    do {
                        arrayGaps = selectByKeys(object, keys);
                        arrayGaps.push(ceil(decrease / arrayGaps.length));
                        decrease = decreaseFields(object, keys, _min.apply(null, arrayGaps), decrease)
                    } while (decrease > 0 && arrayGaps.length > 1);
                    return decrease
                };
                exports.parseScalar = function(value, defaultValue) {
                    return void 0 !== value ? value : defaultValue
                };
                exports.enumParser = function(values) {
                    const stored = {};
                    let i;
                    let ii;
                    for (i = 0, ii = values.length; i < ii; ++i) {
                        stored[normalizeEnum(values[i])] = 1
                    }
                    return function(value, defaultValue) {
                        const _value = normalizeEnum(value);
                        return stored[_value] ? _value : defaultValue
                    }
                };
                exports.patchFontOptions = function(options) {
                    const fontOptions = {};
                    (0, _iterator.each)(options || {}, (function(key, value) {
                        if (/^(cursor)$/i.test(key)) {} else if ("opacity" === key) {
                            value = null
                        } else if ("color" === key) {
                            key = "fill";
                            if ("opacity" in options) {
                                const color = new _color.default(value);
                                value = `rgba(${color.r},${color.g},${color.b},${options.opacity})`
                            }
                        } else {
                            key = "font-" + key
                        }
                        fontOptions[key] = value
                    }));
                    return fontOptions
                };
                exports.convertXYToPolar = function(centerCoords, x, y) {
                    const radius = getDistance(centerCoords.x, centerCoords.y, x, y);
                    const angle = atan2(y - centerCoords.y, x - centerCoords.x);
                    return {
                        phi: _round(normalizeAngle(180 * angle / PI)),
                        r: _round(radius)
                    }
                };
                exports.processSeriesTemplate = function(seriesTemplate, items) {
                    const customizeSeries = (0, _type.isFunction)(seriesTemplate.customizeSeries) ? seriesTemplate.customizeSeries : _common.noop;
                    const nameField = seriesTemplate.nameField;
                    const generatedSeries = {};
                    const seriesOrder = [];
                    let series;
                    let i = 0;
                    let length;
                    let data;
                    items = items || [];
                    for (length = items.length; i < length; i++) {
                        data = items[i];
                        if (nameField in data) {
                            series = generatedSeries[data[nameField]];
                            if (!series) {
                                series = generatedSeries[data[nameField]] = {
                                    name: data[nameField],
                                    nameFieldValue: data[nameField]
                                };
                                seriesOrder.push(series.name)
                            }
                        }
                    }
                    return map(seriesOrder, (function(orderedName) {
                        const group = generatedSeries[orderedName];
                        return (0, _extend.extend)(group, customizeSeries.call(null, group.name))
                    }))
                };
                const getCategoriesInfo = function(categories, startValue, endValue) {
                    if (0 === categories.length) {
                        return {
                            categories: []
                        }
                    }
                    startValue = (0, _type.isDefined)(startValue) ? startValue : categories[0];
                    endValue = (0, _type.isDefined)(endValue) ? endValue : categories[categories.length - 1];
                    const categoriesValue = map(categories, (category => null === category || void 0 === category ? void 0 : category.valueOf()));
                    let indexStartValue = categoriesValue.indexOf(startValue.valueOf());
                    let indexEndValue = categoriesValue.indexOf(endValue.valueOf());
                    let swapBuf;
                    let inverted = false;
                    indexStartValue < 0 && (indexStartValue = 0);
                    indexEndValue < 0 && (indexEndValue = categories.length - 1);
                    if (indexEndValue < indexStartValue) {
                        swapBuf = indexEndValue;
                        indexEndValue = indexStartValue;
                        indexStartValue = swapBuf;
                        inverted = true
                    }
                    const visibleCategories = categories.slice(indexStartValue, indexEndValue + 1);
                    const lastIdx = visibleCategories.length - 1;
                    return {
                        categories: visibleCategories,
                        start: visibleCategories[inverted ? lastIdx : 0],
                        end: visibleCategories[inverted ? 0 : lastIdx],
                        inverted: inverted
                    }
                };
                exports.getCategoriesInfo = getCategoriesInfo;

                function isRelativeHeightPane(pane) {
                    return !(pane.unit % 2)
                }
                exports.unique = function(array) {
                    const values = {};
                    return map(array, (function(item) {
                        const result = !values[item] ? item : null;
                        values[item] = true;
                        return result
                    }))
                };
                exports.getVerticallyShiftedAngularCoords = function(bBox, dy, center) {
                    const isPositive = bBox.x + bBox.width / 2 >= center.x;
                    const horizontalOffset1 = (isPositive ? bBox.x : bBox.x + bBox.width) - center.x;
                    const verticalOffset1 = bBox.y - center.y;
                    const verticalOffset2 = verticalOffset1 + dy;
                    const horizontalOffset2 = _round(sqrt(horizontalOffset1 * horizontalOffset1 + verticalOffset1 * verticalOffset1 - verticalOffset2 * verticalOffset2));
                    const dx = (isPositive ? +horizontalOffset2 : -horizontalOffset2) || horizontalOffset1;
                    return {
                        x: center.x + (isPositive ? dx : dx - bBox.width),
                        y: bBox.y + dy
                    }
                };

                function getAddFunction(range, correctZeroLevel) {
                    if ("datetime" === range.dataType) {
                        return function(rangeValue, marginValue) {
                            let sign = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 1;
                            return new Date(rangeValue.getTime() + sign * marginValue)
                        }
                    }
                    if ("logarithmic" === range.axisType) {
                        return function(rangeValue, marginValue) {
                            let sign = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 1;
                            const log = getLogExt(rangeValue, range.base) + sign * marginValue;
                            return raiseToExt(log, range.base)
                        }
                    }
                    return function(rangeValue, marginValue) {
                        let sign = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 1;
                        const newValue = rangeValue + sign * marginValue;
                        return correctZeroLevel && newValue * rangeValue <= 0 ? 0 : newValue
                    }
                }

                function getLogExt(value, base) {
                    let allowNegatives = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : false;
                    let linearThreshold = arguments.length > 3 ? arguments[3] : void 0;
                    if (!allowNegatives) {
                        return getLog(value, base)
                    }
                    if (0 === value) {
                        return 0
                    }
                    const transformValue = getLog(abs(value), base) - (linearThreshold - 1);
                    if (transformValue < 0) {
                        return 0
                    }
                    return (0, _math.adjust)((0, _math.sign)(value) * transformValue, Number(pow(base, linearThreshold - 1).toFixed(abs(linearThreshold))))
                }

                function raiseToExt(value, base) {
                    let allowNegatives = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : false;
                    let linearThreshold = arguments.length > 3 ? arguments[3] : void 0;
                    if (!allowNegatives) {
                        return raiseTo(value, base)
                    }
                    if (0 === value) {
                        return 0
                    }
                    const transformValue = raiseTo(abs(value) + (linearThreshold - 1), base);
                    if (transformValue < 0) {
                        return 0
                    }
                    return (0, _math.adjust)((0, _math.sign)(value) * transformValue, Number(pow(base, linearThreshold).toFixed(abs(linearThreshold))))
                }

                function valueOf(value) {
                    return value && value.valueOf()
                }
                exports.getNextDefsSvgId = () => "DevExpress_" + numDefsSvgElements++
            },
        88168:
            /*!***********************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/export.js ***!
              \***********************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                var _export = __webpack_require__( /*! ./core/export */ 74754);
                Object.keys(_export).forEach((function(key) {
                    if ("default" === key || "__esModule" === key) {
                        return
                    }
                    if (key in exports && exports[key] === _export[key]) {
                        return
                    }
                    Object.defineProperty(exports, key, {
                        enumerable: true,
                        get: function() {
                            return _export[key]
                        }
                    })
                }))
            },
        61434:
            /*!***********************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/funnel.js ***!
              \***********************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _funnel = (e = __webpack_require__( /*! ./funnel/funnel */ 52725), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                var _label = __webpack_require__( /*! ./funnel/label */ 18943);
                var _export = __webpack_require__( /*! ./core/export */ 74754);
                var _title = __webpack_require__( /*! ./core/title */ 16216);
                var _legend = __webpack_require__( /*! ./components/legend */ 67056);
                var _tracker = __webpack_require__( /*! ./funnel/tracker */ 11805);
                var _tooltip = __webpack_require__( /*! ./funnel/tooltip */ 13853);
                var _loading_indicator = __webpack_require__( /*! ./core/loading_indicator */ 92528);
                _funnel.default.addPlugin(_label.plugin);
                _funnel.default.addPlugin(_export.plugin);
                _funnel.default.addPlugin(_title.plugin);
                _funnel.default.addPlugin(_legend.plugin);
                _funnel.default.addPlugin(_tracker.plugin);
                _funnel.default.addPlugin(_tooltip.plugin);
                _funnel.default.addPlugin(_loading_indicator.plugin);
                exports.default = _funnel.default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        52725:
            /*!******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/funnel/funnel.js ***!
              \******************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _tiling = __webpack_require__( /*! ./tiling */ 43858);
                var _tiling2 = _interopRequireDefault(__webpack_require__( /*! ./tiling.funnel */ 66194));
                var _tiling3 = _interopRequireDefault(__webpack_require__( /*! ./tiling.pyramid */ 59327));
                var _common = __webpack_require__( /*! ../../core/utils/common */ 17781);
                var _m_base_widget = _interopRequireDefault(__webpack_require__( /*! ../../__internal/viz/core/m_base_widget */ 34506));
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 92848));
                var _item = _interopRequireDefault(__webpack_require__( /*! ./item */ 5810));
                var _data_source = __webpack_require__( /*! ../core/data_source */ 25058);

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }(0, _tiling.addAlgorithm)("dynamicslope", _tiling2.default, true);
                (0, _tiling.addAlgorithm)("dynamicheight", _tiling3.default);

                function getLegendItemState(itemState) {
                    return {
                        fill: itemState.fill,
                        hatching: itemState.hatching
                    }
                }
                const dxFunnel = _m_base_widget.default.inherit({
                    _rootClass: "dxf-funnel",
                    _rootClassPrefix: "dxf",
                    _proxyData: [],
                    _optionChangesMap: {
                        dataSource: "DATA_SOURCE",
                        neckWidth: "NODES_CREATE",
                        neckHeight: "NODES_CREATE",
                        inverted: "NODES_CREATE",
                        algorithm: "NODES_CREATE",
                        item: "NODES_CREATE",
                        valueField: "NODES_CREATE",
                        argumentField: "NODES_CREATE",
                        colorField: "NODES_CREATE",
                        palette: "NODES_CREATE",
                        paletteExtensionMode: "NODES_CREATE",
                        sortData: "NODES_CREATE"
                    },
                    _themeDependentChanges: ["NODES_CREATE"],
                    _getDefaultSize: function() {
                        return {
                            width: 400,
                            height: 400
                        }
                    },
                    _themeSection: "funnel",
                    _fontFields: ["legend.title.font", "legend.title.subtitle.font", "legend.font"],
                    _optionChangesOrder: ["DATA_SOURCE"],
                    _initialChanges: ["DATA_SOURCE"],
                    _initCore: function() {
                        this._group = this._renderer.g().append(this._renderer.root);
                        this._items = []
                    },
                    _eventsMap: {
                        onHoverChanged: {
                            name: "hoverChanged"
                        },
                        onSelectionChanged: {
                            name: "selectionChanged"
                        }
                    },
                    _disposeCore: _common.noop,
                    _applySize: function(rect) {
                        this._rect = rect.slice();
                        this._change(["TILING"]);
                        return this._rect
                    },
                    _getAlignmentRect: function() {
                        return this._rect
                    },
                    _change_TILING: function() {
                        const that = this;
                        const items = that._items;
                        const rect = that._rect;
                        const convertCoord = function(coord, index) {
                            const offset = index % 2;
                            return rect[0 + offset] + (rect[2 + offset] - rect[0 + offset]) * coord
                        };
                        this._group.clear();
                        items.forEach((function(item, index) {
                            const coords = item.figure.map(convertCoord);
                            const element = that._renderer.path([], "area").attr({
                                points: coords
                            }).append(that._group);
                            item.coords = coords;
                            item.element = element
                        }));
                        this._requestChange(["TILES"])
                    },
                    _customChangesOrder: ["NODES_CREATE", "LAYOUT", "TILING", "TILES", "DRAWN"],
                    _dataSourceChangedHandler: function() {
                        this._requestChange(["NODES_CREATE"])
                    },
                    _change_DRAWN: function() {
                        this._drawn()
                    },
                    _change_DATA_SOURCE: function() {
                        this._change(["DRAWN"]);
                        this._updateDataSource()
                    },
                    _change_NODES_CREATE: function() {
                        this._buildNodes()
                    },
                    _change_TILES: function() {
                        this._applyTilesAppearance()
                    },
                    _suspend: function() {
                        if (!this._applyingChanges) {
                            this._suspendChanges()
                        }
                    },
                    _resume: function() {
                        if (!this._applyingChanges) {
                            this._resumeChanges()
                        }
                    },
                    _applyTilesAppearance: function() {
                        this._items.forEach((function(item) {
                            const state = item.getState();
                            item.element.smartAttr(item.states[state])
                        }))
                    },
                    _hitTestTargets: function(x, y) {
                        const that = this;
                        let data;
                        this._proxyData.some((function(callback) {
                            data = callback.call(that, x, y);
                            if (data) {
                                return true
                            }
                        }));
                        return data
                    },
                    clearHover: function() {
                        this._suspend();
                        this._items.forEach((function(item) {
                            item.isHovered() && item.hover(false)
                        }));
                        this._resume()
                    },
                    clearSelection: function() {
                        this._suspend();
                        this._items.forEach((function(item) {
                            item.isSelected() && item.select(false)
                        }));
                        this._resume()
                    },
                    _getData: function() {
                        const that = this;
                        const data = that._dataSourceItems() || [];
                        const valueField = that._getOption("valueField", true);
                        const argumentField = that._getOption("argumentField", true);
                        const colorField = that._getOption("colorField", true);
                        const processedData = data.reduce((function(d, item) {
                            const value = Number(item[valueField]);
                            if (value >= 0) {
                                d[0].push({
                                    value: value,
                                    color: item[colorField],
                                    argument: item[argumentField],
                                    dataItem: item
                                });
                                d[1] += value
                            }
                            return d
                        }), [
                            [], 0
                        ]);
                        const items = processedData[0];
                        if (data.length > 0 && 0 === items.length) {
                            that._incidentOccurred("E2005", valueField)
                        }
                        if (!processedData[1]) {
                            return []
                        }
                        if (that._getOption("sortData", true)) {
                            items.sort((function(a, b) {
                                return b.value - a.value
                            }))
                        }
                        return items
                    },
                    _buildNodes: function() {
                        const that = this;
                        const data = that._getData();
                        const algorithm = (0, _tiling.getAlgorithm)(that._getOption("algorithm", true));
                        const percents = algorithm.normalizeValues(data);
                        const itemOptions = that._getOption("item");
                        const figures = algorithm.getFigures(percents, that._getOption("neckWidth", true), that._getOption("neckHeight", true));
                        const palette = that._themeManager.createPalette(that._getOption("palette", true), {
                            useHighlight: true,
                            extensionMode: that._getOption("paletteExtensionMode", true),
                            count: figures.length
                        });
                        that._items = figures.map((function(figure, index) {
                            const curData = data[index];
                            const node = new _item.default(that, {
                                figure: figure,
                                data: curData,
                                percent: percents[index],
                                id: index,
                                color: curData.color || palette.getNextColor(),
                                itemOptions: itemOptions
                            });
                            return node
                        }));
                        if (that._getOption("inverted", true)) {
                            that._items.forEach((function(item) {
                                item.figure = (figure = item.figure, figure.map((function(coord, index) {
                                    return index % 2 ? 1 - coord : coord
                                })));
                                var figure
                            }))
                        }
                        that._renderer.initDefsElements();
                        that._change(["TILING", "DRAWN"])
                    },
                    _showTooltip: _common.noop,
                    hideTooltip: _common.noop,
                    getAllItems: function() {
                        return this._items.slice()
                    },
                    _getLegendData() {
                        return this._items.map((item => {
                            const states = item.states;
                            return {
                                id: item.id,
                                visible: true,
                                text: item.argument,
                                item: item,
                                states: {
                                    normal: getLegendItemState(states.normal),
                                    hover: getLegendItemState(states.hover),
                                    selection: getLegendItemState(states.selection)
                                }
                            }
                        }))
                    },
                    _getMinSize: function() {
                        const adaptiveLayout = this._getOption("adaptiveLayout");
                        return [adaptiveLayout.width, adaptiveLayout.height]
                    }
                });
                (0, _component_registrator.default)("dxFunnel", dxFunnel);
                exports.default = dxFunnel;
                dxFunnel.addPlugin(_data_source.plugin);
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        5810:
            /*!****************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/funnel/item.js ***!
              \****************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _type = __webpack_require__( /*! ../../core/utils/type */ 11528);
                const states = ["normal", "hover", "selection", "selection"];

                function parseStyles(color, style, baseStyle) {
                    const border = style.border;
                    const baseBorder = baseStyle.border;
                    const borderVisible = (0, _type.isDefined)(border.visible) ? border.visible : baseBorder.visible;
                    const borderWidth = (0, _type.isDefined)(border.width) ? border.width : baseBorder.width;
                    return {
                        fill: color,
                        hatching: style.hatching,
                        stroke: border.color || baseBorder.color,
                        "stroke-width": borderVisible ? borderWidth : 0
                    }
                }

                function Item(widget, options) {
                    const data = options.data;
                    this.code = 0;
                    this.widget = widget;
                    this.figure = options.figure;
                    this.argument = data.argument;
                    this.value = data.value;
                    this.data = data.dataItem;
                    this.percent = options.percent;
                    this.id = options.id;
                    this.color = options.color;
                    this.states = {
                        normal: parseStyles(options.color, options.itemOptions, options.itemOptions),
                        hover: parseStyles(options.color, options.itemOptions.hoverStyle, options.itemOptions),
                        selection: parseStyles(options.color, options.itemOptions.selectionStyle, options.itemOptions)
                    }
                }
                Item.prototype = {
                    getState: function() {
                        return states[this.code]
                    },
                    getNormalStyle: function() {
                        return this.states.normal
                    },
                    setHover: function() {
                        this.hover(true)
                    },
                    hover: function(state) {
                        if (!this.widget._getOption("hoverEnabled", true) || state === this.isHovered()) {
                            return
                        }
                        this.widget._suspend();
                        state && this.widget.clearHover();
                        this.setState(1, state);
                        this.widget._eventTrigger("hoverChanged", {
                            item: this
                        });
                        this.widget._resume()
                    },
                    setState: function(code, state) {
                        if (state) {
                            this.code |= code
                        } else {
                            this.code &= ~code
                        }
                        this.widget._applyTilesAppearance()
                    },
                    select: function(state) {
                        const mode = this.widget._getOption("selectionMode", true);
                        if ("none" === mode || state === this.isSelected()) {
                            return
                        }
                        this.widget._suspend();
                        if (state && "multiple" !== mode) {
                            this.widget.clearSelection()
                        }
                        this.setState(2, state);
                        this.widget._eventTrigger("selectionChanged", {
                            item: this
                        });
                        this.widget._resume()
                    },
                    showTooltip: function(coords) {
                        this.widget._showTooltip(this.id, coords)
                    },
                    getColor: function() {
                        return this.color
                    },
                    isHovered: function() {
                        return !!(1 & this.code)
                    },
                    isSelected: function() {
                        return !!(2 & this.code)
                    }
                };
                exports.default = Item;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        18943:
            /*!*****************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/funnel/label.js ***!
              \*****************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.plugin = void 0;
                var _label = __webpack_require__( /*! ../series/points/label */ 70576);
                var _utils = __webpack_require__( /*! ../core/utils */ 28779);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576);
                var _common = __webpack_require__( /*! ../../core/utils/common */ 17781);

                function isOutsidePosition(pos) {
                    pos = (0, _utils.normalizeEnum)(pos);
                    return "outside" === pos || "inside" !== pos
                }

                function correctYForInverted(y, bBox, inverted) {
                    return inverted ? y - bBox.height : y
                }

                function getOutsideRightLabelPosition(coords, bBox, options, inverted) {
                    return {
                        x: coords[2] + options.horizontalOffset + 5,
                        y: correctYForInverted(coords[3] + options.verticalOffset, bBox, inverted)
                    }
                }

                function getOutsideLeftLabelPosition(coords, bBox, options, inverted) {
                    return {
                        x: coords[0] - bBox.width - options.horizontalOffset - 5,
                        y: correctYForInverted(coords[1] + options.verticalOffset, bBox, inverted)
                    }
                }

                function getInsideLabelPosition(coords, bBox, options) {
                    const width = coords[2] - coords[0];
                    const height = coords[7] - coords[1];
                    return {
                        x: coords[0] + width / 2 + options.horizontalOffset - bBox.width / 2,
                        y: coords[1] + options.verticalOffset + height / 2 - bBox.height / 2
                    }
                }
                exports.plugin = {
                    name: "lables",
                    init: _common.noop,
                    dispose: _common.noop,
                    extenders: {
                        _initCore: function() {
                            this._labelsGroup = this._renderer.g().attr({
                                class: this._rootClassPrefix + "-labels"
                            }).append(this._renderer.root);
                            this._labels = []
                        },
                        _applySize: function() {
                            const options = this._getOption("label");
                            const adaptiveLayout = this._getOption("adaptiveLayout");
                            const rect = this._rect;
                            let labelWidth = 0;
                            const width = rect[2] - rect[0];
                            this._labelRect = rect.slice();
                            if (!this._labels.length || !isOutsidePosition(options.position)) {
                                if ((0, _utils.normalizeEnum)("none" !== this._getOption("resolveLabelOverlapping", true))) {
                                    this._labels.forEach((l => !l.isVisible() && l.draw(true)))
                                }
                                return
                            }
                            const groupWidth = this._labels.map((function(label) {
                                label.resetEllipsis();
                                return label.getBoundingRect().width
                            })).reduce((function(max, width) {
                                return Math.max(max, width)
                            }), 0);
                            labelWidth = groupWidth + options.horizontalOffset + function(pos) {
                                pos = (0, _utils.normalizeEnum)(pos);
                                if ("outside" === pos) {
                                    return 5
                                } else if ("inside" === pos) {
                                    return 0
                                }
                                return 20
                            }(options.position);
                            if (!adaptiveLayout.keepLabels && width - labelWidth < adaptiveLayout.width) {
                                this._labels.forEach((function(label) {
                                    label.draw(false)
                                }));
                                return
                            } else {
                                if (width - labelWidth < adaptiveLayout.width) {
                                    labelWidth = width - adaptiveLayout.width;
                                    labelWidth = labelWidth > 0 ? labelWidth : 0
                                }
                                this._labels.forEach((function(label) {
                                    label.draw(true)
                                }))
                            }
                            if ("left" === options.horizontalAlignment) {
                                rect[0] += labelWidth
                            } else {
                                rect[2] -= labelWidth
                            }
                        },
                        _buildNodes: function() {
                            this._createLabels()
                        },
                        _change_TILING: function() {
                            const that = this;
                            const options = that._getOption("label");
                            let getCoords = getInsideLabelPosition;
                            const inverted = that._getOption("inverted", true);
                            let textAlignment;
                            if (isOutsidePosition(options.position)) {
                                if ("outside" === (0, _utils.normalizeEnum)(options.position)) {
                                    getCoords = "left" === options.horizontalAlignment ? getOutsideLeftLabelPosition : getOutsideRightLabelPosition
                                } else {
                                    textAlignment = this._defaultLabelTextAlignment();
                                    getCoords = "left" === options.horizontalAlignment ? function(labelRect, rect, textAlignment) {
                                        return function(coords, bBox, options, inverted) {
                                            return {
                                                x: "left" === textAlignment ? labelRect[0] : rect[0] - bBox.width - options.horizontalOffset - 20,
                                                y: correctYForInverted(coords[3] + options.verticalOffset, bBox, inverted)
                                            }
                                        }
                                    }(this._labelRect, this._rect, textAlignment) : function(labelRect, rect, textAlignment) {
                                        return function(coords, bBox, options, inverted) {
                                            return {
                                                x: "left" === textAlignment ? rect[2] + options.horizontalOffset + 20 : labelRect[2] - bBox.width,
                                                y: correctYForInverted(coords[3] + options.verticalOffset, bBox, inverted)
                                            }
                                        }
                                    }(this._labelRect, this._rect, textAlignment)
                                }
                            }
                            that._labels.forEach((function(label, index) {
                                const item = that._items[index];
                                const borderWidth = item.getNormalStyle()["stroke-width"];
                                const halfBorderWidth = inverted ? borderWidth / 2 : -borderWidth / 2;
                                const coords = halfBorderWidth ? item.coords.map((function(coord, index) {
                                    if (1 === index || 3 === index) {
                                        return coord - halfBorderWidth
                                    } else if (2 === index) {
                                        return coord - borderWidth
                                    } else if (0 === index) {
                                        return coord + borderWidth
                                    }
                                    return coord
                                })) : item.coords;
                                if (!options.showForZeroValues && 0 === item.value) {
                                    label.draw(false);
                                    return
                                }
                                if (isOutsidePosition(options.position)) {
                                    that._correctLabelWidth(label, item.coords, options)
                                }
                                const bBox = label.getBoundingRect();
                                const pos = function(pos, bBox, rect) {
                                    if (pos.x < rect[0]) {
                                        pos.x = rect[0]
                                    }
                                    if (pos.x + bBox.width > rect[2]) {
                                        pos.x = rect[2] - bBox.width
                                    }
                                    if (pos.y < rect[1]) {
                                        pos.y = rect[1]
                                    }
                                    if (pos.y + bBox.height > rect[3]) {
                                        pos.y = rect[3] - bBox.height
                                    }
                                    return pos
                                }(getCoords(coords, bBox, options, inverted), bBox, that._labelRect);
                                label.setFigureToDrawConnector(coords);
                                label.shift(pos.x, pos.y)
                            }));
                            that._resolveLabelOverlapping()
                        }
                    },
                    members: {
                        _resolveLabelOverlapping() {
                            const that = this;
                            const resolveLabelOverlapping = (0, _utils.normalizeEnum)(that._getOption("resolveLabelOverlapping", true));
                            const labels = this._getOption("inverted", true) ? that._labels.slice().reverse() : that._labels;
                            if ("hide" === resolveLabelOverlapping) {
                                labels.reduce(((height, label) => {
                                    if (label.getBoundingRect().y < height) {
                                        label.hide()
                                    } else {
                                        height = label.getBoundingRect().y + label.getBoundingRect().height
                                    }
                                    return height
                                }), 0)
                            } else if ("shift" === resolveLabelOverlapping) {
                                const maxHeight = this._labelRect[3];
                                labels.filter((label => label.isVisible())).reduce(((_ref, label, index, labels) => {
                                    let [height, emptySpace] = _ref;
                                    const bBox = label.getBoundingRect();
                                    let y = bBox.y;
                                    if (bBox.y < height) {
                                        label.shift(bBox.x, height);
                                        y = height
                                    }
                                    if (y - height > 0) {
                                        emptySpace += y - height
                                    }
                                    if (y + bBox.height > maxHeight) {
                                        if (emptySpace && emptySpace > y + bBox.height - maxHeight) {
                                            ! function(labels, requiredSpace, startPoint) {
                                                labels.reduce(((requiredSpace, label, index, labels) => {
                                                    const prevLabel = labels[index + 1];
                                                    if (requiredSpace > 0) {
                                                        const bBox = label.getBoundingRect();
                                                        const point = prevLabel ? prevLabel.getBoundingRect().y + prevLabel.getBoundingRect().height : startPoint;
                                                        const emptySpace = bBox.y - point;
                                                        const shift = Math.min(emptySpace, requiredSpace);
                                                        labels.slice(0, index + 1).forEach((label => {
                                                            const bBox = label.getBoundingRect();
                                                            label.shift(bBox.x, bBox.y - shift)
                                                        }));
                                                        requiredSpace -= shift
                                                    }
                                                    return requiredSpace
                                                }), requiredSpace)
                                            }(labels.slice(0, index).reverse(), y + bBox.height - maxHeight, that._labelRect[1]);
                                            emptySpace -= y + bBox.height - maxHeight;
                                            label.shift(bBox.x, y - (y + bBox.height - maxHeight));
                                            height = y - (y + bBox.height - maxHeight) + bBox.height
                                        } else {
                                            label.hide()
                                        }
                                    } else {
                                        height = y + bBox.height
                                    }
                                    return [height, emptySpace]
                                }), [this._labelRect[1], 0])
                            }
                        },
                        _defaultLabelTextAlignment: function() {
                            return this._getOption("rtlEnabled", true) ? "right" : "left"
                        },
                        _correctLabelWidth: function(label, item, options) {
                            const isLeftPos = "left" === options.horizontalAlignment;
                            const minX = isLeftPos ? this._labelRect[0] : item[2];
                            const maxX = isLeftPos ? item[0] : this._labelRect[2];
                            const maxWidth = maxX - minX;
                            if (label.getBoundingRect().width > maxWidth) {
                                label.fit(maxWidth)
                            }
                        },
                        _createLabels: function() {
                            const that = this;
                            const labelOptions = that._getOption("label");
                            const connectorStrategy = function(options, inverted) {
                                const isLeftPos = "left" === options.horizontalAlignment;
                                const connectorIndent = isLeftPos ? 4 : -4;
                                const verticalCorrection = inverted ? -1 : 0;

                                function getFigureCenter(figure) {
                                    return isLeftPos ? [figure[0] + 1, figure[1] + verticalCorrection] : [figure[2] - 1, figure[3] + verticalCorrection]
                                }
                                return {
                                    isLabelInside: function() {
                                        return !isOutsidePosition(options.position)
                                    },
                                    getFigureCenter: getFigureCenter,
                                    prepareLabelPoints: function(bBox) {
                                        const x = bBox.x + connectorIndent;
                                        const y = bBox.y;
                                        const x1 = x + bBox.width;
                                        return [...Array(bBox.height + 1)].map(((_, i) => [x, y + i])).concat([...Array(bBox.height + 1)].map(((_, i) => [x1, y + i])))
                                    },
                                    isHorizontal: function() {
                                        return true
                                    },
                                    findFigurePoint: function(figure) {
                                        return getFigureCenter(figure)
                                    },
                                    adjustPoints: function(points) {
                                        return points.map(Math.round)
                                    }
                                }
                            }(labelOptions, that._getOption("inverted", true));
                            this._labelsGroup.clear();
                            if (!labelOptions.visible) {
                                return
                            }
                            this._labels = that._items.map((function(item) {
                                const label = new _label.Label({
                                    renderer: that._renderer,
                                    labelsGroup: that._labelsGroup,
                                    strategy: connectorStrategy
                                });
                                label.setOptions(function(labelOptions, defaultColor, defaultTextAlignment) {
                                    const opt = labelOptions || {};
                                    const labelFont = (0, _extend.extend)({}, opt.font) || {};
                                    const labelBorder = opt.border || {};
                                    const labelConnector = opt.connector || {};
                                    const backgroundAttr = {
                                        fill: opt.backgroundColor || defaultColor,
                                        "stroke-width": labelBorder.visible ? labelBorder.width || 0 : 0,
                                        stroke: labelBorder.visible && labelBorder.width ? labelBorder.color : "none",
                                        dashStyle: labelBorder.dashStyle
                                    };
                                    const connectorAttr = {
                                        stroke: labelConnector.visible && labelConnector.width ? labelConnector.color || defaultColor : "none",
                                        "stroke-width": labelConnector.visible ? labelConnector.width || 0 : 0,
                                        opacity: labelConnector.opacity
                                    };
                                    labelFont.color = "none" === opt.backgroundColor && "#ffffff" === (0, _utils.normalizeEnum)(labelFont.color) && "inside" !== opt.position ? defaultColor : labelFont.color;
                                    return {
                                        format: opt.format,
                                        textAlignment: opt.textAlignment || (isOutsidePosition(opt.position) ? defaultTextAlignment : "center"),
                                        customizeText: opt.customizeText,
                                        attributes: {
                                            font: labelFont
                                        },
                                        visible: 0 !== labelFont.size ? opt.visible : false,
                                        showForZeroValues: opt.showForZeroValues,
                                        horizontalOffset: opt.horizontalOffset,
                                        verticalOffset: opt.verticalOffset,
                                        background: backgroundAttr,
                                        connector: connectorAttr,
                                        wordWrap: labelOptions.wordWrap,
                                        textOverflow: labelOptions.textOverflow
                                    }
                                }(labelOptions, item.color, that._defaultLabelTextAlignment()));
                                label.setData({
                                    item: item,
                                    value: item.value,
                                    percent: item.percent
                                });
                                label.draw(true);
                                return label
                            }));
                            if (this._labels.length && isOutsidePosition(labelOptions.position)) {
                                this._requestChange(["LAYOUT"])
                            }
                        }
                    },
                    customize: function(constructor) {
                        constructor.prototype._proxyData.push((function(x, y) {
                            const that = this;
                            let data;
                            that._labels.forEach((function(label, index) {
                                const rect = label.getBoundingRect();
                                if (x >= rect.x && x <= rect.x + rect.width && y >= rect.y && y <= rect.y + rect.height) {
                                    const pos = isOutsidePosition(that._getOption("label").position) ? "outside" : "inside";
                                    data = {
                                        id: index,
                                        type: pos + "-label"
                                    };
                                    return true
                                }
                            }));
                            return data
                        }));
                        ["label", "resolveLabelOverlapping"].forEach((optionName => {
                            constructor.addChange({
                                code: optionName.toUpperCase(),
                                handler: function() {
                                    this._createLabels();
                                    this._requestChange(["LAYOUT"])
                                },
                                isThemeDependent: true,
                                isOptionChange: true,
                                option: optionName
                            })
                        }))
                    },
                    fontFields: ["label.font"]
                }
            },
        66194:
            /*!*************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/funnel/tiling.funnel.js ***!
              \*************************************************************************/
            function(module, exports) {
                exports.default = void 0;
                exports.default = {
                    getFigures: function(data) {
                        const height = 1 / data.length;
                        return data.map((function(value, index, array) {
                            const nextValue = array[index + 1] ? array[index + 1] : array[index];
                            return [.5 - value / 2, height * index, .5 + value / 2, height * index, .5 + nextValue / 2, height * (index + 1), .5 - nextValue / 2, height * (index + 1)]
                        }))
                    },
                    normalizeValues: function(items) {
                        const max = items.reduce((function(max, item) {
                            return Math.max(item.value, max)
                        }), items[0] && items[0].value || 0);
                        return items.map((function(item) {
                            return item.value / max
                        }))
                    }
                };
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        43858:
            /*!******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/funnel/tiling.js ***!
              \******************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.addAlgorithm = function(name, callback, setDefault) {
                    algorithms[name] = callback;
                    if (setDefault) {
                        defaultAlgorithm = algorithms[name]
                    }
                };
                exports.getAlgorithm = function(name) {
                    return algorithms[(0, _utils.normalizeEnum)(name)] || defaultAlgorithm
                };
                var _utils = __webpack_require__( /*! ../core/utils */ 28779);
                const algorithms = {};
                let defaultAlgorithm
            },
        59327:
            /*!**************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/funnel/tiling.pyramid.js ***!
              \**************************************************************************/
            function(module, exports) {
                exports.default = void 0;
                exports.default = {
                    getFigures: function(data, neckWidth, neckHeight) {
                        let height = 0;
                        let y = 0;
                        let x = 0;
                        let offsetX = 0;
                        const halfNeckWidth = neckWidth / 2;
                        const offsetFromCorner = .5 - halfNeckWidth;
                        const funnelHeight = 1 - neckHeight;
                        const neckLeftCorner = .5 - halfNeckWidth;
                        const neckRightCorner = .5 + halfNeckWidth;
                        return data.map((function(value) {
                            x = offsetX;
                            y = height;
                            height += value;
                            offsetX = offsetFromCorner * height / funnelHeight;
                            if (y <= funnelHeight && height <= funnelHeight) {
                                return [x, y, 1 - x, y, 1 - offsetX, height, 0 + offsetX, height]
                            } else if (y <= funnelHeight && height > funnelHeight) {
                                return [x, y, 1 - x, y, neckRightCorner, funnelHeight, neckRightCorner, height, neckLeftCorner, height, neckLeftCorner, funnelHeight]
                            } else {
                                return [neckLeftCorner, y, neckRightCorner, y, neckRightCorner, height, neckLeftCorner, height]
                            }
                        }))
                    },
                    normalizeValues: function(items) {
                        const sum = items.reduce((function(sum, item) {
                            return sum + item.value
                        }), 0);
                        return items.map((function(item) {
                            return item.value / sum
                        }))
                    }
                };
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        13853:
            /*!*******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/funnel/tooltip.js ***!
              \*******************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.plugin = void 0;
                var _common = __webpack_require__( /*! ../../core/utils/common */ 17781);
                var _tooltip = __webpack_require__( /*! ../core/tooltip */ 23277);

                function getCoords(coords, figureCoords, renderer) {
                    const offset = renderer.getRootOffset();
                    return coords || figureCoords && [(figureCoords[0] + figureCoords[2]) / 2 + offset.left, (figureCoords[1] + figureCoords[5]) / 2 + offset.top] || [-1e3, -1e3]
                }
                exports.plugin = {
                    name: "funnel-tooltip",
                    init: _common.noop,
                    dispose: _common.noop,
                    extenders: {
                        _buildNodes: function() {
                            this.hideTooltip()
                        },
                        _change_TILING: function() {
                            if (this._tooltipIndex >= 0) {
                                this._moveTooltip(this._items[this._tooltipIndex])
                            }
                        }
                    },
                    members: {
                        hideTooltip: function() {
                            if (this._tooltipIndex >= 0) {
                                this._tooltipIndex = -1;
                                this._tooltip.hide()
                            }
                        },
                        _moveTooltip: function(item, coords) {
                            const xy = getCoords(coords, item.coords, this._renderer);
                            this._tooltip.move(xy[0], xy[1], 0)
                        },
                        _showTooltip: function(index, coords) {
                            const that = this;
                            const tooltip = that._tooltip;
                            const item = that._items[index];
                            if (that._tooltipIndex === index) {
                                that._moveTooltip(item, coords);
                                return
                            }
                            const callback = result => {
                                if (void 0 === result) {
                                    return
                                }
                                if (!result) {
                                    tooltip.hide()
                                }
                                that._tooltipIndex = result ? index : -1
                            };
                            const xy = getCoords(coords, item.coords, this._renderer);
                            callback(tooltip.show({
                                value: item.value,
                                valueText: tooltip.formatValue(item.value),
                                percentText: tooltip.formatValue(item.percent, "percent"),
                                percent: item.percent,
                                item: item
                            }, {
                                x: xy[0],
                                y: xy[1],
                                offset: 0
                            }, {
                                item: item
                            }, void 0, callback))
                        }
                    },
                    customize: function(constructor) {
                        constructor.addPlugin(_tooltip.plugin)
                    }
                }
            },
        11805:
            /*!*******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/funnel/tracker.js ***!
              \*******************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.plugin = void 0;
                var _funnel = (e = __webpack_require__( /*! ./funnel */ 52725), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                var _tracker = __webpack_require__( /*! ../components/tracker */ 16197);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 11528);
                let dataKeyModifier = 0;
                const proto = _funnel.default.prototype;
                proto._eventsMap.onItemClick = {
                    name: "itemClick"
                };
                proto._eventsMap.onLegendClick = {
                    name: "legendClick"
                };
                exports.plugin = {
                    name: "tracker",
                    init: function() {
                        const that = this;
                        const dataKey = "__funnel_data_" + dataKeyModifier++;
                        const getProxyData = function(e) {
                            const rootOffset = that._renderer.getRootOffset();
                            const x = Math.floor(e.pageX - rootOffset.left);
                            const y = Math.floor(e.pageY - rootOffset.top);
                            return that._hitTestTargets(x, y)
                        };
                        that._tracker = new _tracker.Tracker({
                            widget: that,
                            root: that._renderer.root,
                            getData: function(e, tooltipData) {
                                const target = e.target;
                                const data = target[dataKey];
                                if ((0, _type.isDefined)(data)) {
                                    return data
                                }
                                const proxyData = getProxyData(e);
                                if (tooltipData && proxyData && "inside-label" !== proxyData.type) {
                                    return
                                }
                                return proxyData && proxyData.id
                            },
                            getNode: function(index) {
                                return that._items[index]
                            },
                            click: function(e) {
                                const proxyData = getProxyData(e.event);
                                const dataType = proxyData && proxyData.type;
                                const event = "legend" === dataType ? "legendClick" : "itemClick";
                                that._eventTrigger(event, {
                                    item: e.node,
                                    event: e.event
                                })
                            }
                        });
                        this._dataKey = dataKey
                    },
                    dispose: function() {
                        this._tracker.dispose()
                    },
                    extenders: {
                        _change_TILING: function() {
                            const dataKey = this._dataKey;
                            this._items.forEach((function(item, index) {
                                item.element.data(dataKey, index)
                            }))
                        }
                    }
                }
            },
        15060:
            /*!*********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/gauges/bar_gauge.js ***!
              \*********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.dxBarGauge = void 0;
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 92848));
                var _object = __webpack_require__( /*! ../../core/utils/object */ 22263);
                var _common = __webpack_require__( /*! ../../core/utils/common */ 17781);
                var _m_base_chart = __webpack_require__( /*! ../../__internal/viz/chart_components/m_base_chart */ 9410);
                var _extend2 = __webpack_require__( /*! ../../core/utils/extend */ 52576);
                var _utils = __webpack_require__( /*! ../core/utils */ 28779);
                var _base_gauge = __webpack_require__( /*! ./base_gauge */ 5600);
                var _circular_gauge = _interopRequireDefault(__webpack_require__( /*! ./circular_gauge */ 59248));
                var _legend = __webpack_require__( /*! ../components/legend */ 67056);
                var _center_template = __webpack_require__( /*! ../core/center_template */ 94618);
                var _math = __webpack_require__( /*! ../../core/utils/math */ 50254);

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const PI_DIV_180 = Math.PI / 180;
                const _abs = Math.abs;
                const _round = Math.round;
                const _floor = Math.floor;
                const _min = Math.min;
                const _max = Math.max;
                const _getSampleText = _base_gauge.getSampleText;
                const _formatValue = _base_gauge.formatValue;
                const _compareArrays = _base_gauge.compareArrays;
                const _isArray = Array.isArray;
                const _convertAngleToRendererSpace = _utils.convertAngleToRendererSpace;
                const _getCosAndSin = _utils.getCosAndSin;
                const _patchFontOptions = _utils.patchFontOptions;
                const _Number = Number;
                const _isFinite = isFinite;
                const _noop = _common.noop;
                const _extend = _extend2.extend;
                let BarWrapper;
                const dxBarGauge = exports.dxBarGauge = _base_gauge.BaseGauge.inherit({
                    _rootClass: "dxbg-bar-gauge",
                    _themeSection: "barGauge",
                    _fontFields: ["label.font", "legend.font", "legend.title.font", "legend.title.subtitle.font"],
                    _initCore: function() {
                        const that = this;
                        that.callBase.apply(that, arguments);
                        that._barsGroup = that._renderer.g().attr({
                            class: "dxbg-bars"
                        }).linkOn(that._renderer.root, "bars");
                        that._values = [];
                        that._context = {
                            renderer: that._renderer,
                            translator: that._translator,
                            tracker: that._tracker,
                            group: that._barsGroup
                        };
                        that._animateStep = function(pos) {
                            const bars = that._bars;
                            let i;
                            let ii;
                            for (i = 0, ii = bars.length; i < ii; ++i) {
                                bars[i].animate(pos)
                            }
                        };
                        that._animateComplete = function() {
                            that._bars.forEach((bar => bar.endAnimation()));
                            that._checkOverlap()
                        }
                    },
                    _disposeCore: function() {
                        this._barsGroup.linkOff();
                        this._barsGroup = this._values = this._context = this._animateStep = this._animateComplete = null;
                        this.callBase.apply(this, arguments)
                    },
                    _setupDomainCore: function() {
                        let startValue = this.option("startValue");
                        let endValue = this.option("endValue");
                        _isFinite(startValue) || (startValue = 0);
                        _isFinite(endValue) || (endValue = 100);
                        this._translator.setDomain(startValue, endValue);
                        this._baseValue = this._translator.adjust(this.option("baseValue"));
                        _isFinite(this._baseValue) || (this._baseValue = startValue < endValue ? startValue : endValue)
                    },
                    _getDefaultSize: function() {
                        return {
                            width: 300,
                            height: 300
                        }
                    },
                    _setupCodomain: _circular_gauge.default.prototype._setupCodomain,
                    _getApproximateScreenRange: function() {
                        const sides = this._area.sides;
                        const width = this._canvas.width / (sides.right - sides.left);
                        const height = this._canvas.height / (sides.down - sides.up);
                        const r = width < height ? width : height;
                        return -this._translator.getCodomainRange() * r * PI_DIV_180
                    },
                    _setupAnimationSettings: function() {
                        const that = this;
                        that.callBase.apply(that, arguments);
                        if (that._animationSettings) {
                            that._animationSettings.step = that._animateStep;
                            that._animationSettings.complete = that._animateComplete
                        }
                    },
                    _cleanContent: function() {
                        this._barsGroup.linkRemove();
                        this._animationSettings && this._barsGroup.stopAnimation();
                        this._barsGroup.clear()
                    },
                    _renderContent: function() {
                        const that = this;
                        let labelOptions = that.option("label");
                        const context = that._context;
                        that._barsGroup.linkAppend();
                        context.textEnabled = void 0 === labelOptions || labelOptions && (!("visible" in labelOptions) || labelOptions.visible);
                        if (context.textEnabled) {
                            var _labelOptions, _labelOptions2;
                            context.fontStyles = _patchFontOptions(_extend({}, that._themeManager.theme().label.font, null === (_labelOptions = labelOptions) || void 0 === _labelOptions ? void 0 : _labelOptions.font, {
                                color: (null === (_labelOptions2 = labelOptions) || void 0 === _labelOptions2 || null === (_labelOptions2 = _labelOptions2.font) || void 0 === _labelOptions2 ? void 0 : _labelOptions2.color) || null
                            }));
                            labelOptions = _extend(true, {}, that._themeManager.theme().label, labelOptions);
                            context.formatOptions = {
                                format: void 0 !== labelOptions.format ? labelOptions.format : that._defaultFormatOptions,
                                customizeText: labelOptions.customizeText
                            };
                            context.textOptions = {
                                align: "center"
                            };
                            that._textIndent = labelOptions.indent > 0 ? _Number(labelOptions.indent) : 0;
                            context.lineWidth = labelOptions.connectorWidth > 0 ? _Number(labelOptions.connectorWidth) : 0;
                            context.lineColor = labelOptions.connectorColor || null;
                            const text = that._renderer.text(_getSampleText(that._translator, context.formatOptions), 0, 0).attr(context.textOptions).css(context.fontStyles).append(that._barsGroup);
                            const bBox = text.getBBox();
                            text.remove();
                            context.textY = bBox.y;
                            context.textWidth = bBox.width;
                            context.textHeight = bBox.height
                        }
                        _circular_gauge.default.prototype._applyMainLayout.call(that);
                        that._renderBars()
                    },
                    _measureMainElements: function() {
                        const result = {
                            maxRadius: this._area.radius
                        };
                        if (this._context.textEnabled) {
                            result.horizontalMargin = this._context.textWidth;
                            result.verticalMargin = this._context.textHeight;
                            result.inverseHorizontalMargin = this._context.textWidth / 2;
                            result.inverseVerticalMargin = this._context.textHeight / 2
                        }
                        return result
                    },
                    _renderBars: function() {
                        const that = this;
                        const options = _extend({}, that._themeManager.theme(), that.option());
                        let radius;
                        const area = that._area;
                        const relativeInnerRadius = options.relativeInnerRadius > 0 && options.relativeInnerRadius < 1 ? _Number(options.relativeInnerRadius) : .1;
                        radius = area.radius;
                        if (that._context.textEnabled) {
                            that._textIndent = _round(_min(that._textIndent, radius / 2));
                            radius -= that._textIndent
                        }
                        that._outerRadius = _floor(radius);
                        that._innerRadius = _floor(radius * relativeInnerRadius);
                        that._barSpacing = options.barSpacing > 0 ? _Number(options.barSpacing) : 0;
                        _extend(that._context, {
                            backgroundColor: options.backgroundColor,
                            x: area.x,
                            y: area.y,
                            startAngle: area.startCoord,
                            endAngle: area.endCoord,
                            baseAngle: that._translator.translate(that._baseValue)
                        });
                        that._arrangeBars()
                    },
                    _arrangeBars: function() {
                        const that = this;
                        let radius = that._outerRadius - that._innerRadius;
                        const context = that._context;
                        let i;
                        const count = that._bars.length;
                        that._beginValueChanging();
                        context.barSize = count > 0 ? _max((radius - (count - 1) * that._barSpacing) / count, 1) : 0;
                        const spacing = count > 1 ? _max(_min((radius - count * context.barSize) / (count - 1), that._barSpacing), 0) : 0;
                        const _count = _min(_floor((radius + spacing) / context.barSize), count);
                        that._setBarsCount(count);
                        radius = that._outerRadius;
                        context.textRadius = radius;
                        context.textIndent = that._textIndent;
                        that._palette.reset();
                        const unitOffset = context.barSize + spacing;
                        const colors = that._palette.generateColors(_count);
                        for (i = 0; i < _count; ++i, radius -= unitOffset) {
                            that._bars[i].arrange({
                                radius: radius,
                                color: colors[i]
                            })
                        }
                        for (let i = _count; i < count; i++) {
                            that._bars[i].hide()
                        }
                        if (that._animationSettings && !that._noAnimation) {
                            that._animateBars()
                        } else {
                            that._updateBars()
                        }
                        that._endValueChanging()
                    },
                    _setBarsCount: function() {
                        const that = this;
                        if (that._bars.length > 0) {
                            if (that._dummyBackground) {
                                that._dummyBackground.dispose();
                                that._dummyBackground = null
                            }
                        } else {
                            if (!that._dummyBackground) {
                                that._dummyBackground = that._renderer.arc().attr({
                                    "stroke-linejoin": "round"
                                })
                            }
                            that._dummyBackground.attr({
                                x: that._context.x,
                                y: that._context.y,
                                outerRadius: that._outerRadius,
                                innerRadius: that._innerRadius,
                                startAngle: that._context.endAngle,
                                endAngle: that._context.startAngle,
                                fill: that._context.backgroundColor
                            }).append(that._barsGroup)
                        }
                    },
                    _getCenter: function() {
                        return {
                            x: this._context.x,
                            y: this._context.y
                        }
                    },
                    _updateBars: function() {
                        this._bars.forEach((bar => bar.applyValue()));
                        this._checkOverlap()
                    },
                    _checkOverlap: function() {
                        const that = this;
                        const overlapStrategy = (0, _utils.normalizeEnum)(that._getOption("resolveLabelOverlapping", true));

                        function shiftFunction(box, length) {
                            return (0, _utils.getVerticallyShiftedAngularCoords)(box, -length, that._context)
                        }
                        if ("none" === overlapStrategy) {
                            return
                        }
                        if ("shift" === overlapStrategy) {
                            const newBars = that._dividePoints();
                            _m_base_chart.overlapping.resolveLabelOverlappingInOneDirection(newBars.left, that._canvas, false, false, shiftFunction);
                            _m_base_chart.overlapping.resolveLabelOverlappingInOneDirection(newBars.right, that._canvas, false, false, shiftFunction);
                            that._clearLabelsCrossTitle();
                            that._drawConnector()
                        } else {
                            that._clearOverlappingLabels()
                        }
                    },
                    _drawConnector() {
                        const that = this;
                        const bars = that._bars;
                        const {
                            connectorWidth: connectorWidth
                        } = that._getOption("label");
                        bars.forEach((bar => {
                            if (!bar._isLabelShifted) {
                                return
                            }
                            const x = bar._bar.attr("x");
                            const y = bar._bar.attr("y");
                            const innerRadius = bar._bar.attr("innerRadius");
                            const outerRadius = bar._bar.attr("outerRadius");
                            const startAngle = bar._bar.attr("startAngle");
                            const endAngle = bar._bar.attr("endAngle");
                            const coordStart = getStartCoordsArc.apply(null, (0, _utils.normalizeArcParams)(x, y, innerRadius, outerRadius, startAngle, endAngle));
                            const {
                                cos: cos,
                                sin: sin
                            } = _getCosAndSin(bar._angle);
                            const xStart = coordStart.x - sin * connectorWidth / 2 - cos;
                            const yStart = coordStart.y - cos * connectorWidth / 2 + sin;
                            const box = bar._text.getBBox();
                            const lastCoords = bar._text._lastCoords;
                            const indentFromLabel = that._context.textWidth / 2;
                            const originalXLabelCoord = box.x + box.width / 2 + lastCoords.x;
                            const originalPoints = [xStart, yStart, originalXLabelCoord, box.y + lastCoords.y];
                            if (bar._angle > 90) {
                                originalPoints[2] += indentFromLabel
                            } else {
                                originalPoints[2] -= indentFromLabel
                            }
                            if (bar._angle <= 180 && bar._angle > 0) {
                                originalPoints[3] += box.height
                            }
                            if (connectorWidth % 2) {
                                const xDeviation = -sin / 2;
                                const yDeviation = -cos / 2;
                                if (bar._angle > 180) {
                                    originalPoints[0] -= xDeviation;
                                    originalPoints[1] -= yDeviation
                                } else if (bar._angle > 0 && bar._angle <= 90) {
                                    originalPoints[0] += xDeviation;
                                    originalPoints[1] += yDeviation
                                }
                            }
                            const points = originalPoints.map((coordinate => (0, _math.roundFloatPart)(coordinate, 4)));
                            bar._line.attr({
                                points: points
                            });
                            bar._line.rotate(0);
                            bar._isLabelShifted = false
                        }))
                    },
                    _dividePoints() {
                        const bars = this._bars;
                        return bars.reduce((function(stackBars, bar) {
                            const angle = (0, _utils.normalizeAngle)(bar._angle);
                            const isRightSide = angle <= 90 || angle >= 270;
                            bar._text._lastCoords = {
                                x: 0,
                                y: 0
                            };
                            const barToExtend = isRightSide ? stackBars.right : stackBars.left;
                            barToExtend.push({
                                series: {
                                    isStackedSeries: () => false,
                                    isFullStackedSeries: () => false
                                },
                                getLabels: () => [{
                                    isVisible: () => true,
                                    getBoundingRect: () => {
                                        const {
                                            height: height,
                                            width: width,
                                            x: x,
                                            y: y
                                        } = bar._text.getBBox();
                                        const lastCoords = bar._text._lastCoords;
                                        return {
                                            x: x + lastCoords.x,
                                            y: y + lastCoords.y,
                                            width: width,
                                            height: height
                                        }
                                    },
                                    shift: (x, y) => {
                                        const box = bar._text.getBBox();
                                        bar._text._lastCoords = {
                                            x: x - box.x,
                                            y: y - box.y
                                        };
                                        bar._text.attr({
                                            translateX: x - box.x,
                                            translateY: y - box.y
                                        });
                                        bar._isLabelShifted = true
                                    },
                                    draw: () => bar.hideLabel(),
                                    getData: () => ({
                                        value: bar.getValue()
                                    }),
                                    hideInsideLabel: () => false
                                }]
                            });
                            return stackBars
                        }), {
                            left: [],
                            right: []
                        })
                    },
                    _clearOverlappingLabels() {
                        const bars = this._bars;
                        let currentIndex = 0;
                        let nextIndex = 1;
                        const sortedBars = bars.concat().sort(((a, b) => a.getValue() - b.getValue()));
                        while (currentIndex < sortedBars.length && nextIndex < sortedBars.length) {
                            const current = sortedBars[currentIndex];
                            const next = sortedBars[nextIndex];
                            if (current.checkIntersect(next)) {
                                next.hideLabel();
                                nextIndex++
                            } else {
                                currentIndex = nextIndex;
                                nextIndex = currentIndex + 1
                            }
                        }
                    },
                    _clearLabelsCrossTitle() {
                        const bars = this._bars;
                        const titleCoords = this._title.getLayoutOptions() || {
                            x: 0,
                            y: 0,
                            height: 0,
                            width: 0
                        };
                        const minY = titleCoords.y + titleCoords.height;
                        bars.forEach((bar => {
                            const box = bar._text.getBBox();
                            const lastCoords = bar._text._lastCoords;
                            if (minY > box.y + lastCoords.y) {
                                bar.hideLabel()
                            }
                        }))
                    },
                    _animateBars: function() {
                        const that = this;
                        let i;
                        const ii = that._bars.length;
                        if (ii > 0) {
                            for (i = 0; i < ii; ++i) {
                                that._bars[i].beginAnimation()
                            }
                            that._barsGroup.animate({
                                _: 0
                            }, that._animationSettings)
                        }
                    },
                    _buildNodes() {
                        const that = this;
                        const options = that._options.silent();
                        that._palette = that._themeManager.createPalette(options.palette, {
                            useHighlight: true,
                            extensionMode: options.paletteExtensionMode
                        });
                        that._palette.reset();
                        that._bars = that._bars || [];
                        that._animationSettings && that._barsGroup.stopAnimation();
                        const barValues = that._values.filter(_isFinite);
                        const count = barValues.length;
                        if (that._bars.length > count) {
                            const ii = that._bars.length;
                            for (let i = count; i < ii; ++i) {
                                that._bars[i].dispose()
                            }
                            that._bars.splice(count, ii - count)
                        } else if (that._bars.length < count) {
                            for (let i = that._bars.length; i < count; ++i) {
                                that._bars.push(new BarWrapper(i, that._context))
                            }
                        }
                        that._bars.forEach(((bar, index) => {
                            bar.update({
                                color: that._palette.getNextColor(count),
                                value: barValues[index]
                            })
                        }))
                    },
                    _updateValues: function(values) {
                        const that = this;
                        const list = _isArray(values) && values || _isFinite(values) && [values] || [];
                        let i;
                        const ii = list.length;
                        let value;
                        that._values.length = ii;
                        for (i = 0; i < ii; ++i) {
                            value = list[i];
                            that._values[i] = _Number(_isFinite(value) ? value : that._values[i])
                        }
                        if (!that._resizing) {
                            if (!_compareArrays(that._values, that.option("values"))) {
                                that.option("values", that._values.slice())
                            }
                        }
                        this._change(["NODES"])
                    },
                    values: function(arg) {
                        if (void 0 !== arg) {
                            this._updateValues(arg);
                            return this
                        } else {
                            return this._values.slice(0)
                        }
                    },
                    _optionChangesMap: {
                        backgroundColor: "MOSTLY_TOTAL",
                        relativeInnerRadius: "MOSTLY_TOTAL",
                        barSpacing: "MOSTLY_TOTAL",
                        label: "MOSTLY_TOTAL",
                        resolveLabelOverlapping: "MOSTLY_TOTAL",
                        palette: "MOSTLY_TOTAL",
                        paletteExtensionMode: "MOSTLY_TOTAL",
                        values: "VALUES"
                    },
                    _change_VALUES: function() {
                        this._updateValues(this.option("values"))
                    },
                    _factory: (0, _object.clone)(_base_gauge.BaseGauge.prototype._factory),
                    _optionChangesOrder: ["VALUES", "NODES"],
                    _initialChanges: ["VALUES"],
                    _getChangesRequireCoreUpdate: function() {
                        return [...this.callBase(), "LEGEND"]
                    },
                    _change_NODES() {
                        this._buildNodes()
                    },
                    _change_MOSTLY_TOTAL: function() {
                        this._change(["NODES"]);
                        this.callBase()
                    },
                    _proxyData: [],
                    _getLegendData() {
                        const that = this;
                        const formatOptions = {};
                        const options = that._options.silent();
                        const labelFormatOptions = (options.label || {}).format;
                        const legendFormatOptions = (options.legend || {}).itemTextFormat;
                        if (legendFormatOptions) {
                            formatOptions.format = legendFormatOptions
                        } else {
                            formatOptions.format = labelFormatOptions || that._defaultFormatOptions
                        }
                        return (this._bars || []).map((b => ({
                            id: b.index,
                            item: {
                                value: b.getValue(),
                                color: b.getColor(),
                                index: b.index
                            },
                            text: _formatValue(b.getValue(), formatOptions),
                            visible: true,
                            states: {
                                normal: {
                                    fill: b.getColor()
                                }
                            }
                        })))
                    }
                });
                BarWrapper = function(index, context) {
                    this._context = context;
                    this._tracker = context.renderer.arc().attr({
                        "stroke-linejoin": "round"
                    });
                    this.index = index
                };
                _extend(BarWrapper.prototype, {
                    dispose: function() {
                        const that = this;
                        that._background.dispose();
                        that._bar.dispose();
                        if (that._context.textEnabled) {
                            that._line.dispose();
                            that._text.dispose()
                        }
                        that._context.tracker.detach(that._tracker);
                        that._context = that._settings = that._background = that._bar = that._line = that._text = that._tracker = null;
                        return that
                    },
                    arrange: function(options) {
                        const that = this;
                        const context = that._context;
                        this._visible = true;
                        context.tracker.attach(that._tracker, that, {
                            index: that.index
                        });
                        that._background = context.renderer.arc().attr({
                            "stroke-linejoin": "round",
                            fill: context.backgroundColor
                        }).append(context.group);
                        that._settings = that._settings || {
                            x: context.x,
                            y: context.y,
                            startAngle: context.baseAngle,
                            endAngle: context.baseAngle
                        };
                        that._bar = context.renderer.arc().attr(_extend({
                            "stroke-linejoin": "round"
                        }, that._settings)).append(context.group);
                        if (context.textEnabled) {
                            that._line = context.renderer.path([], "line").attr({
                                "stroke-width": context.lineWidth
                            }).append(context.group);
                            that._text = context.renderer.text().css(context.fontStyles).attr(context.textOptions).append(context.group)
                        }
                        that._angle = isFinite(that._angle) ? that._angle : context.baseAngle;
                        that._settings.outerRadius = options.radius;
                        that._settings.innerRadius = options.radius - context.barSize;
                        that._settings.x = context.x;
                        that._settings.y = context.y;
                        that._background.attr(_extend({}, that._settings, {
                            startAngle: context.endAngle,
                            endAngle: context.startAngle,
                            fill: that._context.backgroundColor
                        }));
                        that._bar.attr({
                            x: context.x,
                            y: context.y,
                            outerRadius: that._settings.outerRadius,
                            innerRadius: that._settings.innerRadius,
                            fill: that._color
                        });
                        that._tracker.attr(that._settings);
                        if (context.textEnabled) {
                            that._line.attr({
                                points: [context.x, context.y - that._settings.innerRadius, context.x, context.y - context.textRadius - context.textIndent],
                                stroke: context.lineColor || that._color
                            }).sharp();
                            that._text.css({
                                fill: context.fontStyles.fill || that._color
                            })
                        }
                        return that
                    },
                    getTooltipParameters: function() {
                        const cosSin = _getCosAndSin((this._angle + this._context.baseAngle) / 2);
                        return {
                            x: _round(this._context.x + (this._settings.outerRadius + this._settings.innerRadius) / 2 * cosSin.cos),
                            y: _round(this._context.y - (this._settings.outerRadius + this._settings.innerRadius) / 2 * cosSin.sin),
                            offset: 0,
                            color: this._color,
                            value: this._value
                        }
                    },
                    setAngle: function(angle) {
                        const that = this;
                        const context = that._context;
                        const settings = that._settings;
                        let cosSin;
                        that._angle = angle;
                        setAngles(settings, context.baseAngle, angle);
                        that._bar.attr(settings);
                        that._tracker.attr(settings);
                        if (context.textEnabled) {
                            cosSin = _getCosAndSin(angle);
                            const indent = context.textIndent;
                            const radius = context.textRadius + indent;
                            let x = context.x + radius * cosSin.cos;
                            let y = context.y - radius * cosSin.sin;
                            const halfWidth = .5 * context.textWidth;
                            const textHeight = context.textHeight;
                            const textY = context.textY;
                            if (_abs(x - context.x) > indent) {
                                x += x < context.x ? -halfWidth : halfWidth
                            }
                            if (_abs(y - context.y) <= indent) {
                                y -= textY + .5 * textHeight
                            } else {
                                y -= y < context.y ? textY + textHeight : textY
                            }
                            const text = _formatValue(that._value, context.formatOptions, {
                                index: that.index
                            });
                            const visibility = "" === text ? "hidden" : null;
                            that._text.attr({
                                text: text,
                                x: x,
                                y: y,
                                visibility: visibility
                            });
                            that._line.attr({
                                visibility: visibility
                            });
                            that._line.rotate(_convertAngleToRendererSpace(angle), context.x, context.y)
                        }
                        return that
                    },
                    hideLabel: function() {
                        this._text.attr({
                            visibility: "hidden"
                        });
                        this._line.attr({
                            visibility: "hidden"
                        })
                    },
                    checkIntersect: function(anotherBar) {
                        const coords = this.calculateLabelCoords();
                        const anotherCoords = anotherBar.calculateLabelCoords();
                        if (!coords || !anotherCoords) {
                            return false
                        }
                        const width = Math.max(0, Math.min(coords.bottomRight.x, anotherCoords.bottomRight.x) - Math.max(coords.topLeft.x, anotherCoords.topLeft.x));
                        const height = Math.max(0, Math.min(coords.bottomRight.y, anotherCoords.bottomRight.y) - Math.max(coords.topLeft.y, anotherCoords.topLeft.y));
                        return width * height !== 0
                    },
                    calculateLabelCoords: function() {
                        if (!this._text) {
                            return
                        }
                        const box = this._text.getBBox();
                        return {
                            topLeft: {
                                x: box.x,
                                y: box.y
                            },
                            bottomRight: {
                                x: box.x + box.width,
                                y: box.y + box.height
                            }
                        }
                    },
                    _processValue: function(value) {
                        return this._context.translator.translate(this._context.translator.adjust(value))
                    },
                    applyValue() {
                        if (!this._visible) {
                            return this
                        }
                        return this.setAngle(this._processValue(this.getValue()))
                    },
                    update(_ref) {
                        let {
                            color: color,
                            value: value
                        } = _ref;
                        this._color = color;
                        this._value = value
                    },
                    hide() {
                        this._visible = false
                    },
                    getColor() {
                        return this._color
                    },
                    getValue() {
                        return this._value
                    },
                    beginAnimation: function() {
                        if (!this._visible) {
                            return this
                        }
                        const that = this;
                        const angle = this._processValue(this.getValue());
                        if (!compareFloats(that._angle, angle)) {
                            that._start = that._angle;
                            that._delta = angle - that._angle;
                            that._tracker.attr({
                                visibility: "hidden"
                            });
                            if (that._context.textEnabled) {
                                that._line.attr({
                                    visibility: "hidden"
                                });
                                that._text.attr({
                                    visibility: "hidden"
                                })
                            }
                        } else {
                            that.animate = _noop;
                            that.setAngle(that._angle)
                        }
                    },
                    animate: function(pos) {
                        if (!this._visible) {
                            return this
                        }
                        this._angle = this._start + this._delta * pos;
                        setAngles(this._settings, this._context.baseAngle, this._angle);
                        this._bar.attr(this._settings)
                    },
                    endAnimation: function() {
                        const that = this;
                        if (void 0 !== that._delta) {
                            if (compareFloats(that._angle, that._start + that._delta)) {
                                that._tracker.attr({
                                    visibility: null
                                });
                                that.setAngle(that._angle)
                            }
                        } else {
                            delete that.animate
                        }
                        delete that._start;
                        delete that._delta
                    }
                });

                function setAngles(target, angle1, angle2) {
                    target.startAngle = angle1 < angle2 ? angle1 : angle2;
                    target.endAngle = angle1 < angle2 ? angle2 : angle1
                }

                function compareFloats(value1, value2) {
                    return _abs(value1 - value2) < 1e-4
                }

                function getStartCoordsArc(x, y, innerR, outerR, startAngleCos, startAngleSin) {
                    return {
                        x: (x + outerR * startAngleCos).toFixed(5),
                        y: (y - outerR * startAngleSin).toFixed(5)
                    }
                }(0, _component_registrator.default)("dxBarGauge", dxBarGauge);
                dxBarGauge.addPlugin(_legend.plugin);
                dxBarGauge.addPlugin(_center_template.plugins.gauge)
            },
        5600:
            /*!**********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/gauges/base_gauge.js ***!
              \**********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.BaseGauge = void 0;
                exports.compareArrays = function(array1, array2) {
                    return array1 && array2 && array1.length === array2.length && function(array1, array2) {
                        let i;
                        const ii = array1.length;
                        let array1ValueIsNaN;
                        let array2ValueIsNaN;
                        for (i = 0; i < ii; ++i) {
                            array1ValueIsNaN = array1[i] !== array1[i];
                            array2ValueIsNaN = array2[i] !== array2[i];
                            if (array1ValueIsNaN && array2ValueIsNaN) {
                                continue
                            }
                            if (array1[i] !== array2[i]) {
                                return false
                            }
                        }
                        return true
                    }(array1, array2)
                };
                exports.getSampleText = exports.formatValue = void 0;
                var _utils = __webpack_require__( /*! ../core/utils */ 28779);
                var _extend2 = __webpack_require__( /*! ../../core/utils/extend */ 52576);
                var _translator1d = __webpack_require__( /*! ../translators/translator1d */ 14393);
                var _m_base_widget = _interopRequireDefault(__webpack_require__( /*! ../../__internal/viz/core/m_base_widget */ 34506));
                var _theme_manager = _interopRequireDefault(__webpack_require__( /*! ./theme_manager */ 20056));
                var _tracker = _interopRequireDefault(__webpack_require__( /*! ./tracker */ 72973));
                var _format_helper = _interopRequireDefault(__webpack_require__( /*! ../../format_helper */ 2082));
                var _export = __webpack_require__( /*! ../core/export */ 74754);
                var _title = __webpack_require__( /*! ../core/title */ 16216);
                var _tooltip = __webpack_require__( /*! ../core/tooltip */ 23277);
                var _loading_indicator = __webpack_require__( /*! ../core/loading_indicator */ 92528);
                var _common = __webpack_require__( /*! ../../core/utils/common */ 17781);

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }

                function _extends() {
                    return _extends = Object.assign ? Object.assign.bind() : function(n) {
                        for (var e = 1; e < arguments.length; e++) {
                            var t = arguments[e];
                            for (var r in t) {
                                ({}).hasOwnProperty.call(t, r) && (n[r] = t[r])
                            }
                        }
                        return n
                    }, _extends.apply(null, arguments)
                }
                const _Number = Number;
                const _extend = _extend2.extend;
                const _format = _format_helper.default.format;
                const BaseGauge = exports.BaseGauge = _m_base_widget.default.inherit({
                    _rootClassPrefix: "dxg",
                    _themeSection: "gauge",
                    _titleBBoxCache: null,
                    _createThemeManager: function() {
                        return new _theme_manager.default.ThemeManager(this._getThemeManagerOptions())
                    },
                    _initCore: function() {
                        const root = this._renderer.root;
                        this._valueChangingLocker = 0;
                        this._translator = this._factory.createTranslator();
                        this._tracker = this._factory.createTracker({
                            renderer: this._renderer,
                            container: root
                        });
                        this._setTrackerCallbacks()
                    },
                    _beginValueChanging: function() {
                        this._resetIsReady();
                        this._onBeginUpdate();
                        ++this._valueChangingLocker
                    },
                    _endValueChanging: function() {
                        if (0 === --this._valueChangingLocker) {
                            this._drawn()
                        }
                    },
                    _setTrackerCallbacks: function() {
                        const renderer = this._renderer;
                        const tooltip = this._tooltip;
                        this._tracker.setCallbacks({
                            "tooltip-show": function(target, info, callback) {
                                const tooltipParameters = target.getTooltipParameters();
                                const offset = renderer.getRootOffset();
                                const formatObject = _extend({
                                    value: tooltipParameters.value,
                                    valueText: tooltip.formatValue(tooltipParameters.value),
                                    color: tooltipParameters.color
                                }, info);
                                return tooltip.show(formatObject, {
                                    x: tooltipParameters.x + offset.left,
                                    y: tooltipParameters.y + offset.top,
                                    offset: tooltipParameters.offset
                                }, {
                                    target: info
                                }, void 0, callback)
                            },
                            "tooltip-hide": function() {
                                return tooltip.hide()
                            }
                        })
                    },
                    _dispose: function() {
                        this._cleanCore();
                        this.callBase.apply(this, arguments)
                    },
                    _disposeCore: function() {
                        this._themeManager.dispose();
                        this._tracker.dispose();
                        this._translator = this._tracker = null
                    },
                    _cleanCore: function() {
                        this._tracker.deactivate();
                        this._noAnimation = false;
                        this._cleanContent()
                    },
                    _renderCore: function() {
                        if (!this._isValidDomain) {
                            return
                        }
                        this._renderContent();
                        this._renderGraphicObjects();
                        this._tracker.setTooltipState(this._tooltip.isEnabled());
                        this._tracker.activate();
                        this._noAnimation = false
                    },
                    _applyChanges: function() {
                        this.callBase.apply(this, arguments);
                        this._resizing = this._noAnimation = false
                    },
                    _setContentSize: function() {
                        this._resizing = this._noAnimation = 2 === this._changes.count();
                        this.callBase.apply(this, arguments)
                    },
                    _getChangesRequireCoreUpdate: function() {
                        return ["DOMAIN", "MOSTLY_TOTAL", "EXPORT"]
                    },
                    _isTitleBBoxChanged: function() {
                        var _this$_titleBBoxCache, _this$_titleBBoxCache2, _this$_titleBBoxCache3;
                        const titleBBox = this._title.getLayoutOptions();
                        const hasTitleHeightChanged = titleBBox.height !== (null === (_this$_titleBBoxCache = this._titleBBoxCache) || void 0 === _this$_titleBBoxCache ? void 0 : _this$_titleBBoxCache.height);
                        const hasTitleYChanged = titleBBox.y !== (null === (_this$_titleBBoxCache2 = this._titleBBoxCache) || void 0 === _this$_titleBBoxCache2 ? void 0 : _this$_titleBBoxCache2.y);
                        const hasVerticalAlignmentChanged = titleBBox.verticalAlignment !== (null === (_this$_titleBBoxCache3 = this._titleBBoxCache) || void 0 === _this$_titleBBoxCache3 ? void 0 : _this$_titleBBoxCache3.verticalAlignment);
                        this._titleBBoxCache = null;
                        return hasTitleHeightChanged || hasTitleYChanged || hasVerticalAlignmentChanged
                    },
                    _forceCoreUpdate: function() {
                        const isTriggeredByTitleOnly = this._changes.has("TITLE") && !this._getChangesRequireCoreUpdate().some((change => this._changes.has(change)));
                        if (isTriggeredByTitleOnly) {
                            return this._isTitleBBoxChanged()
                        }
                        return true
                    },
                    _applySize: function(rect) {
                        const that = this;
                        that._innerRect = {
                            left: rect[0],
                            top: rect[1],
                            right: rect[2],
                            bottom: rect[3]
                        };
                        const layoutCache = that._layout._cache;
                        if (that._forceCoreUpdate()) {
                            that._cleanCore();
                            that._renderCore()
                        }
                        that._layout._cache = that._layout._cache || layoutCache;
                        return [rect[0], that._innerRect.top, rect[2], that._innerRect.bottom]
                    },
                    _initialChanges: ["DOMAIN"],
                    _themeDependentChanges: ["DOMAIN"],
                    _optionChangesMap: {
                        subtitle: "MOSTLY_TOTAL",
                        indicator: "MOSTLY_TOTAL",
                        geometry: "MOSTLY_TOTAL",
                        animation: "MOSTLY_TOTAL",
                        startValue: "DOMAIN",
                        endValue: "DOMAIN"
                    },
                    _optionChangesOrder: ["DOMAIN", "MOSTLY_TOTAL"],
                    _change_DOMAIN: function() {
                        this._setupDomain()
                    },
                    _change_MOSTLY_TOTAL: function() {
                        this._applyMostlyTotalChange()
                    },
                    _updateExtraElements: _common.noop,
                    _setupDomain: function() {
                        const that = this;
                        that._setupDomainCore();
                        that._isValidDomain = isFinite(1 / (that._translator.getDomain()[1] - that._translator.getDomain()[0]));
                        if (!that._isValidDomain) {
                            that._incidentOccurred("W2301")
                        }
                        that._change(["MOSTLY_TOTAL"])
                    },
                    _applyMostlyTotalChange: function() {
                        this._setupCodomain();
                        this._setupAnimationSettings();
                        this._setupDefaultFormat();
                        this._change(["LAYOUT"])
                    },
                    _setupAnimationSettings: function() {
                        const that = this;
                        let option = that.option("animation");
                        that._animationSettings = null;
                        if (void 0 === option || option) {
                            option = _extend({
                                enabled: true,
                                duration: 1e3,
                                easing: "easeOutCubic"
                            }, option);
                            if (option.enabled && option.duration > 0) {
                                that._animationSettings = {
                                    duration: _Number(option.duration),
                                    easing: option.easing
                                }
                            }
                        }
                        that._containerBackgroundColor = that.option("containerBackgroundColor") || that._themeManager.theme().containerBackgroundColor
                    },
                    _setupDefaultFormat: function() {
                        const domain = this._translator.getDomain();
                        this._defaultFormatOptions = (0, _utils.getAppropriateFormat)(domain[0], domain[1], this._getApproximateScreenRange())
                    },
                    _setupDomainCore: null,
                    _calculateSize: null,
                    _cleanContent: null,
                    _renderContent: null,
                    _setupCodomain: null,
                    _getApproximateScreenRange: null,
                    _factory: {
                        createTranslator: function() {
                            return new _translator1d.Translator1D
                        },
                        createTracker: function(parameters) {
                            return new _tracker.default(parameters)
                        }
                    }
                });
                const formatValue = function(value, options, extra) {
                    if (Object.is(value, -0)) {
                        value = 0
                    }
                    options = options || {};
                    const text = _format(value, options.format);
                    let formatObject;
                    if ("function" === typeof options.customizeText) {
                        formatObject = _extend({
                            value: value,
                            valueText: text
                        }, extra);
                        return String(options.customizeText.call(formatObject, formatObject))
                    }
                    return text
                };
                exports.formatValue = formatValue;
                exports.getSampleText = function(translator, options) {
                    const text1 = formatValue(translator.getDomainStart(), options);
                    const text2 = formatValue(translator.getDomainEnd(), options);
                    return text1.length >= text2.length ? text1 : text2
                };
                BaseGauge.addPlugin(_export.plugin);
                BaseGauge.addPlugin(_title.plugin);
                BaseGauge.addPlugin(_tooltip.plugin);
                BaseGauge.addPlugin(_loading_indicator.plugin);
                const _setTooltipOptions = BaseGauge.prototype._setTooltipOptions;
                BaseGauge.prototype._setTooltipOptions = function() {
                    _setTooltipOptions.apply(this, arguments);
                    this._tracker && this._tracker.setTooltipState(this._tooltip.isEnabled())
                };
                const {
                    _change_TITLE: _change_TITLE
                } = BaseGauge.prototype;
                BaseGauge.prototype._change_TITLE = function() {
                    this._titleBBoxCache = _extends({}, this._title.getLayoutOptions());
                    _change_TITLE.apply(this, arguments)
                }
            },
        93473:
            /*!***************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/gauges/base_indicators.js ***!
              \***************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.BaseTextCloudMarker = exports.BaseRangeBar = exports.BaseIndicator = exports.BaseElement = void 0;
                var _common = __webpack_require__( /*! ../../core/utils/common */ 17781);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 21274);
                var _base_gauge = __webpack_require__( /*! ./base_gauge */ 5600);
                var _utils = __webpack_require__( /*! ../core/utils */ 28779);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576);
                var _class = (e = __webpack_require__( /*! ../../core/class */ 55620), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                const _isFinite = isFinite;
                const _Number = Number;
                const _round = Math.round;
                const _formatValue = _base_gauge.formatValue;
                const _getSampleText = _base_gauge.getSampleText;
                const BaseElement = exports.BaseElement = _class.default.inherit({
                    ctor: function(parameters) {
                        const that = this;
                        (0, _iterator.each)(parameters, (function(name, value) {
                            that["_" + name] = value
                        }));
                        that._init()
                    },
                    dispose: function() {
                        const that = this;
                        that._dispose();
                        (0, _iterator.each)(that, (function(name) {
                            that[name] = null
                        }));
                        return that
                    },
                    getOffset: function() {
                        return _Number(this._options.offset) || 0
                    }
                });
                const BaseIndicator = exports.BaseIndicator = BaseElement.inherit({
                    _init: function() {
                        this._rootElement = this._createRoot().linkOn(this._owner, {
                            name: "value-indicator",
                            after: "core"
                        });
                        this._trackerElement = this._createTracker()
                    },
                    _dispose: function() {
                        this._rootElement.linkOff()
                    },
                    _setupAnimation: function() {
                        const that = this;
                        if (that._options.animation) {
                            that._animation = {
                                step: function(pos) {
                                    that._actualValue = that._animation.start + that._animation.delta * pos;
                                    that._actualPosition = that._translator.translate(that._actualValue);
                                    that._move()
                                },
                                duration: that._options.animation.duration > 0 ? _Number(that._options.animation.duration) : 0,
                                easing: that._options.animation.easing
                            }
                        }
                    },
                    _runAnimation: function(value) {
                        const animation = this._animation;
                        animation.start = this._actualValue;
                        animation.delta = value - this._actualValue;
                        this._rootElement.animate({
                            _: 0
                        }, {
                            step: animation.step,
                            duration: animation.duration,
                            easing: animation.easing
                        })
                    },
                    _createRoot: function() {
                        return this._renderer.g().attr({
                            class: this._className
                        })
                    },
                    _createTracker: function() {
                        return this._renderer.path([], "area")
                    },
                    _getTrackerSettings: _common.noop,
                    clean: function() {
                        this._animation && this._rootElement.stopAnimation();
                        this._rootElement.linkRemove().clear();
                        this._clear();
                        this._tracker.detach(this._trackerElement);
                        this._options = this.enabled = this._animation = null;
                        return this
                    },
                    render: function(options) {
                        const that = this;
                        that.type = options.type;
                        that._options = options;
                        that._actualValue = that._currentValue = that._translator.adjust(that._options.currentValue);
                        that.enabled = that._isEnabled();
                        if (that.enabled) {
                            that._setupAnimation();
                            that._rootElement.attr({
                                fill: (0, _utils.extractColor)(that._options.color)
                            }).linkAppend();
                            that._tracker.attach(that._trackerElement, that, that._trackerInfo)
                        }
                        return that
                    },
                    resize: function(layout) {
                        const that = this;
                        that._rootElement.clear();
                        that._clear();
                        that.visible = that._isVisible(layout);
                        if (that.visible) {
                            (0, _extend.extend)(that._options, layout);
                            that._actualPosition = that._translator.translate(that._actualValue);
                            that._render();
                            that._trackerElement.attr(that._getTrackerSettings());
                            that._move()
                        }
                        return that
                    },
                    value: function(arg, _noAnimation) {
                        const that = this;
                        let val;
                        const rootElement = this._rootElement;
                        let visibility = null;
                        if (void 0 === arg) {
                            return that._currentValue
                        }
                        if (null === arg) {
                            visibility = "hidden";
                            that._currentValue = arg
                        } else {
                            val = that._translator.adjust(arg);
                            if (that._currentValue !== val && _isFinite(val)) {
                                that._currentValue = val;
                                if (that.visible) {
                                    if (that._animation && !_noAnimation) {
                                        that._runAnimation(val)
                                    } else {
                                        that._actualValue = val;
                                        that._actualPosition = that._translator.translate(val);
                                        that._move()
                                    }
                                }
                            }
                        }
                        rootElement.attr({
                            visibility: visibility
                        });
                        return that
                    },
                    _isEnabled: null,
                    _isVisible: null,
                    _render: null,
                    _clear: null,
                    _move: null
                });
                const COEFFICIENTS_MAP = {};
                COEFFICIENTS_MAP["right-bottom"] = COEFFICIENTS_MAP.rb = [0, -1, -1, 0, 0, 1, 1, 0];
                COEFFICIENTS_MAP["bottom-right"] = COEFFICIENTS_MAP.br = [-1, 0, 0, -1, 1, 0, 0, 1];
                COEFFICIENTS_MAP["left-bottom"] = COEFFICIENTS_MAP.lb = [0, -1, 1, 0, 0, 1, -1, 0];
                COEFFICIENTS_MAP["bottom-left"] = COEFFICIENTS_MAP.bl = [1, 0, 0, -1, -1, 0, 0, 1];
                COEFFICIENTS_MAP["left-top"] = COEFFICIENTS_MAP.lt = [0, 1, 1, 0, 0, -1, -1, 0];
                COEFFICIENTS_MAP["top-left"] = COEFFICIENTS_MAP.tl = [1, 0, 0, 1, -1, 0, 0, -1];
                COEFFICIENTS_MAP["right-top"] = COEFFICIENTS_MAP.rt = [0, 1, -1, 0, 0, -1, 1, 0];
                COEFFICIENTS_MAP["top-right"] = COEFFICIENTS_MAP.tr = [-1, 0, 0, 1, 1, 0, 0, -1];
                exports.BaseTextCloudMarker = BaseIndicator.inherit({
                    _move: function() {
                        const options = this._options;
                        const textCloudOptions = this._getTextCloudOptions();
                        const text = _formatValue(this._actualValue, options.text);
                        this._text.attr({
                            text: text
                        });
                        const bBox = this._text.getBBox();
                        const x = textCloudOptions.x;
                        const y = textCloudOptions.y;
                        const cloudWidth = (bBox.width || text.length * this._textUnitWidth) + 2 * options.horizontalOffset;
                        const cloudHeight = (bBox.height || this._textHeight) + 2 * options.verticalOffset;
                        const info = function(options) {
                            let x = options.x;
                            let y = options.y;
                            const type = COEFFICIENTS_MAP[options.type];
                            const cloudWidth = options.cloudWidth;
                            const cloudHeight = options.cloudHeight;
                            let tailWidth;
                            let tailHeight;
                            const cx = x;
                            const cy = y;
                            tailWidth = tailHeight = options.tailLength;
                            if (1 & type[0]) {
                                tailHeight = Math.min(tailHeight, cloudHeight / 3)
                            } else {
                                tailWidth = Math.min(tailWidth, cloudWidth / 3)
                            }
                            return {
                                cx: _round(cx + type[0] * tailWidth + (type[0] + type[2]) * cloudWidth / 2),
                                cy: _round(cy + type[1] * tailHeight + (type[1] + type[3]) * cloudHeight / 2),
                                points: [_round(x), _round(y), _round(x += type[0] * (cloudWidth + tailWidth)), _round(y += type[1] * (cloudHeight + tailHeight)), _round(x += type[2] * cloudWidth), _round(y += type[3] * cloudHeight), _round(x += type[4] * cloudWidth), _round(y += type[5] * cloudHeight), _round(x += type[6] * (cloudWidth - tailWidth)), _round(y += type[7] * (cloudHeight - tailHeight))]
                            }
                        }({
                            x: x,
                            y: y,
                            cloudWidth: cloudWidth,
                            cloudHeight: cloudHeight,
                            tailLength: options.arrowLength,
                            type: this._correctCloudType(textCloudOptions.type, {
                                x: x,
                                y: y
                            }, {
                                width: cloudWidth,
                                height: cloudHeight
                            })
                        });
                        this._text.attr({
                            x: info.cx,
                            y: info.cy + this._textVerticalOffset
                        });
                        this._cloud.attr({
                            points: info.points
                        });
                        this._trackerElement && this._trackerElement.attr({
                            points: info.points
                        })
                    },
                    _measureText: function() {
                        const that = this;
                        let root;
                        let text;
                        let bBox;
                        let sampleText;
                        if (!that._textVerticalOffset) {
                            root = that._createRoot().append(that._owner);
                            sampleText = _getSampleText(that._translator, that._options.text);
                            text = that._renderer.text(sampleText, 0, 0).attr({
                                align: "center"
                            }).css((0, _utils.patchFontOptions)(that._options.text.font)).append(root);
                            bBox = text.getBBox();
                            root.remove();
                            that._textVerticalOffset = -bBox.y - bBox.height / 2;
                            that._textWidth = bBox.width;
                            that._textHeight = bBox.height;
                            that._textUnitWidth = that._textWidth / sampleText.length;
                            that._textFullWidth = that._textWidth + 2 * that._options.horizontalOffset;
                            that._textFullHeight = that._textHeight + 2 * that._options.verticalOffset
                        }
                    },
                    _render: function() {
                        this._measureText();
                        this._cloud = this._cloud || this._renderer.path([], "area").append(this._rootElement);
                        this._text = this._text || this._renderer.text().append(this._rootElement);
                        this._text.attr({
                            align: "center"
                        }).css((0, _utils.patchFontOptions)(this._options.text.font))
                    },
                    _clear: function() {
                        delete this._cloud;
                        delete this._text
                    },
                    getTooltipParameters: function() {
                        const position = this._getTextCloudOptions();
                        return {
                            x: position.x,
                            y: position.y,
                            value: this._currentValue,
                            color: this._options.color
                        }
                    },
                    _correctCloudType: type => type
                });
                exports.BaseRangeBar = BaseIndicator.inherit({
                    _measureText: function() {
                        const that = this;
                        let root;
                        let text;
                        let bBox;
                        that._hasText = that._isTextVisible();
                        if (that._hasText && !that._textVerticalOffset) {
                            root = that._createRoot().append(that._owner);
                            text = that._renderer.text(_getSampleText(that._translator, that._options.text), 0, 0).attr({
                                class: "dxg-text",
                                align: "center"
                            }).css((0, _utils.patchFontOptions)(that._options.text.font)).append(root);
                            bBox = text.getBBox();
                            root.remove();
                            that._textVerticalOffset = -bBox.y - bBox.height / 2;
                            that._textWidth = bBox.width;
                            that._textHeight = bBox.height
                        }
                    },
                    _move: function() {
                        const that = this;
                        that._updateBarItemsPositions();
                        if (that._hasText) {
                            that._text.attr({
                                text: _formatValue(that._actualValue, that._options.text)
                            });
                            that._updateTextPosition();
                            that._updateLinePosition()
                        }
                    },
                    _updateBarItems: function() {
                        const that = this;
                        const options = that._options;
                        let spaceColor;
                        const translator = that._translator;
                        that._setBarSides();
                        that._startPosition = translator.translate(translator.getDomainStart());
                        that._endPosition = translator.translate(translator.getDomainEnd());
                        that._basePosition = translator.translate(options.baseValue);
                        that._space = that._getSpace();
                        const backgroundColor = options.backgroundColor || "none";
                        if ("none" !== backgroundColor && that._space > 0) {
                            spaceColor = options.containerBackgroundColor || "none"
                        } else {
                            that._space = 0;
                            spaceColor = "none"
                        }
                        that._backItem1.attr({
                            fill: backgroundColor
                        });
                        that._backItem2.attr({
                            fill: backgroundColor
                        });
                        that._spaceItem1.attr({
                            fill: spaceColor
                        });
                        that._spaceItem2.attr({
                            fill: spaceColor
                        })
                    },
                    _getSpace: function() {
                        return 0
                    },
                    _updateTextItems: function() {
                        const that = this;
                        if (that._hasText) {
                            that._line = that._line || that._renderer.path([], "line").attr({
                                class: "dxg-main-bar",
                                "stroke-linecap": "square"
                            }).append(that._rootElement);
                            that._text = that._text || that._renderer.text("", 0, 0).attr({
                                class: "dxg-text"
                            }).append(that._rootElement);
                            that._text.attr({
                                align: that._getTextAlign()
                            }).css(that._getFontOptions());
                            that._setTextItemsSides()
                        } else {
                            if (that._line) {
                                that._line.remove();
                                delete that._line
                            }
                            if (that._text) {
                                that._text.remove();
                                delete that._text
                            }
                        }
                    },
                    _isTextVisible: function() {
                        return false
                    },
                    _getTextAlign: function() {
                        return "center"
                    },
                    _getFontOptions: function() {
                        const options = this._options;
                        let font = options.text.font;
                        if (!font || !font.color) {
                            font = (0, _extend.extend)({}, font, {
                                color: options.color
                            })
                        }
                        return (0, _utils.patchFontOptions)(font)
                    },
                    _updateBarItemsPositions: function() {
                        const positions = this._getPositions();
                        this._backItem1.attr(this._buildItemSettings(positions.start, positions.back1));
                        this._backItem2.attr(this._buildItemSettings(positions.back2, positions.end));
                        this._spaceItem1.attr(this._buildItemSettings(positions.back1, positions.main1));
                        this._spaceItem2.attr(this._buildItemSettings(positions.main2, positions.back2));
                        this._mainItem.attr(this._buildItemSettings(positions.main1, positions.main2));
                        this._trackerElement && this._trackerElement.attr(this._buildItemSettings(positions.main1, positions.main2))
                    },
                    _render: function() {
                        const that = this;
                        that._measureText();
                        if (!that._backItem1) {
                            that._backItem1 = that._createBarItem();
                            that._backItem1.attr({
                                class: "dxg-back-bar"
                            })
                        }
                        if (!that._backItem2) {
                            that._backItem2 = that._createBarItem();
                            that._backItem2.attr({
                                class: "dxg-back-bar"
                            })
                        }
                        if (!that._spaceItem1) {
                            that._spaceItem1 = that._createBarItem();
                            that._spaceItem1.attr({
                                class: "dxg-space-bar"
                            })
                        }
                        if (!that._spaceItem2) {
                            that._spaceItem2 = that._createBarItem();
                            that._spaceItem2.attr({
                                class: "dxg-space-bar"
                            })
                        }
                        if (!that._mainItem) {
                            that._mainItem = that._createBarItem();
                            that._mainItem.attr({
                                class: "dxg-main-bar"
                            })
                        }
                        that._updateBarItems();
                        that._updateTextItems()
                    },
                    _clear: function() {
                        delete this._backItem1;
                        delete this._backItem2;
                        delete this._spaceItem1;
                        delete this._spaceItem2;
                        delete this._mainItem;
                        delete this._hasText;
                        delete this._line;
                        delete this._text
                    },
                    getTooltipParameters: function() {
                        const position = this._getTooltipPosition();
                        return {
                            x: position.x,
                            y: position.y,
                            value: this._currentValue,
                            color: this._options.color,
                            offset: 0
                        }
                    }
                })
            },
        24286:
            /*!********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/gauges/base_range_container.js ***!
              \********************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 21274);
                var _base_indicators = __webpack_require__( /*! ./base_indicators */ 93473);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 11528);
                var _utils = __webpack_require__( /*! ../core/utils */ 28779);
                const _Number = Number;
                const _isArray = Array.isArray;
                const _isFinite = isFinite;
                const BaseRangeContainer = _base_indicators.BaseElement.inherit({
                    _init: function() {
                        this._root = this._renderer.g().attr({
                            class: "dxg-range-container"
                        }).linkOn(this._container, "range-container")
                    },
                    _dispose: function() {
                        this._root.linkOff()
                    },
                    clean: function() {
                        this._root.linkRemove().clear();
                        this._options = this.enabled = null;
                        return this
                    },
                    _getRanges: function() {
                        const options = this._options;
                        const translator = this._translator;
                        const totalStart = translator.getDomain()[0];
                        const totalEnd = translator.getDomain()[1];
                        const totalDelta = totalEnd - totalStart;
                        const isValidSegment = totalDelta >= 0 ? isValidSegmentAsc : isValidSegmentDesc;
                        const subtractSegment = totalDelta >= 0 ? subtractSegmentAsc : subtractSegmentDesc;
                        let list = [];
                        let ranges = [];
                        let backgroundRanges = [{
                            start: totalStart,
                            end: totalEnd
                        }];
                        const backgroundColor = (0, _utils.extractColor)(options.backgroundColor) || "none";
                        const width = options.width || {};
                        const startWidth = _Number(width > 0 ? width : width.start);
                        const endWidth = _Number(width > 0 ? width : width.end);
                        const deltaWidth = endWidth - startWidth;
                        if (void 0 !== options.ranges && !_isArray(options.ranges)) {
                            return null
                        }
                        if (!(startWidth >= 0 && endWidth >= 0 && startWidth + endWidth > 0)) {
                            return null
                        }
                        list = (_isArray(options.ranges) ? options.ranges : []).reduce(((result, rangeOptions, i) => {
                            rangeOptions = rangeOptions || {};
                            const start = translator.adjust(rangeOptions.startValue);
                            const end = translator.adjust(rangeOptions.endValue);
                            if (_isFinite(start) && _isFinite(end) && isValidSegment(start, end, rangeOptions)) {
                                result.push({
                                    start: start,
                                    end: end,
                                    color: (0, _utils.extractColor)(rangeOptions.color),
                                    classIndex: i
                                })
                            }
                            return result
                        }), []);
                        const palette = this._themeManager.createPalette(options.palette, {
                            type: "indicatingSet",
                            extensionMode: options.paletteExtensionMode,
                            keepLastColorInEnd: true,
                            count: list.length
                        });
                        (0, _iterator.each)(list, (function(_, item) {
                            const paletteColor = palette.getNextColor();
                            item.color = (0, _type.isString)(item.color) && item.color || paletteColor || "none";
                            item.className = "dxg-range dxg-range-" + item.classIndex;
                            delete item.classIndex
                        }));
                        (0, _iterator.each)(list, (function(_, item) {
                            let i;
                            let ii;
                            let sub;
                            let subs;
                            let range;
                            const newRanges = [];
                            const newBackgroundRanges = [];
                            for (i = 0, ii = ranges.length; i < ii; ++i) {
                                range = ranges[i];
                                subs = subtractSegment(range.start, range.end, item.start, item.end);
                                (sub = subs[0]) && (sub.color = range.color) && (sub.className = range.className) && newRanges.push(sub);
                                (sub = subs[1]) && (sub.color = range.color) && (sub.className = range.className) && newRanges.push(sub)
                            }
                            newRanges.push(item);
                            ranges = newRanges;
                            for (i = 0, ii = backgroundRanges.length; i < ii; ++i) {
                                range = backgroundRanges[i];
                                subs = subtractSegment(range.start, range.end, item.start, item.end);
                                (sub = subs[0]) && newBackgroundRanges.push(sub);
                                (sub = subs[1]) && newBackgroundRanges.push(sub)
                            }
                            backgroundRanges = newBackgroundRanges
                        }));
                        (0, _iterator.each)(backgroundRanges, (function(_, range) {
                            range.color = backgroundColor;
                            range.className = "dxg-range dxg-background-range";
                            ranges.push(range)
                        }));
                        (0, _iterator.each)(ranges, (function(_, range) {
                            range.startWidth = (range.start - totalStart) / totalDelta * deltaWidth + startWidth;
                            range.endWidth = (range.end - totalStart) / totalDelta * deltaWidth + startWidth
                        }));
                        return ranges
                    },
                    render: function(options) {
                        const that = this;
                        that._options = options;
                        that._processOptions();
                        that._ranges = that._getRanges();
                        if (that._ranges) {
                            that.enabled = true;
                            that._root.linkAppend()
                        }
                        return that
                    },
                    resize: function(layout) {
                        const that = this;
                        that._root.clear();
                        if (that._isVisible(layout)) {
                            (0, _iterator.each)(that._ranges, (function(_, range) {
                                that._createRange(range, layout).attr({
                                    fill: range.color,
                                    class: range.className
                                }).append(that._root)
                            }))
                        }
                        return that
                    },
                    _processOptions: null,
                    _isVisible: null,
                    _createRange: null,
                    getColorForValue: function(value) {
                        let color = null;
                        (0, _iterator.each)(this._ranges, (function(_, range) {
                            if (range.start <= value && value <= range.end || range.start >= value && value >= range.end) {
                                color = range.color;
                                return false
                            }
                        }));
                        return color
                    }
                });

                function subtractSegmentAsc(segmentStart, segmentEnd, otherStart, otherEnd) {
                    let result;
                    if (otherStart > segmentStart && otherEnd < segmentEnd) {
                        result = [{
                            start: segmentStart,
                            end: otherStart
                        }, {
                            start: otherEnd,
                            end: segmentEnd
                        }]
                    } else if (otherStart >= segmentEnd || otherEnd <= segmentStart) {
                        result = [{
                            start: segmentStart,
                            end: segmentEnd
                        }]
                    } else if (otherStart <= segmentStart && otherEnd >= segmentEnd) {
                        result = []
                    } else if (otherStart > segmentStart) {
                        result = [{
                            start: segmentStart,
                            end: otherStart
                        }]
                    } else if (otherEnd < segmentEnd) {
                        result = [{
                            start: otherEnd,
                            end: segmentEnd
                        }]
                    }
                    return result
                }

                function subtractSegmentDesc(segmentStart, segmentEnd, otherStart, otherEnd) {
                    let result;
                    if (otherStart < segmentStart && otherEnd > segmentEnd) {
                        result = [{
                            start: segmentStart,
                            end: otherStart
                        }, {
                            start: otherEnd,
                            end: segmentEnd
                        }]
                    } else if (otherStart <= segmentEnd || otherEnd >= segmentStart) {
                        result = [{
                            start: segmentStart,
                            end: segmentEnd
                        }]
                    } else if (otherStart >= segmentStart && otherEnd <= segmentEnd) {
                        result = []
                    } else if (otherStart < segmentStart) {
                        result = [{
                            start: segmentStart,
                            end: otherStart
                        }]
                    } else if (otherEnd > segmentEnd) {
                        result = [{
                            start: otherEnd,
                            end: segmentEnd
                        }]
                    }
                    return result
                }

                function areEqualValues(start, end, _ref) {
                    let {
                        startValue: startValue,
                        endValue: endValue
                    } = _ref;
                    return endValue === startValue && startValue === start && end === start
                }

                function isValidSegmentAsc(start, end, options) {
                    return end - start > 0 || areEqualValues(start, end, options)
                }

                function isValidSegmentDesc(start, end, options) {
                    return start - end > 0 || areEqualValues(start, end, options)
                }
                exports.default = BaseRangeContainer;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        59248:
            /*!**************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/gauges/circular_gauge.js ***!
              \**************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 92848));
                var _object = __webpack_require__( /*! ../../core/utils/object */ 22263);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 21274);
                var _base_gauge = __webpack_require__( /*! ./base_gauge */ 5600);
                var _common = __webpack_require__( /*! ./common */ 73488);
                var _utils = __webpack_require__( /*! ../core/utils */ 28779);
                var _center_template = __webpack_require__( /*! ../core/center_template */ 94618);
                var circularIndicators = function(e, r) {
                    if (!r && e && e.__esModule) {
                        return e
                    }
                    if (null === e || "object" != typeof e && "function" != typeof e) {
                        return {
                            default: e
                        }
                    }
                    var t = _getRequireWildcardCache(r);
                    if (t && t.has(e)) {
                        return t.get(e)
                    }
                    var n = {
                            __proto__: null
                        },
                        a = Object.defineProperty && Object.getOwnPropertyDescriptor;
                    for (var u in e) {
                        if ("default" !== u && {}.hasOwnProperty.call(e, u)) {
                            var i = a ? Object.getOwnPropertyDescriptor(e, u) : null;
                            i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]
                        }
                    }
                    return n.default = e, t && t.set(e, n), n
                }(__webpack_require__( /*! ./circular_indicators */ 26737));
                var _circular_range_container = _interopRequireDefault(__webpack_require__( /*! ./circular_range_container */ 1678));

                function _getRequireWildcardCache(e) {
                    if ("function" != typeof WeakMap) {
                        return null
                    }
                    var r = new WeakMap,
                        t = new WeakMap;
                    return (_getRequireWildcardCache = function(e) {
                        return e ? t : r
                    })(e)
                }

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const _isFinite = isFinite;
                const _normalizeAngle = _utils.normalizeAngle;
                const _getCosAndSin = _utils.getCosAndSin;
                const _abs = Math.abs;
                const _max = Math.max;
                const _min = Math.min;
                const _round = Math.round;
                const _each = _iterator.each;
                const PI = Math.PI;
                const dxCircularGauge = _common.dxGauge.inherit({
                    _rootClass: "dxg-circular-gauge",
                    _factoryMethods: {
                        rangeContainer: "createCircularRangeContainer",
                        indicator: "createCircularIndicator"
                    },
                    _gridSpacingFactor: 17,
                    _scaleTypes: {
                        type: "polarAxes",
                        drawingType: "circular"
                    },
                    _getThemeManagerOptions() {
                        const options = this.callBase.apply(this, arguments);
                        options.subTheme = "_circular";
                        return options
                    },
                    _updateScaleTickIndent: function(scaleOptions) {
                        const indentFromTick = scaleOptions.label.indentFromTick;
                        const length = scaleOptions.tick.visible ? scaleOptions.tick.length : 0;
                        const textParams = this._scale.measureLabels((0, _extend.extend)({}, this._canvas));
                        const scaleOrientation = scaleOptions.orientation;
                        const tickCorrection = length;
                        let indentFromAxis = indentFromTick;
                        if (indentFromTick >= 0) {
                            if ("outside" === scaleOrientation) {
                                indentFromAxis += tickCorrection
                            } else if ("center" === scaleOrientation) {
                                indentFromAxis += tickCorrection / 2
                            }
                        } else {
                            const labelCorrection = _max(textParams.width, textParams.height);
                            indentFromAxis -= labelCorrection;
                            if ("inside" === scaleOrientation) {
                                indentFromAxis -= tickCorrection
                            } else if ("center" === scaleOrientation) {
                                indentFromAxis -= tickCorrection / 2
                            }
                        }
                        scaleOptions.label.indentFromAxis = indentFromAxis;
                        this._scale.updateOptions(scaleOptions)
                    },
                    _setupCodomain: function() {
                        const geometry = this.option("geometry") || {};
                        let startAngle = geometry.startAngle;
                        let endAngle = geometry.endAngle;
                        let sides;
                        startAngle = _isFinite(startAngle) ? _normalizeAngle(startAngle) : 225;
                        endAngle = _isFinite(endAngle) ? _normalizeAngle(endAngle) : -45;
                        if (_abs(startAngle - endAngle) < 1) {
                            endAngle -= 360;
                            sides = {
                                left: -1,
                                up: -1,
                                right: 1,
                                down: 1
                            }
                        } else {
                            startAngle < endAngle && (endAngle -= 360);
                            sides = function(startAngle, endAngle) {
                                const startCosSin = _getCosAndSin(startAngle);
                                const endCosSin = _getCosAndSin(endAngle);
                                const startCos = startCosSin.cos;
                                const startSin = startCosSin.sin;
                                const endCos = endCosSin.cos;
                                const endSin = endCosSin.sin;
                                return {
                                    left: startSin <= 0 && endSin >= 0 || startSin <= 0 && endSin <= 0 && startCos <= endCos || startSin >= 0 && endSin >= 0 && startCos >= endCos ? -1 : _min(startCos, endCos, 0),
                                    right: startSin >= 0 && endSin <= 0 || startSin >= 0 && endSin >= 0 && startCos >= endCos || startSin <= 0 && endSin <= 0 && startCos <= endCos ? 1 : _max(startCos, endCos, 0),
                                    up: startCos <= 0 && endCos >= 0 || startCos <= 0 && endCos <= 0 && startSin >= endSin || startCos >= 0 && endCos >= 0 && startSin <= endSin ? -1 : -_max(startSin, endSin, 0),
                                    down: startCos >= 0 && endCos <= 0 || startCos >= 0 && endCos >= 0 && startSin <= endSin || startCos <= 0 && endCos <= 0 && startSin >= endSin ? 1 : -_min(startSin, endSin, 0)
                                }
                            }(startAngle, endAngle)
                        }
                        this._area = {
                            x: 0,
                            y: 0,
                            radius: 100,
                            startCoord: startAngle,
                            endCoord: endAngle,
                            sides: sides
                        };
                        this._translator.setCodomain(startAngle, endAngle)
                    },
                    _getCenter: function() {
                        return this._getElementLayout()
                    },
                    _shiftScale: function(layout) {
                        const scale = this._scale;
                        const canvas = scale.getCanvas();
                        canvas.width = canvas.height = 2 * layout.radius;
                        scale.draw(canvas);
                        const centerCoords = scale.getCenter();
                        scale.shift({
                            right: layout.x - centerCoords.x,
                            bottom: layout.y - centerCoords.y
                        })
                    },
                    _getScaleLayoutValue: function() {
                        return this._area.radius
                    },
                    _getTicksOrientation: function(scaleOptions) {
                        return scaleOptions.orientation
                    },
                    _getTicksCoefficients: function(options) {
                        const coefs = {
                            inner: 0,
                            outer: 1
                        };
                        if ("inside" === options.orientation) {
                            coefs.inner = 1;
                            coefs.outer = 0
                        } else if ("center" === options.orientation) {
                            coefs.inner = coefs.outer = .5
                        }
                        return coefs
                    },
                    _correctScaleIndents: function(result, indentFromTick, textParams) {
                        if (indentFromTick >= 0) {
                            result.horizontalOffset = indentFromTick + textParams.width;
                            result.verticalOffset = indentFromTick + textParams.height
                        } else {
                            result.horizontalOffset = result.verticalOffset = 0;
                            result.min -= -indentFromTick + _max(textParams.width, textParams.height)
                        }
                        result.inverseHorizontalOffset = textParams.width / 2;
                        result.inverseVerticalOffset = textParams.height / 2
                    },
                    _measureMainElements: function(elements, scaleMeasurement) {
                        const radius = this._area.radius;
                        let maxRadius = 0;
                        let minRadius = 1 / 0;
                        let maxHorizontalOffset = 0;
                        let maxVerticalOffset = 0;
                        let maxInverseHorizontalOffset = 0;
                        let maxInverseVerticalOffset = 0;
                        const scale = this._scale;
                        _each(elements.concat(scale), (function(_, element) {
                            const bounds = element.measure ? element.measure({
                                radius: radius - element.getOffset()
                            }) : scaleMeasurement;
                            bounds.min > 0 && (minRadius = _min(minRadius, bounds.min));
                            bounds.max > 0 && (maxRadius = _max(maxRadius, bounds.max));
                            bounds.horizontalOffset > 0 && (maxHorizontalOffset = _max(maxHorizontalOffset, bounds.max + bounds.horizontalOffset));
                            bounds.verticalOffset > 0 && (maxVerticalOffset = _max(maxVerticalOffset, bounds.max + bounds.verticalOffset));
                            bounds.inverseHorizontalOffset > 0 && (maxInverseHorizontalOffset = _max(maxInverseHorizontalOffset, bounds.inverseHorizontalOffset));
                            bounds.inverseVerticalOffset > 0 && (maxInverseVerticalOffset = _max(maxInverseVerticalOffset, bounds.inverseVerticalOffset))
                        }));
                        maxHorizontalOffset = _max(maxHorizontalOffset - maxRadius, 0);
                        maxVerticalOffset = _max(maxVerticalOffset - maxRadius, 0);
                        return {
                            minRadius: minRadius,
                            maxRadius: maxRadius,
                            horizontalMargin: maxHorizontalOffset,
                            verticalMargin: maxVerticalOffset,
                            inverseHorizontalMargin: maxInverseHorizontalOffset,
                            inverseVerticalMargin: maxInverseVerticalOffset
                        }
                    },
                    _applyMainLayout: function(elements, scaleMeasurement) {
                        const measurements = this._measureMainElements(elements, scaleMeasurement);
                        const area = this._area;
                        const sides = area.sides;
                        const margins = {
                            left: (sides.left < -.1 ? measurements.horizontalMargin : measurements.inverseHorizontalMargin) || 0,
                            right: (sides.right > .1 ? measurements.horizontalMargin : measurements.inverseHorizontalMargin) || 0,
                            top: (sides.up < -.1 ? measurements.verticalMargin : measurements.inverseVerticalMargin) || 0,
                            bottom: (sides.down > .1 ? measurements.verticalMargin : measurements.inverseVerticalMargin) || 0
                        };
                        const rect = function(srcRect, aspectRatio, margins) {
                            const rect = (0, _extend.extend)({}, srcRect);
                            let selfAspectRatio;
                            let width = 0;
                            let height = 0;
                            margins = margins || {};
                            if (aspectRatio > 0) {
                                rect.left += margins.left || 0;
                                rect.right -= margins.right || 0;
                                rect.top += margins.top || 0;
                                rect.bottom -= margins.bottom || 0;
                                if (getWidth(rect) > 0 && getHeight(rect) > 0) {
                                    selfAspectRatio = getHeight(rect) / getWidth(rect);
                                    if (selfAspectRatio > 1) {
                                        aspectRatio < selfAspectRatio ? width = getWidth(rect) : height = getHeight(rect)
                                    } else {
                                        aspectRatio > selfAspectRatio ? height = getHeight(rect) : width = getWidth(rect)
                                    }
                                    width > 0 || (width = height / aspectRatio);
                                    height > 0 || (height = width * aspectRatio);
                                    width = (getWidth(rect) - width) / 2;
                                    height = (getHeight(rect) - height) / 2;
                                    rect.left += width;
                                    rect.right -= width;
                                    rect.top += height;
                                    rect.bottom -= height
                                } else {
                                    rect.left = rect.right = (rect.left + rect.right) / 2;
                                    rect.top = rect.bottom = (rect.top + rect.bottom) / 2
                                }
                            }
                            return rect
                        }(this._innerRect, (sides.down - sides.up) / (sides.right - sides.left), margins);
                        let radius = _min(getWidth(rect) / (sides.right - sides.left), getHeight(rect) / (sides.down - sides.up));
                        radius = radius - measurements.maxRadius + area.radius;
                        const x = rect.left - getWidth(rect) * sides.left / (sides.right - sides.left);
                        const y = rect.top - getHeight(rect) * sides.up / (sides.down - sides.up);
                        area.x = _round(x);
                        area.y = _round(y);
                        area.radius = radius;
                        rect.left -= margins.left;
                        rect.right += margins.right;
                        rect.top -= margins.top;
                        rect.bottom += margins.bottom;
                        this._innerRect = rect
                    },
                    _getElementLayout: function() {
                        let offset = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0;
                        return {
                            x: this._area.x,
                            y: this._area.y,
                            radius: _round(this._area.radius - offset)
                        }
                    },
                    _getApproximateScreenRange: function() {
                        const area = this._area;
                        let r = _min(this._canvas.width / (area.sides.right - area.sides.left), this._canvas.height / (area.sides.down - area.sides.up));
                        r > area.totalRadius && (r = area.totalRadius);
                        r *= .8;
                        return -this._translator.getCodomainRange() * r * PI / 180
                    },
                    _getDefaultSize: function() {
                        return {
                            width: 300,
                            height: 300
                        }
                    },
                    _factory: (0, _object.clone)(_base_gauge.BaseGauge.prototype._factory)
                });

                function getWidth(rect) {
                    return rect.right - rect.left
                }

                function getHeight(rect) {
                    return rect.bottom - rect.top
                }
                const indicators = dxCircularGauge.prototype._factory.indicators = {};
                dxCircularGauge.prototype._factory.createIndicator = (0, _common.createIndicatorCreator)(indicators);
                indicators._default = circularIndicators._default;
                indicators.rectangleneedle = circularIndicators.rectangleneedle;
                indicators.triangleneedle = circularIndicators.triangleneedle;
                indicators.twocolorneedle = circularIndicators.twocolorneedle;
                indicators.trianglemarker = circularIndicators.trianglemarker;
                indicators.textcloud = circularIndicators.textcloud;
                indicators.rangebar = circularIndicators.rangebar;
                dxCircularGauge.prototype._factory.RangeContainer = _circular_range_container.default;
                (0, _component_registrator.default)("dxCircularGauge", dxCircularGauge);
                dxCircularGauge.addPlugin(_center_template.plugins.gauge);
                exports.default = dxCircularGauge;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        26737:
            /*!*******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/gauges/circular_indicators.js ***!
              \*******************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.twocolorneedle = exports.triangleneedle = exports.trianglemarker = exports.textcloud = exports.rectangleneedle = exports.rangebar = exports._default = void 0;
                var _base_indicators = __webpack_require__( /*! ./base_indicators */ 93473);
                var _utils = __webpack_require__( /*! ../core/utils */ 28779);
                const _Number = Number;
                const _getCosAndSin = _utils.getCosAndSin;
                const _convertAngleToRendererSpace = _utils.convertAngleToRendererSpace;

                function correctRadius(layout, size) {
                    if (layout && layout.radius - size <= 0) {
                        layout.radius = size + 1
                    }
                    return layout
                }
                const SimpleIndicator = _base_indicators.BaseIndicator.inherit({
                    _move: function() {
                        const options = this._options;
                        const angle = _convertAngleToRendererSpace(this._actualPosition);
                        this._rootElement.rotate(angle, options.x, options.y);
                        this._trackerElement && this._trackerElement.rotate(angle, options.x, options.y)
                    },
                    _isEnabled: function() {
                        return this._options.width > 0
                    },
                    _isVisible: function(layout) {
                        return layout.radius - _Number(this._options.indentFromCenter) > 0
                    },
                    _getTrackerSettings: function() {
                        const options = this._options;
                        const radius = this._getRadius();
                        const indentFromCenter = this._getIndentFromCenter();
                        const x = options.x;
                        const y = options.y - (radius + indentFromCenter) / 2;
                        let width = options.width / 2;
                        let length = (radius - indentFromCenter) / 2;
                        width > 10 || (width = 10);
                        length > 10 || (length = 10);
                        return {
                            points: [x - width, y - length, x - width, y + length, x + width, y + length, x + width, y - length]
                        }
                    },
                    _render: function() {
                        this._renderPointer()
                    },
                    _clearPointer: function() {
                        delete this._element
                    },
                    _clear: function() {
                        this._clearPointer()
                    },
                    _getIndentFromCenter: function(radius) {
                        return Number(this._options.indentFromCenter) || 0
                    },
                    _getRadius: function() {
                        return 0
                    },
                    measure: function(layout) {
                        const result = {
                            max: layout.radius
                        };
                        if (this._options.indentFromCenter < 0) {
                            result.inverseHorizontalOffset = result.inverseVerticalOffset = -_Number(this._options.indentFromCenter)
                        }
                        return result
                    },
                    getTooltipParameters: function() {
                        const options = this._options;
                        const cosSin = _getCosAndSin(this._actualPosition);
                        const r = (this._getRadius() + this._getIndentFromCenter()) / 2;
                        return {
                            x: options.x + cosSin.cos * r,
                            y: options.y - cosSin.sin * r,
                            value: this._currentValue,
                            color: options.color,
                            offset: options.width / 2
                        }
                    }
                });
                const NeedleIndicator = SimpleIndicator.inherit({
                    _isVisible: function(layout) {
                        const indentFromCenter = this._adjustOffset(Number(this._options.indentFromCenter), layout.radius);
                        const offset = this._adjustOffset(Number(this._options.offset), layout.radius);
                        return layout.radius - indentFromCenter - offset > 0
                    },
                    getOffset: function() {
                        return 0
                    },
                    _adjustOffset: function(value, radius) {
                        const minRadius = Number(this._options.beginAdaptingAtRadius);
                        const diff = radius / minRadius;
                        if (diff < 1) {
                            value = Math.floor(value * diff)
                        }
                        return value || 0
                    },
                    _getIndentFromCenter: function(radius) {
                        return this._adjustOffset(Number(this._options.indentFromCenter), this._options.radius)
                    },
                    _getRadius: function() {
                        const options = this._options;
                        return options.radius - this._adjustOffset(Number(options.offset), options.radius)
                    },
                    _renderSpindle: function() {
                        const that = this;
                        const options = that._options;
                        const radius = options.radius;
                        const spindleSize = 2 * this._adjustOffset(_Number(options.spindleSize) / 2, radius);
                        let gapSize = 2 * this._adjustOffset(_Number(options.spindleGapSize) / 2, radius) || 0;
                        if (gapSize > 0) {
                            gapSize = gapSize <= spindleSize ? gapSize : spindleSize
                        }
                        if (spindleSize > 0) {
                            that._spindleOuter = that._spindleOuter || that._renderer.circle().append(that._rootElement);
                            that._spindleInner = that._spindleInner || that._renderer.circle().append(that._rootElement);
                            that._spindleOuter.attr({
                                class: "dxg-spindle-border",
                                cx: options.x,
                                cy: options.y,
                                r: spindleSize / 2
                            });
                            that._spindleInner.attr({
                                class: "dxg-spindle-hole",
                                cx: options.x,
                                cy: options.y,
                                r: gapSize / 2,
                                fill: options.containerBackgroundColor
                            })
                        }
                    },
                    _render: function() {
                        this.callBase();
                        this._renderSpindle()
                    },
                    _clear: function() {
                        this.callBase();
                        delete this._spindleOuter;
                        delete this._spindleInner
                    }
                });
                exports.rectangleneedle = exports._default = NeedleIndicator.inherit({
                    _renderPointer: function() {
                        const options = this._options;
                        const y2 = options.y - this._getRadius();
                        const y1 = options.y - this._getIndentFromCenter();
                        const x1 = options.x - options.width / 2;
                        const x2 = x1 + _Number(options.width);
                        this._element = this._element || this._renderer.path([], "area").append(this._rootElement);
                        this._element.attr({
                            points: [x1, y1, x1, y2, x2, y2, x2, y1]
                        })
                    }
                });
                exports.triangleneedle = NeedleIndicator.inherit({
                    _renderPointer: function() {
                        const options = this._options;
                        const y2 = options.y - this._getRadius();
                        const y1 = options.y - this._getIndentFromCenter();
                        const x1 = options.x - options.width / 2;
                        const x2 = options.x + options.width / 2;
                        this._element = this._element || this._renderer.path([], "area").append(this._rootElement);
                        this._element.attr({
                            points: [x1, y1, options.x, y2, x2, y1]
                        })
                    }
                });
                exports.twocolorneedle = NeedleIndicator.inherit({
                    _renderPointer: function() {
                        const options = this._options;
                        const x1 = options.x - options.width / 2;
                        const x2 = options.x + options.width / 2;
                        const y4 = options.y - this._getRadius();
                        const y1 = options.y - this._getIndentFromCenter();
                        const fraction = _Number(options.secondFraction) || 0;
                        let y2;
                        let y3;
                        if (fraction >= 1) {
                            y2 = y3 = y1
                        } else if (fraction <= 0) {
                            y2 = y3 = y4
                        } else {
                            y3 = y4 + (y1 - y4) * fraction;
                            y2 = y3 + _Number(options.space)
                        }
                        this._firstElement = this._firstElement || this._renderer.path([], "area").append(this._rootElement);
                        this._spaceElement = this._spaceElement || this._renderer.path([], "area").append(this._rootElement);
                        this._secondElement = this._secondElement || this._renderer.path([], "area").append(this._rootElement);
                        this._firstElement.attr({
                            points: [x1, y1, x1, y2, x2, y2, x2, y1]
                        });
                        this._spaceElement.attr({
                            points: [x1, y2, x1, y3, x2, y3, x2, y2],
                            class: "dxg-hole",
                            fill: options.containerBackgroundColor
                        });
                        this._secondElement.attr({
                            points: [x1, y3, x1, y4, x2, y4, x2, y3],
                            class: "dxg-part",
                            fill: options.secondColor
                        })
                    },
                    _clearPointer: function() {
                        delete this._firstElement;
                        delete this._secondElement;
                        delete this._spaceElement
                    }
                });
                exports.trianglemarker = SimpleIndicator.inherit({
                    _isEnabled: function() {
                        return this._options.length > 0 && this._options.width > 0
                    },
                    _isVisible: layout => true,
                    resize(layout) {
                        return this.callBase(correctRadius(layout, 0))
                    },
                    _render: function() {
                        const options = this._options;
                        const x = options.x;
                        const y1 = options.y - options.radius;
                        const dx = options.width / 2 || 0;
                        const y2 = y1 - _Number(options.length);
                        this._element = this._element || this._renderer.path([], "area").append(this._rootElement);
                        const settings = {
                            points: [x, y1, x - dx, y2, x + dx, y2],
                            stroke: "none",
                            "stroke-width": 0,
                            "stroke-linecap": "square"
                        };
                        if (options.space > 0) {
                            settings["stroke-width"] = Math.min(options.space, options.width / 4) || 0;
                            settings.stroke = settings["stroke-width"] > 0 ? options.containerBackgroundColor || "none" : "none"
                        }
                        this._element.attr(settings).sharp()
                    },
                    _clear: function() {
                        delete this._element
                    },
                    _getTrackerSettings: function() {
                        const options = this._options;
                        const x = options.x;
                        const y = options.y - options.radius - options.length / 2;
                        let width = options.width / 2;
                        let length = options.length / 2;
                        width > 10 || (width = 10);
                        length > 10 || (length = 10);
                        return {
                            points: [x - width, y - length, x - width, y + length, x + width, y + length, x + width, y - length]
                        }
                    },
                    measure: function(layout) {
                        return {
                            min: layout.radius,
                            max: layout.radius + _Number(this._options.length)
                        }
                    },
                    getTooltipParameters: function() {
                        const options = this._options;
                        const cosSin = _getCosAndSin(this._actualPosition);
                        const r = options.radius + options.length / 2;
                        const parameters = this.callBase();
                        parameters.x = options.x + cosSin.cos * r;
                        parameters.y = options.y - cosSin.sin * r;
                        parameters.offset = options.length / 2;
                        return parameters
                    }
                });
                exports.textcloud = _base_indicators.BaseTextCloudMarker.inherit({
                    _isEnabled: function() {
                        return true
                    },
                    _isVisible: layout => true,
                    resize(layout) {
                        return this.callBase(correctRadius(layout, 0))
                    },
                    _getTextCloudOptions: function() {
                        const cosSin = _getCosAndSin(this._actualPosition);
                        const nAngle = (0, _utils.normalizeAngle)(this._actualPosition);
                        return {
                            x: this._options.x + cosSin.cos * this._options.radius,
                            y: this._options.y - cosSin.sin * this._options.radius,
                            type: nAngle > 270 ? "left-top" : nAngle > 180 ? "top-right" : nAngle > 90 ? "right-bottom" : "bottom-left"
                        }
                    },
                    measure: function(layout) {
                        const arrowLength = _Number(this._options.arrowLength) || 0;
                        this._measureText();
                        const verticalOffset = this._textFullHeight + arrowLength;
                        const horizontalOffset = this._textFullWidth + arrowLength;
                        return {
                            min: layout.radius,
                            max: layout.radius,
                            horizontalOffset: horizontalOffset,
                            verticalOffset: verticalOffset,
                            inverseHorizontalOffset: horizontalOffset,
                            inverseVerticalOffset: verticalOffset
                        }
                    }
                });
                exports.rangebar = _base_indicators.BaseRangeBar.inherit({
                    _isEnabled: function() {
                        return this._options.size > 0
                    },
                    _isVisible: layout => true,
                    resize(layout) {
                        return this.callBase(correctRadius(layout, _Number(this._options.size)))
                    },
                    _createBarItem: function() {
                        return this._renderer.arc().attr({
                            "stroke-linejoin": "round"
                        }).append(this._rootElement)
                    },
                    _createTracker: function() {
                        return this._renderer.arc().attr({
                            "stroke-linejoin": "round"
                        })
                    },
                    _setBarSides: function() {
                        this._maxSide = this._options.radius;
                        this._minSide = this._maxSide - _Number(this._options.size)
                    },
                    _getSpace: function() {
                        const options = this._options;
                        return options.space > 0 ? 180 * options.space / options.radius / Math.PI : 0
                    },
                    _isTextVisible: function() {
                        const options = this._options.text || {};
                        return options.indent > 0
                    },
                    _setTextItemsSides: function() {
                        const options = this._options;
                        const indent = _Number(options.text.indent);
                        this._lineFrom = options.y - options.radius;
                        this._lineTo = this._lineFrom - indent;
                        this._textRadius = options.radius + indent
                    },
                    _getPositions: function() {
                        const basePosition = this._basePosition;
                        const actualPosition = this._actualPosition;
                        let mainPosition1;
                        let mainPosition2;
                        if (basePosition >= actualPosition) {
                            mainPosition1 = basePosition;
                            mainPosition2 = actualPosition
                        } else {
                            mainPosition1 = actualPosition;
                            mainPosition2 = basePosition
                        }
                        return {
                            start: this._startPosition,
                            end: this._endPosition,
                            main1: mainPosition1,
                            main2: mainPosition2,
                            back1: Math.min(mainPosition1 + this._space, this._startPosition),
                            back2: Math.max(mainPosition2 - this._space, this._endPosition)
                        }
                    },
                    _buildItemSettings: function(from, to) {
                        return {
                            x: this._options.x,
                            y: this._options.y,
                            innerRadius: this._minSide,
                            outerRadius: this._maxSide,
                            startAngle: to,
                            endAngle: from
                        }
                    },
                    _updateTextPosition: function() {
                        const cosSin = _getCosAndSin(this._actualPosition);
                        let x = this._options.x + this._textRadius * cosSin.cos;
                        let y = this._options.y - this._textRadius * cosSin.sin;
                        x += cosSin.cos * this._textWidth * .6;
                        y -= cosSin.sin * this._textHeight * .6;
                        this._text.attr({
                            x: x,
                            y: y + this._textVerticalOffset
                        })
                    },
                    _updateLinePosition: function() {
                        const x = this._options.x;
                        let x1;
                        let x2;
                        if (this._basePosition > this._actualPosition) {
                            x1 = x - 2;
                            x2 = x
                        } else if (this._basePosition < this._actualPosition) {
                            x1 = x;
                            x2 = x + 2
                        } else {
                            x1 = x - 1;
                            x2 = x + 1
                        }
                        this._line.attr({
                            points: [x1, this._lineFrom, x1, this._lineTo, x2, this._lineTo, x2, this._lineFrom]
                        }).rotate(_convertAngleToRendererSpace(this._actualPosition), x, this._options.y).sharp()
                    },
                    _getTooltipPosition: function() {
                        const cosSin = _getCosAndSin((this._basePosition + this._actualPosition) / 2);
                        const r = (this._minSide + this._maxSide) / 2;
                        return {
                            x: this._options.x + cosSin.cos * r,
                            y: this._options.y - cosSin.sin * r
                        }
                    },
                    measure: function(layout) {
                        const that = this;
                        const result = {
                            min: layout.radius - _Number(that._options.size),
                            max: layout.radius
                        };
                        that._measureText();
                        if (that._hasText) {
                            result.max += _Number(that._options.text.indent);
                            result.horizontalOffset = that._textWidth;
                            result.verticalOffset = that._textHeight
                        }
                        return result
                    }
                })
            },
        1678:
            /*!************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/gauges/circular_range_container.js ***!
              \************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _base_range_container = (e = __webpack_require__( /*! ./base_range_container */ 24286), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                var _utils = __webpack_require__( /*! ../core/utils */ 28779);
                const _Number = Number;
                const _max = Math.max;
                const CircularRangeContainer = _base_range_container.default.inherit({
                    _processOptions: function() {
                        const that = this;
                        that._inner = that._outer = 0;
                        switch ((0, _utils.normalizeEnum)(that._options.orientation)) {
                            case "inside":
                                that._inner = 1;
                                break;
                            case "center":
                                that._inner = that._outer = .5;
                                break;
                            default:
                                that._outer = 1
                        }
                    },
                    _isVisible: function(layout) {
                        let width = this._options.width;
                        width = _Number(width) || _max(_Number(width.start), _Number(width.end));
                        return layout.radius - this._inner * width > 0
                    },
                    _createRange: function(range, layout) {
                        const width = (range.startWidth + range.endWidth) / 2;
                        return this._renderer.arc(layout.x, layout.y, layout.radius - this._inner * width, layout.radius + this._outer * width, this._translator.translate(range.end), this._translator.translate(range.start)).attr({
                            "stroke-linejoin": "round"
                        })
                    },
                    measure: function(layout) {
                        let width = this._options.width;
                        width = _Number(width) || _max(_Number(width.start), _Number(width.end));
                        return {
                            min: layout.radius - this._inner * width,
                            max: layout.radius + this._outer * width
                        }
                    }
                });
                exports.default = CircularRangeContainer;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        73488:
            /*!******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/gauges/common.js ***!
              \******************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.createIndicatorCreator = function(indicators) {
                    return function(parameters, type, _strict) {
                        const indicatorType = indicators[(0, _utils.normalizeEnum)(type)] || !_strict && indicators._default;
                        return indicatorType ? new indicatorType(parameters) : null
                    }
                };
                exports.dxGauge = void 0;
                var _base_gauge = __webpack_require__( /*! ./base_gauge */ 5600);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 11528);
                var _extend2 = __webpack_require__( /*! ../../core/utils/extend */ 52576);
                var _base_axis = __webpack_require__( /*! ../axes/base_axis */ 99091);
                var _utils = __webpack_require__( /*! ../core/utils */ 28779);
                var _common = __webpack_require__( /*! ../../core/utils/common */ 17781);
                const _isArray = Array.isArray;
                const _isFinite = isFinite;
                const _Number = Number;
                const _min = Math.min;
                const _max = Math.max;
                const _extend = _extend2.extend;
                const DEFAULT_NUMBER_MULTIPLIERS = [1, 2, 5];

                function processValue(value, fallbackValue) {
                    if (null === value) {
                        return value
                    }
                    return _isFinite(value) ? _Number(value) : fallbackValue
                }

                function parseArrayOfNumbers(arg) {
                    return _isArray(arg) ? arg : (0, _type.isNumeric)(arg) ? [arg] : null
                }
                exports.dxGauge = _base_gauge.BaseGauge.inherit({
                    _initCore: function() {
                        const renderer = this._renderer;
                        this._setupValue(this.option("value"));
                        this.__subvalues = parseArrayOfNumbers(this.option("subvalues"));
                        this._setupSubvalues(this.__subvalues);
                        ! function(gauge) {
                            if (void 0 === gauge.option("value") && void 0 === gauge.option("subvalues")) {
                                if (void 0 !== gauge.option("valueIndicators")) {
                                    ! function(that) {
                                        that.value = that.subvalues = _common.noop;
                                        that._setupValue = that._setupSubvalues = that._updateValueIndicator = that._updateSubvalueIndicators = null
                                    }(gauge);
                                    ! function(that) {
                                        that._indicatorValues = [];
                                        setupValues(that, "_indicatorValues", that.option("valueIndicators"));
                                        that._valueIndicators = [];
                                        const _applyMostlyTotalChange = that._applyMostlyTotalChange;
                                        that._applyMostlyTotalChange = function() {
                                            setupValues(this, "_indicatorValues", this.option("valueIndicators"));
                                            _applyMostlyTotalChange.call(this)
                                        };
                                        that._updateActiveElements = updateActiveElements_hardMode;
                                        that._prepareValueIndicators = prepareValueIndicators_hardMode;
                                        that._disposeValueIndicators = disposeValueIndicators_hardMode;
                                        that._cleanValueIndicators = cleanValueIndicators_hardMode;
                                        that.indicatorValue = indicatorValue_hardMode
                                    }(gauge)
                                }
                            }
                        }(this);
                        this.callBase.apply(this, arguments);
                        this._rangeContainer = new this._factory.RangeContainer({
                            renderer: renderer,
                            container: renderer.root,
                            translator: this._translator,
                            themeManager: this._themeManager
                        });
                        this._initScale();
                        this._subvalueIndicatorContainer = this._renderer.g().attr({
                            class: "dxg-subvalue-indicators"
                        }).linkOn(this._renderer.root, "valueIndicator").enableLinks()
                    },
                    _fontFields: ["scale.label.font", "valueIndicators.rangebar.text.font", "valueIndicators.textcloud.text.font", "indicator.text.font"],
                    _initScale: function() {
                        this._scaleGroup = this._renderer.g().attr({
                            class: "dxg-scale"
                        }).linkOn(this._renderer.root, "scale");
                        this._labelsAxesGroup = this._renderer.g().attr({
                            class: "dxg-scale-elements"
                        }).linkOn(this._renderer.root, "scale-elements");
                        this._scale = new _base_axis.Axis({
                            incidentOccurred: this._incidentOccurred,
                            renderer: this._renderer,
                            axesContainerGroup: this._scaleGroup,
                            labelsAxesGroup: this._labelsAxesGroup,
                            axisType: this._scaleTypes.type,
                            drawingType: this._scaleTypes.drawingType,
                            widgetClass: "dxg",
                            getTemplate() {}
                        })
                    },
                    _disposeCore: function() {
                        this.callBase.apply(this, arguments);
                        this._scale.dispose();
                        this._scaleGroup.linkOff();
                        this._labelsAxesGroup.linkOff();
                        this._rangeContainer.dispose();
                        this._disposeValueIndicators();
                        this._subvalueIndicatorContainer.linkOff();
                        this._scale = this._scaleGroup = this._labelsAxesGroup = this._rangeContainer = null
                    },
                    _disposeValueIndicators: function() {
                        this._valueIndicator && this._valueIndicator.dispose();
                        this._subvalueIndicatorsSet && this._subvalueIndicatorsSet.dispose();
                        this._valueIndicator = this._subvalueIndicatorsSet = null
                    },
                    _setupDomainCore: function() {
                        const scaleOption = this.option("scale") || {};
                        let startValue = this.option("startValue");
                        let endValue = this.option("endValue");
                        startValue = (0, _type.isNumeric)(startValue) ? _Number(startValue) : (0, _type.isNumeric)(scaleOption.startValue) ? _Number(scaleOption.startValue) : 0;
                        endValue = (0, _type.isNumeric)(endValue) ? _Number(endValue) : (0, _type.isNumeric)(scaleOption.endValue) ? _Number(scaleOption.endValue) : 100;
                        this._baseValue = startValue < endValue ? startValue : endValue;
                        this._translator.setDomain(startValue, endValue)
                    },
                    _cleanContent: function() {
                        this._rangeContainer.clean();
                        this._cleanValueIndicators()
                    },
                    _measureScale: function(scaleOptions) {
                        const majorTick = scaleOptions.tick;
                        const majorTickEnabled = majorTick.visible && majorTick.length > 0 && majorTick.width > 0;
                        const minorTick = scaleOptions.minorTick;
                        const minorTickEnabled = minorTick.visible && minorTick.length > 0 && minorTick.width > 0;
                        const label = scaleOptions.label;
                        const indentFromTick = Number(label.indentFromTick);
                        if (!majorTickEnabled && !minorTickEnabled && !label.visible) {
                            return {}
                        }
                        const textParams = this._scale.measureLabels((0, _extend2.extend)({}, this._canvas));
                        const layoutValue = this._getScaleLayoutValue();
                        const result = {
                            min: layoutValue,
                            max: layoutValue
                        };
                        const coefs = this._getTicksCoefficients(scaleOptions);
                        const innerCoef = coefs.inner;
                        const outerCoef = coefs.outer;
                        if (majorTickEnabled) {
                            result.min = _min(result.min, layoutValue - innerCoef * majorTick.length);
                            result.max = _max(result.max, layoutValue + outerCoef * majorTick.length)
                        }
                        if (minorTickEnabled) {
                            result.min = _min(result.min, layoutValue - innerCoef * minorTick.length);
                            result.max = _max(result.max, layoutValue + outerCoef * minorTick.length)
                        }
                        label.visible && this._correctScaleIndents(result, indentFromTick, textParams);
                        return result
                    },
                    _renderContent: function() {
                        const that = this;
                        const scaleOptions = that._prepareScaleSettings();
                        that._rangeContainer.render(_extend(that._getOption("rangeContainer"), {
                            vertical: that._area.vertical
                        }));
                        that._renderScale(scaleOptions);
                        that._subvalueIndicatorContainer.linkAppend();
                        const elements = (0, _utils.map)([that._rangeContainer].concat(that._prepareValueIndicators()), (function(element) {
                            return element && element.enabled ? element : null
                        }));
                        that._applyMainLayout(elements, that._measureScale(scaleOptions));
                        elements.forEach((element => element.resize(that._getElementLayout(element.getOffset()))));
                        that._shiftScale(that._getElementLayout(0), scaleOptions);
                        that._beginValueChanging();
                        that._updateActiveElements();
                        that._endValueChanging()
                    },
                    _prepareScaleSettings: function() {
                        const that = this;
                        const userOptions = that.option("scale");
                        const scaleOptions = (0, _extend2.extend)(true, {}, that._themeManager.theme("scale"), userOptions);
                        scaleOptions.label.indentFromAxis = 0;
                        scaleOptions.isHorizontal = !that._area.vertical;
                        scaleOptions.forceUserTickInterval |= (0, _type.isDefined)(userOptions) && (0, _type.isDefined)(userOptions.tickInterval) && !(0, _type.isDefined)(userOptions.scaleDivisionFactor);
                        scaleOptions.axisDivisionFactor = scaleOptions.scaleDivisionFactor || that._gridSpacingFactor;
                        scaleOptions.minorAxisDivisionFactor = scaleOptions.minorScaleDivisionFactor || 5;
                        scaleOptions.numberMultipliers = DEFAULT_NUMBER_MULTIPLIERS;
                        scaleOptions.tickOrientation = that._getTicksOrientation(scaleOptions);
                        if (scaleOptions.label.useRangeColors) {
                            scaleOptions.label.customizeColor = function() {
                                return that._rangeContainer.getColorForValue(this.value)
                            }
                        }
                        return scaleOptions
                    },
                    _renderScale: function(scaleOptions) {
                        const bounds = this._translator.getDomain();
                        const startValue = bounds[0];
                        const endValue = bounds[1];
                        const angles = this._translator.getCodomain();
                        const invert = !!(startValue > endValue ^ scaleOptions.inverted);
                        const min = _min(startValue, endValue);
                        const max = _max(startValue, endValue);
                        scaleOptions.min = min;
                        scaleOptions.max = max;
                        scaleOptions.startAngle = 90 - angles[0];
                        scaleOptions.endAngle = 90 - angles[1];
                        scaleOptions.skipViewportExtending = true;
                        scaleOptions.inverted = invert;
                        this._scale.updateOptions(scaleOptions);
                        this._scale.setBusinessRange({
                            axisType: "continuous",
                            dataType: "numeric",
                            min: min,
                            max: max,
                            invert: invert
                        });
                        this._updateScaleTickIndent(scaleOptions);
                        this._scaleGroup.linkAppend();
                        this._labelsAxesGroup.linkAppend();
                        this._scale.draw((0, _extend2.extend)({}, this._canvas))
                    },
                    _updateIndicatorSettings: function(settings) {
                        const that = this;
                        settings.currentValue = settings.baseValue = _isFinite(that._translator.translate(settings.baseValue)) ? _Number(settings.baseValue) : that._baseValue;
                        settings.vertical = that._area.vertical;
                        if (settings.text && !settings.text.format) {
                            settings.text.format = that._defaultFormatOptions
                        }
                    },
                    _prepareIndicatorSettings: function(options, defaultTypeField) {
                        const theme = this._themeManager.theme("valueIndicators");
                        const type = (0, _utils.normalizeEnum)(options.type || this._themeManager.theme(defaultTypeField));
                        const settings = _extend(true, {}, theme._default, theme[type], options);
                        settings.type = type;
                        settings.animation = this._animationSettings;
                        settings.containerBackgroundColor = this._containerBackgroundColor;
                        this._updateIndicatorSettings(settings);
                        return settings
                    },
                    _cleanValueIndicators: function() {
                        this._valueIndicator && this._valueIndicator.clean();
                        this._subvalueIndicatorsSet && this._subvalueIndicatorsSet.clean()
                    },
                    _prepareValueIndicators: function() {
                        this._prepareValueIndicator();
                        null !== this.__subvalues && this._prepareSubvalueIndicators();
                        return [this._valueIndicator, this._subvalueIndicatorsSet]
                    },
                    _updateActiveElements: function() {
                        this._updateValueIndicator();
                        this._updateSubvalueIndicators()
                    },
                    _prepareValueIndicator: function() {
                        const that = this;
                        let target = that._valueIndicator;
                        const settings = that._prepareIndicatorSettings(that.option("valueIndicator") || {}, "valueIndicatorType");
                        if (target && target.type !== settings.type) {
                            target.dispose();
                            target = null
                        }
                        if (!target) {
                            target = that._valueIndicator = that._createIndicator(settings.type, that._renderer.root, "dxg-value-indicator", "value-indicator")
                        }
                        target.render(settings)
                    },
                    _createSubvalueIndicatorsSet: function() {
                        const that = this;
                        const root = that._subvalueIndicatorContainer;
                        return new ValueIndicatorsSet({
                            createIndicator: function(type, i) {
                                return that._createIndicator(type, root, "dxg-subvalue-indicator", "subvalue-indicator", i)
                            },
                            createPalette: function(palette) {
                                return that._themeManager.createPalette(palette)
                            }
                        })
                    },
                    _prepareSubvalueIndicators: function() {
                        const that = this;
                        let target = that._subvalueIndicatorsSet;
                        const settings = that._prepareIndicatorSettings(that.option("subvalueIndicator") || {}, "subvalueIndicatorType");
                        if (!target) {
                            target = that._subvalueIndicatorsSet = that._createSubvalueIndicatorsSet()
                        }
                        const isRecreate = settings.type !== target.type;
                        target.type = settings.type;
                        const dummy = that._createIndicator(settings.type, that._renderer.root);
                        if (dummy) {
                            dummy.dispose();
                            target.render(settings, isRecreate)
                        }
                    },
                    _setupValue: function(value) {
                        this.__value = processValue(value, this.__value)
                    },
                    _setupSubvalues: function(subvalues) {
                        const vals = void 0 === subvalues ? this.__subvalues : parseArrayOfNumbers(subvalues);
                        let i;
                        let ii;
                        let list;
                        if (null === vals) {
                            return
                        }
                        for (i = 0, ii = vals.length, list = []; i < ii; ++i) {
                            list.push(processValue(vals[i], this.__subvalues[i]))
                        }
                        this.__subvalues = list
                    },
                    _updateValueIndicator: function() {
                        this._valueIndicator && this._valueIndicator.value(this.__value, this._noAnimation)
                    },
                    _updateSubvalueIndicators: function() {
                        this._subvalueIndicatorsSet && this._subvalueIndicatorsSet.values(this.__subvalues, this._noAnimation)
                    },
                    value: function(arg) {
                        if (void 0 !== arg) {
                            this._changeValue(arg);
                            return this
                        }
                        return this.__value
                    },
                    subvalues: function(arg) {
                        if (void 0 !== arg) {
                            this._changeSubvalues(arg);
                            return this
                        }
                        return null !== this.__subvalues ? this.__subvalues.slice() : void 0
                    },
                    _changeValue: function(value) {
                        this._setupValue(value);
                        this._beginValueChanging();
                        this._updateValueIndicator();
                        this._updateExtraElements();
                        if (this.__value !== this.option("value")) {
                            this.option("value", this.__value)
                        }
                        this._endValueChanging()
                    },
                    _changeSubvalues: function(subvalues) {
                        if (null !== this.__subvalues) {
                            this._setupSubvalues(subvalues);
                            this._beginValueChanging();
                            this._updateSubvalueIndicators();
                            this._updateExtraElements();
                            this._endValueChanging()
                        } else {
                            this.__subvalues = parseArrayOfNumbers(subvalues);
                            this._setContentSize();
                            this._renderContent()
                        }
                        if (!(0, _base_gauge.compareArrays)(this.__subvalues, this.option("subvalues"))) {
                            this.option("subvalues", this.__subvalues)
                        }
                    },
                    _optionChangesMap: {
                        scale: "DOMAIN",
                        rangeContainer: "MOSTLY_TOTAL",
                        valueIndicator: "MOSTLY_TOTAL",
                        subvalueIndicator: "MOSTLY_TOTAL",
                        containerBackgroundColor: "MOSTLY_TOTAL",
                        value: "VALUE",
                        subvalues: "SUBVALUES",
                        valueIndicators: "MOSTLY_TOTAL"
                    },
                    _customChangesOrder: ["VALUE", "SUBVALUES"],
                    _change_VALUE: function() {
                        this._changeValue(this.option("value"))
                    },
                    _change_SUBVALUES: function() {
                        this._changeSubvalues(this.option("subvalues"))
                    },
                    _applyMainLayout: null,
                    _getElementLayout: null,
                    _createIndicator: function(type, owner, className, trackerType, trackerIndex, _strict) {
                        const indicator = this._factory.createIndicator({
                            renderer: this._renderer,
                            translator: this._translator,
                            owner: owner,
                            tracker: this._tracker,
                            className: className
                        }, type, _strict);
                        if (indicator) {
                            indicator.type = type;
                            indicator._trackerInfo = {
                                type: trackerType,
                                index: trackerIndex
                            }
                        }
                        return indicator
                    },
                    _getApproximateScreenRange: null
                });

                function valueGetter(arg) {
                    return arg ? arg.value : null
                }

                function setupValues(that, fieldName, optionItems) {
                    const currentValues = that[fieldName];
                    const newValues = _isArray(optionItems) ? (0, _utils.map)(optionItems, valueGetter) : [];
                    let i = 0;
                    const ii = newValues.length;
                    const list = [];
                    for (; i < ii; ++i) {
                        list.push(processValue(newValues[i], currentValues[i]))
                    }
                    that[fieldName] = list
                }

                function updateActiveElements_hardMode() {
                    const that = this;
                    that._valueIndicators.forEach((valueIndicator => {
                        valueIndicator.value(that._indicatorValues[valueIndicator.index], that._noAnimation)
                    }))
                }

                function prepareValueIndicators_hardMode() {
                    const that = this;
                    const valueIndicators = that._valueIndicators || [];
                    const userOptions = that.option("valueIndicators");
                    const optionList = [];
                    let i = 0;
                    let ii;
                    for (ii = _isArray(userOptions) ? userOptions.length : 0; i < ii; ++i) {
                        optionList.push(userOptions[i])
                    }
                    for (ii = valueIndicators.length; i < ii; ++i) {
                        optionList.push(null)
                    }
                    const newValueIndicators = [];
                    optionList.forEach(((userSettings, i) => {
                        let valueIndicator = valueIndicators[i];
                        if (!userSettings) {
                            valueIndicator && valueIndicator.dispose();
                            return
                        }
                        const settings = that._prepareIndicatorSettings(userSettings, "valueIndicatorType");
                        if (valueIndicator && valueIndicator.type !== settings.type) {
                            valueIndicator.dispose();
                            valueIndicator = null
                        }
                        if (!valueIndicator) {
                            valueIndicator = that._createIndicator(settings.type, that._renderer.root, "dxg-value-indicator", "value-indicator", i, true)
                        }
                        if (valueIndicator) {
                            valueIndicator.index = i;
                            valueIndicator.render(settings);
                            newValueIndicators.push(valueIndicator)
                        }
                    }));
                    that._valueIndicators = newValueIndicators;
                    return that._valueIndicators
                }

                function disposeValueIndicators_hardMode() {
                    this._valueIndicators.forEach((valueIndicator => valueIndicator.dispose()));
                    this._valueIndicators = null
                }

                function cleanValueIndicators_hardMode() {
                    this._valueIndicators.forEach((valueIndicator => valueIndicator.clean()))
                }

                function indicatorValue_hardMode(index, value) {
                    return function(that, pointers, values, index, value) {
                        if (void 0 !== value) {
                            if (void 0 !== values[index]) {
                                values[index] = processValue(value, values[index]);
                                pointers[index] && pointers[index].value(values[index])
                            }
                            return that
                        } else {
                            return values[index]
                        }
                    }(this, this._valueIndicators, this._indicatorValues, index, value)
                }

                function ValueIndicatorsSet(parameters) {
                    this._parameters = parameters;
                    this._indicators = []
                }
                ValueIndicatorsSet.prototype = {
                    constructor: ValueIndicatorsSet,
                    dispose: function() {
                        this._indicators.forEach((indicator => indicator.dispose()));
                        this._parameters = this._options = this._indicators = this._colorPalette = this._palette = null;
                        return this
                    },
                    clean: function() {
                        this._sample && this._sample.clean().dispose();
                        this._indicators.forEach((indicator => indicator.clean()));
                        this._sample = this._options = this._palette = null;
                        return this
                    },
                    render: function(options, isRecreate) {
                        const that = this;
                        that._options = options;
                        that._sample = that._parameters.createIndicator(that.type);
                        that._sample.render(options);
                        that.enabled = that._sample.enabled;
                        that._palette = (0, _type.isDefined)(options.palette) ? that._parameters.createPalette(options.palette) : null;
                        if (that.enabled) {
                            that._generatePalette(that._indicators.length);
                            that._indicators = (0, _utils.map)(that._indicators, (function(indicator, i) {
                                if (isRecreate) {
                                    indicator.dispose();
                                    indicator = that._parameters.createIndicator(that.type, i)
                                }
                                indicator.render(that._getIndicatorOptions(i));
                                return indicator
                            }))
                        }
                        return that
                    },
                    getOffset: function() {
                        return this._sample.getOffset()
                    },
                    resize: function(layout) {
                        this._layout = layout;
                        this._indicators.forEach((indicator => indicator.resize(layout)));
                        return this
                    },
                    measure: function(layout) {
                        return this._sample.measure(layout)
                    },
                    _getIndicatorOptions: function(index) {
                        let result = this._options;
                        if (this._colorPalette) {
                            result = _extend({}, result, {
                                color: this._colorPalette[index]
                            })
                        }
                        return result
                    },
                    _generatePalette: function(count) {
                        const that = this;
                        let colors = null;
                        if (that._palette) {
                            that._palette.reset();
                            colors = that._palette.generateColors(count, {
                                repeat: true
                            })
                        }
                        that._colorPalette = colors
                    },
                    _adjustIndicatorsCount: function(count) {
                        const that = this;
                        const indicators = that._indicators;
                        let i;
                        let ii;
                        let indicator;
                        const indicatorsLen = indicators.length;
                        if (indicatorsLen > count) {
                            for (i = count, ii = indicatorsLen; i < ii; ++i) {
                                indicators[i].clean().dispose()
                            }
                            that._indicators = indicators.slice(0, count);
                            that._generatePalette(indicators.length)
                        } else if (indicatorsLen < count) {
                            that._generatePalette(count);
                            for (i = indicatorsLen, ii = count; i < ii; ++i) {
                                indicator = that._parameters.createIndicator(that.type, i);
                                indicator.render(that._getIndicatorOptions(i)).resize(that._layout);
                                indicators.push(indicator)
                            }
                        }
                    },
                    values: function(arg, _noAnimation) {
                        const that = this;
                        if (!that.enabled) {
                            return
                        }
                        if (void 0 !== arg) {
                            if (!_isArray(arg)) {
                                arg = _isFinite(arg) ? [Number(arg)] : null
                            }
                            if (arg) {
                                that._adjustIndicatorsCount(arg.length);
                                that._indicators.forEach(((indicator, i) => indicator.value(arg[i], _noAnimation)))
                            }
                            return that
                        }
                        return (0, _utils.map)(that._indicators, (function(indicator) {
                            return indicator.value()
                        }))
                    }
                }
            },
        38452:
            /*!************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/gauges/linear_gauge.js ***!
              \************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 21274);
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 92848));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576);
                var _object = __webpack_require__( /*! ../../core/utils/object */ 22263);
                var _base_gauge = __webpack_require__( /*! ./base_gauge */ 5600);
                var _common = __webpack_require__( /*! ./common */ 73488);
                var _utils = __webpack_require__( /*! ../core/utils */ 28779);
                var linearIndicators = function(e, r) {
                    if (!r && e && e.__esModule) {
                        return e
                    }
                    if (null === e || "object" != typeof e && "function" != typeof e) {
                        return {
                            default: e
                        }
                    }
                    var t = _getRequireWildcardCache(r);
                    if (t && t.has(e)) {
                        return t.get(e)
                    }
                    var n = {
                            __proto__: null
                        },
                        a = Object.defineProperty && Object.getOwnPropertyDescriptor;
                    for (var u in e) {
                        if ("default" !== u && {}.hasOwnProperty.call(e, u)) {
                            var i = a ? Object.getOwnPropertyDescriptor(e, u) : null;
                            i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]
                        }
                    }
                    return n.default = e, t && t.set(e, n), n
                }(__webpack_require__( /*! ./linear_indicators */ 30621));
                var _linear_range_container = _interopRequireDefault(__webpack_require__( /*! ./linear_range_container */ 95946));

                function _getRequireWildcardCache(e) {
                    if ("function" != typeof WeakMap) {
                        return null
                    }
                    var r = new WeakMap,
                        t = new WeakMap;
                    return (_getRequireWildcardCache = function(e) {
                        return e ? t : r
                    })(e)
                }

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const _max = Math.max;
                const _min = Math.min;
                const _round = Math.round;
                const dxLinearGauge = _common.dxGauge.inherit({
                    _rootClass: "dxg-linear-gauge",
                    _factoryMethods: {
                        rangeContainer: "createLinearRangeContainer",
                        indicator: "createLinearIndicator"
                    },
                    _gridSpacingFactor: 25,
                    _scaleTypes: {
                        type: "xyAxes",
                        drawingType: "linear"
                    },
                    _getTicksOrientation: function(scaleOptions) {
                        return scaleOptions.isHorizontal ? scaleOptions.verticalOrientation : scaleOptions.horizontalOrientation
                    },
                    _getThemeManagerOptions() {
                        const options = this.callBase.apply(this, arguments);
                        options.subTheme = "_linear";
                        return options
                    },
                    _getInvertedState() {
                        return !this._area.vertical && this.option("rtlEnabled")
                    },
                    _prepareScaleSettings: function() {
                        const scaleOptions = this.callBase();
                        scaleOptions.inverted = this._getInvertedState();
                        return scaleOptions
                    },
                    _updateScaleTickIndent: function(scaleOptions) {
                        const indentFromTick = scaleOptions.label.indentFromTick;
                        const length = scaleOptions.tick.length;
                        const textParams = this._scale.measureLabels((0, _extend.extend)({}, this._canvas));
                        const verticalTextCorrection = scaleOptions.isHorizontal ? textParams.height + textParams.y : 0;
                        const isIndentPositive = indentFromTick > 0;
                        let orientation;
                        let textCorrection;
                        let tickCorrection;
                        if (scaleOptions.isHorizontal) {
                            orientation = isIndentPositive ? {
                                center: .5,
                                top: 0,
                                bottom: 1
                            } : {
                                center: .5,
                                top: 1,
                                bottom: 0
                            };
                            tickCorrection = length * orientation[scaleOptions.verticalOrientation];
                            textCorrection = textParams.y
                        } else {
                            orientation = isIndentPositive ? {
                                center: .5,
                                left: 0,
                                right: 1
                            } : {
                                center: .5,
                                left: 1,
                                right: 0
                            };
                            tickCorrection = length * orientation[scaleOptions.horizontalOrientation];
                            textCorrection = -textParams.width
                        }
                        scaleOptions.label.indentFromAxis = -indentFromTick + (isIndentPositive ? -tickCorrection + textCorrection : tickCorrection - verticalTextCorrection);
                        this._scale.updateOptions(scaleOptions)
                    },
                    _shiftScale: function(layout, scaleOptions) {
                        const canvas = (0, _extend.extend)({}, this._canvas);
                        const isHorizontal = scaleOptions.isHorizontal;
                        const scale = this._scale;
                        canvas[isHorizontal ? "left" : "top"] = this._area[isHorizontal ? "startCoord" : "endCoord"];
                        canvas[isHorizontal ? "right" : "bottom"] = canvas[isHorizontal ? "width" : "height"] - this._area[isHorizontal ? "endCoord" : "startCoord"];
                        scale.draw(canvas);
                        scale.shift({
                            left: -layout.x,
                            top: -layout.y
                        })
                    },
                    _setupCodomain: function() {
                        const geometry = this.option("geometry") || {};
                        const vertical = "vertical" === (0, _utils.normalizeEnum)(geometry.orientation);
                        this._area = {
                            vertical: vertical,
                            x: 0,
                            y: 0,
                            startCoord: -100,
                            endCoord: 100
                        };
                        this._rangeContainer.vertical = vertical;
                        this._translator.setInverted(this._getInvertedState());
                        this._translator.setCodomain(-100, 100)
                    },
                    _getScaleLayoutValue: function() {
                        return this._area[this._area.vertical ? "x" : "y"]
                    },
                    _getTicksCoefficients: function(options) {
                        const coefs = {
                            inner: 0,
                            outer: 1
                        };
                        if (this._area.vertical) {
                            if ("left" === options.horizontalOrientation) {
                                coefs.inner = 1;
                                coefs.outer = 0
                            } else if ("center" === options.horizontalOrientation) {
                                coefs.inner = coefs.outer = .5
                            }
                        } else if ("top" === options.verticalOrientation) {
                            coefs.inner = 1;
                            coefs.outer = 0
                        } else if ("center" === options.verticalOrientation) {
                            coefs.inner = coefs.outer = .5
                        }
                        return coefs
                    },
                    _correctScaleIndents: function(result, indentFromTick, textParams) {
                        const vertical = this._area.vertical;
                        if (indentFromTick >= 0) {
                            result.max += indentFromTick + textParams[vertical ? "width" : "height"]
                        } else {
                            result.min -= -indentFromTick + textParams[vertical ? "width" : "height"]
                        }
                        result.indent = textParams[vertical ? "height" : "width"] / 2
                    },
                    _measureMainElements: function(elements, scaleMeasurement) {
                        const x = this._area.x;
                        const y = this._area.y;
                        let minBound = 1e3;
                        let maxBound = 0;
                        let indent = 0;
                        const scale = this._scale;
                        (0, _iterator.each)(elements.concat(scale), (function(_, element) {
                            const bounds = element.measure ? element.measure({
                                x: x + element.getOffset(),
                                y: y + element.getOffset()
                            }) : scaleMeasurement;
                            void 0 !== bounds.max && (maxBound = _max(maxBound, bounds.max));
                            void 0 !== bounds.min && (minBound = _min(minBound, bounds.min));
                            bounds.indent > 0 && (indent = _max(indent, bounds.indent))
                        }));
                        return {
                            minBound: minBound,
                            maxBound: maxBound,
                            indent: indent
                        }
                    },
                    _applyMainLayout: function(elements, scaleMeasurement) {
                        const that = this;
                        const measurements = that._measureMainElements(elements, scaleMeasurement);
                        const area = that._area;
                        let rect;
                        let offset;
                        if (area.vertical) {
                            rect = selectRectBySizes(that._innerRect, {
                                width: measurements.maxBound - measurements.minBound
                            });
                            offset = (rect.left + rect.right) / 2 - (measurements.minBound + measurements.maxBound) / 2;
                            area.startCoord = rect.bottom - measurements.indent;
                            area.endCoord = rect.top + measurements.indent;
                            area.x = _round(area.x + offset)
                        } else {
                            rect = selectRectBySizes(that._innerRect, {
                                height: measurements.maxBound - measurements.minBound
                            });
                            offset = (rect.top + rect.bottom) / 2 - (measurements.minBound + measurements.maxBound) / 2;
                            area.startCoord = rect.left + measurements.indent;
                            area.endCoord = rect.right - measurements.indent;
                            area.y = _round(area.y + offset)
                        }
                        that._translator.setCodomain(area.startCoord, area.endCoord);
                        that._innerRect = rect
                    },
                    _getElementLayout: function(offset) {
                        return {
                            x: _round(this._area.x + offset),
                            y: _round(this._area.y + offset)
                        }
                    },
                    _getApproximateScreenRange: function() {
                        const area = this._area;
                        let s = area.vertical ? this._canvas.height : this._canvas.width;
                        s > area.totalSize && (s = area.totalSize);
                        s *= .8;
                        return s
                    },
                    _getDefaultSize: function() {
                        const geometry = this.option("geometry") || {};
                        if ("vertical" === geometry.orientation) {
                            return {
                                width: 100,
                                height: 300
                            }
                        } else {
                            return {
                                width: 300,
                                height: 100
                            }
                        }
                    },
                    _factory: (0, _object.clone)(_base_gauge.BaseGauge.prototype._factory)
                });

                function selectRectBySizes(srcRect, sizes, margins) {
                    const rect = (0, _extend.extend)({}, srcRect);
                    let step;
                    margins = margins || {};
                    if (sizes) {
                        rect.left += margins.left || 0;
                        rect.right -= margins.right || 0;
                        rect.top += margins.top || 0;
                        rect.bottom -= margins.bottom || 0;
                        if (sizes.width > 0) {
                            step = (rect.right - rect.left - sizes.width) / 2;
                            if (step > 0) {
                                rect.left += step;
                                rect.right -= step
                            }
                        }
                        if (sizes.height > 0) {
                            step = (rect.bottom - rect.top - sizes.height) / 2;
                            if (step > 0) {
                                rect.top += step;
                                rect.bottom -= step
                            }
                        }
                    }
                    return rect
                }
                const indicators = dxLinearGauge.prototype._factory.indicators = {};
                dxLinearGauge.prototype._factory.createIndicator = (0, _common.createIndicatorCreator)(indicators);
                indicators._default = linearIndicators._default;
                indicators.rectangle = linearIndicators.rectangle;
                indicators.rhombus = linearIndicators.rhombus;
                indicators.circle = linearIndicators.circle;
                indicators.trianglemarker = linearIndicators.trianglemarker;
                indicators.textcloud = linearIndicators.textcloud;
                indicators.rangebar = linearIndicators.rangebar;
                dxLinearGauge.prototype._factory.RangeContainer = _linear_range_container.default;
                (0, _component_registrator.default)("dxLinearGauge", dxLinearGauge);
                exports.default = dxLinearGauge;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        30621:
            /*!*****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/gauges/linear_indicators.js ***!
              \*****************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.trianglemarker = exports.textcloud = exports.rhombus = exports.rectangle = exports.rangebar = exports.circle = exports._default = void 0;
                var _base_indicators = __webpack_require__( /*! ./base_indicators */ 93473);
                var _utils = __webpack_require__( /*! ../core/utils */ 28779);
                const _Number = Number;
                const SimpleIndicator = _base_indicators.BaseIndicator.inherit({
                    _move: function() {
                        const delta = this._actualPosition - this._zeroPosition;
                        this._rootElement.move(this.vertical ? 0 : delta, this.vertical ? delta : 0);
                        this._trackerElement && this._trackerElement.move(this.vertical ? 0 : delta, this.vertical ? delta : 0)
                    },
                    _isEnabled: function() {
                        this.vertical = this._options.vertical;
                        return this._options.length > 0 && this._options.width > 0
                    },
                    _isVisible: function() {
                        return true
                    },
                    _getTrackerSettings: function() {
                        const options = this._options;
                        let x1;
                        let x2;
                        let y1;
                        let y2;
                        let width = options.width / 2;
                        let length = options.length / 2;
                        const p = this._zeroPosition;
                        width > 10 || (width = 10);
                        length > 10 || (length = 10);
                        if (this.vertical) {
                            x1 = options.x - length;
                            x2 = options.x + length;
                            y1 = p + width;
                            y2 = p - width
                        } else {
                            x1 = p - width;
                            x2 = p + width;
                            y1 = options.y + length;
                            y2 = options.y - length
                        }
                        return {
                            points: [x1, y1, x1, y2, x2, y2, x2, y1]
                        }
                    },
                    _render: function() {
                        this._zeroPosition = this._translator.getCodomainStart()
                    },
                    _clear: function() {
                        delete this._element
                    },
                    measure: function(layout) {
                        const p = this.vertical ? layout.x : layout.y;
                        return {
                            min: p - this._options.length / 2,
                            max: p + this._options.length / 2
                        }
                    },
                    getTooltipParameters: function() {
                        const options = this._options;
                        const p = this._actualPosition;
                        const parameters = {
                            x: p,
                            y: p,
                            value: this._currentValue,
                            color: options.color,
                            offset: options.width / 2
                        };
                        this.vertical ? parameters.x = options.x : parameters.y = options.y;
                        return parameters
                    }
                });
                exports.rectangle = SimpleIndicator.inherit({
                    _render: function() {
                        const options = this._options;
                        let x1;
                        let x2;
                        let y1;
                        let y2;
                        this.callBase();
                        const p = this._zeroPosition;
                        if (this.vertical) {
                            x1 = options.x - options.length / 2;
                            x2 = options.x + options.length / 2;
                            y1 = p + options.width / 2;
                            y2 = p - options.width / 2
                        } else {
                            x1 = p - options.width / 2;
                            x2 = p + options.width / 2;
                            y1 = options.y + options.length / 2;
                            y2 = options.y - options.length / 2
                        }
                        this._element = this._element || this._renderer.path([], "area").append(this._rootElement);
                        this._element.attr({
                            points: [x1, y1, x1, y2, x2, y2, x2, y1]
                        })
                    }
                });
                exports.rhombus = SimpleIndicator.inherit({
                    _render: function() {
                        const that = this;
                        const options = that._options;
                        let x;
                        let y;
                        let dx;
                        let dy;
                        that.callBase();
                        if (that.vertical) {
                            x = options.x;
                            y = that._zeroPosition;
                            dx = options.length / 2 || 0;
                            dy = options.width / 2 || 0
                        } else {
                            x = that._zeroPosition;
                            y = options.y;
                            dx = options.width / 2 || 0;
                            dy = options.length / 2 || 0
                        }
                        that._element = that._element || that._renderer.path([], "area").append(that._rootElement);
                        that._element.attr({
                            points: [x - dx, y, x, y - dy, x + dx, y, x, y + dy]
                        })
                    }
                });
                exports.circle = SimpleIndicator.inherit({
                    _render: function() {
                        const that = this;
                        const options = that._options;
                        let x;
                        let y;
                        that.callBase();
                        if (that.vertical) {
                            x = options.x;
                            y = that._zeroPosition
                        } else {
                            x = that._zeroPosition;
                            y = options.y
                        }
                        const r = options.length / 2 || 0;
                        that._element = that._element || that._renderer.circle().append(that._rootElement);
                        that._element.attr({
                            cx: x,
                            cy: y,
                            r: r
                        })
                    }
                });
                exports.trianglemarker = SimpleIndicator.inherit({
                    _isEnabled: function() {
                        this.vertical = this._options.vertical;
                        this._inverted = this.vertical ? "right" === (0, _utils.normalizeEnum)(this._options.horizontalOrientation) : "bottom" === (0, _utils.normalizeEnum)(this._options.verticalOrientation);
                        return this._options.length > 0 && this._options.width > 0
                    },
                    _isVisible: function() {
                        return true
                    },
                    _render: function() {
                        const that = this;
                        const options = that._options;
                        let x1;
                        let x2;
                        let y1;
                        let y2;
                        const settings = {
                            stroke: "none",
                            "stroke-width": 0,
                            "stroke-linecap": "square"
                        };
                        that.callBase();
                        if (that.vertical) {
                            x1 = options.x;
                            y1 = that._zeroPosition;
                            x2 = x1 + _Number(that._inverted ? options.length : -options.length);
                            settings.points = [x1, y1, x2, y1 - options.width / 2, x2, y1 + options.width / 2]
                        } else {
                            y1 = options.y;
                            x1 = that._zeroPosition;
                            y2 = y1 + _Number(that._inverted ? options.length : -options.length);
                            settings.points = [x1, y1, x1 - options.width / 2, y2, x1 + options.width / 2, y2]
                        }
                        if (options.space > 0) {
                            settings["stroke-width"] = Math.min(options.space, options.width / 4) || 0;
                            settings.stroke = settings["stroke-width"] > 0 ? options.containerBackgroundColor || "none" : "none"
                        }
                        that._element = that._element || that._renderer.path([], "area").append(that._rootElement);
                        that._element.attr(settings).sharp()
                    },
                    _getTrackerSettings: function() {
                        const that = this;
                        const options = that._options;
                        let width = options.width / 2;
                        let length = _Number(options.length);
                        let x1;
                        let x2;
                        let y1;
                        let y2;
                        let result;
                        width > 10 || (width = 10);
                        length > 20 || (length = 20);
                        if (that.vertical) {
                            x1 = options.x;
                            x2 = x1 + (that._inverted ? length : -length);
                            y1 = that._zeroPosition + width;
                            y2 = that._zeroPosition - width;
                            result = [x1, y1, x2, y1, x2, y2, x1, y2]
                        } else {
                            y1 = options.y;
                            y2 = y1 + (that._inverted ? length : -length);
                            x1 = that._zeroPosition - width;
                            x2 = that._zeroPosition + width;
                            result = [x1, y1, x1, y2, x2, y2, x2, y1]
                        }
                        return {
                            points: result
                        }
                    },
                    measure: function(layout) {
                        const that = this;
                        const length = _Number(that._options.length);
                        let minBound;
                        let maxBound;
                        if (that.vertical) {
                            minBound = maxBound = layout.x;
                            if (that._inverted) {
                                maxBound = minBound + length
                            } else {
                                minBound = maxBound - length
                            }
                        } else {
                            minBound = maxBound = layout.y;
                            if (that._inverted) {
                                maxBound = minBound + length
                            } else {
                                minBound = maxBound - length
                            }
                        }
                        return {
                            min: minBound,
                            max: maxBound
                        }
                    },
                    getTooltipParameters: function() {
                        const options = this._options;
                        const s = (this._inverted ? options.length : -options.length) / 2;
                        const parameters = this.callBase();
                        this.vertical ? parameters.x += s : parameters.y += s;
                        parameters.offset = options.length / 2;
                        return parameters
                    }
                });
                exports.textcloud = _base_indicators.BaseTextCloudMarker.inherit({
                    _isEnabled: function() {
                        this.vertical = this._options.vertical;
                        this._inverted = this.vertical ? "right" === (0, _utils.normalizeEnum)(this._options.horizontalOrientation) : "bottom" === (0, _utils.normalizeEnum)(this._options.verticalOrientation);
                        return true
                    },
                    _isVisible: function() {
                        return true
                    },
                    _getTextCloudOptions: function() {
                        const that = this;
                        let x = that._actualPosition;
                        let y = that._actualPosition;
                        let type;
                        if (that.vertical) {
                            x = that._options.x;
                            type = that._inverted ? "top-left" : "top-right"
                        } else {
                            y = that._options.y;
                            type = that._inverted ? "right-top" : "right-bottom"
                        }
                        return {
                            x: x,
                            y: y,
                            type: type
                        }
                    },
                    measure: function(layout) {
                        const that = this;
                        let minBound;
                        let maxBound;
                        const arrowLength = _Number(that._options.arrowLength) || 0;
                        that._measureText();
                        if (that.vertical) {
                            if (that._inverted) {
                                minBound = layout.x;
                                maxBound = layout.x + arrowLength + that._textFullWidth
                            } else {
                                minBound = layout.x - arrowLength - that._textFullWidth;
                                maxBound = layout.x
                            }
                        } else if (that._inverted) {
                            minBound = layout.y;
                            maxBound = layout.y + arrowLength + that._textFullHeight
                        } else {
                            minBound = layout.y - arrowLength - that._textFullHeight;
                            maxBound = layout.y
                        }
                        return {
                            min: minBound,
                            max: maxBound,
                            indent: 0
                        }
                    },
                    _correctCloudType(type, _ref, _ref2) {
                        let {
                            x: x,
                            y: y
                        } = _ref;
                        let {
                            width: width,
                            height: height
                        } = _ref2;
                        if ("right-top" === type || "right-bottom" === type) {
                            if (x - width < this._translator.getCodomainStart()) {
                                type = `left-${type.split("-")[1]}`
                            }
                        } else if ("top-left" === type || "top-right" === type) {
                            if (y + height > this._translator.getCodomainStart()) {
                                type = `bottom-${type.split("-")[1]}`
                            }
                        }
                        return type
                    }
                });
                exports.rangebar = exports._default = _base_indicators.BaseRangeBar.inherit({
                    _isEnabled: function() {
                        this.vertical = this._options.vertical;
                        this._inverted = this.vertical ? "right" === (0, _utils.normalizeEnum)(this._options.horizontalOrientation) : "bottom" === (0, _utils.normalizeEnum)(this._options.verticalOrientation);
                        return this._options.size > 0
                    },
                    _isVisible: function() {
                        return true
                    },
                    _createBarItem: function() {
                        return this._renderer.path([], "area").append(this._rootElement)
                    },
                    _createTracker: function() {
                        return this._renderer.path([], "area")
                    },
                    _setBarSides: function() {
                        const that = this;
                        const options = that._options;
                        const size = _Number(options.size);
                        let minSide;
                        let maxSide;
                        if (that.vertical) {
                            if (that._inverted) {
                                minSide = options.x;
                                maxSide = options.x + size
                            } else {
                                minSide = options.x - size;
                                maxSide = options.x
                            }
                        } else if (that._inverted) {
                            minSide = options.y;
                            maxSide = options.y + size
                        } else {
                            minSide = options.y - size;
                            maxSide = options.y
                        }
                        that._minSide = minSide;
                        that._maxSide = maxSide;
                        that._minBound = minSide;
                        that._maxBound = maxSide
                    },
                    _getSpace: function() {
                        const options = this._options;
                        return options.space > 0 ? _Number(options.space) : 0
                    },
                    _isTextVisible: function() {
                        const textOptions = this._options.text || {};
                        return textOptions.indent > 0 || textOptions.indent < 0
                    },
                    _getTextAlign: function() {
                        return this.vertical ? this._options.text.indent > 0 ? "left" : "right" : "center"
                    },
                    _setTextItemsSides: function() {
                        const that = this;
                        const indent = _Number(that._options.text.indent);
                        if (indent > 0) {
                            that._lineStart = that._maxSide;
                            that._lineEnd = that._maxSide + indent;
                            that._textPosition = that._lineEnd + (that.vertical ? 2 : that._textHeight / 2);
                            that._maxBound = that._textPosition + (that.vertical ? that._textWidth : that._textHeight / 2)
                        } else if (indent < 0) {
                            that._lineStart = that._minSide;
                            that._lineEnd = that._minSide + indent;
                            that._textPosition = that._lineEnd - (that.vertical ? 2 : that._textHeight / 2);
                            that._minBound = that._textPosition - (that.vertical ? that._textWidth : that._textHeight / 2)
                        }
                    },
                    _getPositions: function() {
                        const startPosition = this._startPosition;
                        const endPosition = this._endPosition;
                        const space = this._space;
                        const basePosition = this._basePosition;
                        const actualPosition = this._actualPosition;
                        let mainPosition1;
                        let mainPosition2;
                        let backPosition1;
                        let backPosition2;
                        if (startPosition < endPosition) {
                            if (basePosition < actualPosition) {
                                mainPosition1 = basePosition;
                                mainPosition2 = actualPosition
                            } else {
                                mainPosition1 = actualPosition;
                                mainPosition2 = basePosition
                            }
                            backPosition1 = mainPosition1 - space;
                            backPosition2 = mainPosition2 + space
                        } else {
                            if (basePosition > actualPosition) {
                                mainPosition1 = basePosition;
                                mainPosition2 = actualPosition
                            } else {
                                mainPosition1 = actualPosition;
                                mainPosition2 = basePosition
                            }
                            backPosition1 = mainPosition1 + space;
                            backPosition2 = mainPosition2 - space
                        }
                        return {
                            start: startPosition,
                            end: endPosition,
                            main1: mainPosition1,
                            main2: mainPosition2,
                            back1: backPosition1,
                            back2: backPosition2
                        }
                    },
                    _buildItemSettings: function(from, to) {
                        const side1 = this._minSide;
                        const side2 = this._maxSide;
                        const points = this.vertical ? [side1, from, side1, to, side2, to, side2, from] : [from, side1, from, side2, to, side2, to, side1];
                        return {
                            points: points
                        }
                    },
                    _updateTextPosition: function() {
                        this._text.attr(this.vertical ? {
                            x: this._textPosition,
                            y: this._actualPosition + this._textVerticalOffset
                        } : {
                            x: this._actualPosition,
                            y: this._textPosition + this._textVerticalOffset
                        })
                    },
                    _updateLinePosition: function() {
                        const that = this;
                        const actualPosition = that._actualPosition;
                        let side1;
                        let side2;
                        let points;
                        if (that.vertical) {
                            if (that._basePosition >= actualPosition) {
                                side1 = actualPosition;
                                side2 = actualPosition + 2
                            } else {
                                side1 = actualPosition - 2;
                                side2 = actualPosition
                            }
                            points = [that._lineStart, side1, that._lineStart, side2, that._lineEnd, side2, that._lineEnd, side1]
                        } else {
                            if (that._basePosition <= actualPosition) {
                                side1 = actualPosition - 2;
                                side2 = actualPosition
                            } else {
                                side1 = actualPosition;
                                side2 = actualPosition + 2
                            }
                            points = [side1, that._lineStart, side1, that._lineEnd, side2, that._lineEnd, side2, that._lineStart]
                        }
                        that._line.attr({
                            points: points
                        }).sharp()
                    },
                    _getTooltipPosition: function() {
                        const crossCenter = (this._minSide + this._maxSide) / 2;
                        const alongCenter = (this._basePosition + this._actualPosition) / 2;
                        return this.vertical ? {
                            x: crossCenter,
                            y: alongCenter
                        } : {
                            x: alongCenter,
                            y: crossCenter
                        }
                    },
                    measure: function(layout) {
                        const that = this;
                        const size = _Number(that._options.size);
                        const textIndent = _Number(that._options.text.indent);
                        let minBound;
                        let maxBound;
                        let indent;
                        that._measureText();
                        if (that.vertical) {
                            minBound = maxBound = layout.x;
                            if (that._inverted) {
                                maxBound += size
                            } else {
                                minBound -= size
                            }
                            if (that._hasText) {
                                indent = that._textHeight / 2;
                                if (textIndent > 0) {
                                    maxBound += textIndent + that._textWidth
                                }
                                if (textIndent < 0) {
                                    minBound += textIndent - that._textWidth
                                }
                            }
                        } else {
                            minBound = maxBound = layout.y;
                            if (that._inverted) {
                                maxBound += size
                            } else {
                                minBound -= size
                            }
                            if (that._hasText) {
                                indent = that._textWidth / 2;
                                if (textIndent > 0) {
                                    maxBound += textIndent + that._textHeight
                                }
                                if (textIndent < 0) {
                                    minBound += textIndent - that._textHeight
                                }
                            }
                        }
                        return {
                            min: minBound,
                            max: maxBound,
                            indent: indent
                        }
                    }
                })
            },
        95946:
            /*!**********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/gauges/linear_range_container.js ***!
              \**********************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _base_range_container = (e = __webpack_require__( /*! ./base_range_container */ 24286), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                var _utils = __webpack_require__( /*! ../core/utils */ 28779);
                const _Number = Number;
                const _max = Math.max;
                const LinearRangeContainer = _base_range_container.default.inherit({
                    _processOptions: function() {
                        const that = this;
                        that.vertical = that._options.vertical;
                        that._inner = that._outer = 0;
                        if (that.vertical) {
                            switch ((0, _utils.normalizeEnum)(that._options.horizontalOrientation)) {
                                case "left":
                                    that._inner = 1;
                                    break;
                                case "center":
                                    that._inner = that._outer = .5;
                                    break;
                                default:
                                    that._outer = 1
                            }
                        } else {
                            switch ((0, _utils.normalizeEnum)(that._options.verticalOrientation)) {
                                case "top":
                                    that._inner = 1;
                                    break;
                                case "center":
                                    that._inner = that._outer = .5;
                                    break;
                                default:
                                    that._outer = 1
                            }
                        }
                    },
                    _isVisible: function() {
                        return true
                    },
                    _createRange: function(range, layout) {
                        const inner = this._inner;
                        const outer = this._outer;
                        const startPosition = this._translator.translate(range.start);
                        const endPosition = this._translator.translate(range.end);
                        let points;
                        const x = layout.x;
                        const y = layout.y;
                        const startWidth = range.startWidth;
                        const endWidth = range.endWidth;
                        if (this.vertical) {
                            points = [x - startWidth * inner, startPosition, x - endWidth * inner, endPosition, x + endWidth * outer, endPosition, x + startWidth * outer, startPosition]
                        } else {
                            points = [startPosition, y + startWidth * outer, startPosition, y - startWidth * inner, endPosition, y - endWidth * inner, endPosition, y + endWidth * outer]
                        }
                        return this._renderer.path(points, "area")
                    },
                    measure: function(layout) {
                        const result = {};
                        let width;
                        result.min = result.max = layout[this.vertical ? "x" : "y"];
                        width = this._options.width;
                        width = _Number(width) || _max(_Number(width.start), _Number(width.end));
                        result.min -= this._inner * width;
                        result.max += this._outer * width;
                        return result
                    }
                });
                exports.default = LinearRangeContainer;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        20056:
            /*!*************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/gauges/theme_manager.js ***!
              \*************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _extend2 = __webpack_require__( /*! ../../core/utils/extend */ 52576);
                var _base_theme_manager = __webpack_require__( /*! ../core/base_theme_manager */ 71671);
                const _extend = _extend2.extend;
                const ThemeManager = _base_theme_manager.BaseThemeManager.inherit({
                    ctor(options) {
                        this.callBase.apply(this, arguments);
                        this._subTheme = options.subTheme
                    },
                    _initializeTheme: function() {
                        const that = this;
                        let subTheme;
                        if (that._subTheme) {
                            subTheme = _extend(true, {}, that._theme[that._subTheme], that._theme);
                            _extend(true, that._theme, subTheme)
                        }
                        that.callBase.apply(that, arguments)
                    }
                });
                exports.default = {
                    ThemeManager: ThemeManager
                };
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        72973:
            /*!*******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/gauges/tracker.js ***!
              \*******************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/core/events_engine */ 92774));
                var _class = _interopRequireDefault(__webpack_require__( /*! ../../core/class */ 55620));
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../core/dom_adapter */ 64960));
                var _wheel = __webpack_require__( /*! ../../common/core/events/core/wheel */ 37373);
                var _ready_callbacks = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/ready_callbacks */ 3122));
                var _index = __webpack_require__( /*! ../../common/core/events/utils/index */ 98834);
                var _pointer = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/pointer */ 89797));

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const EVENT_NS = "gauge-tooltip";
                const ready = _ready_callbacks.default.add;
                const Tracker = _class.default.inherit({
                    ctor: function(parameters) {
                        const that = this;
                        that._element = parameters.renderer.g().attr({
                            class: "dxg-tracker",
                            stroke: "none",
                            "stroke-width": 0,
                            fill: "#000000",
                            opacity: 1e-4
                        }).linkOn(parameters.container, {
                            name: "tracker",
                            after: "peripheral"
                        });
                        that._showTooltipCallback = function() {
                            const target = that._tooltipEvent.target;
                            const data_target = target["gauge-data-target"];
                            const data_info = target["gauge-data-info"];
                            that._targetEvent = null;
                            if (that._tooltipTarget !== target) {
                                const callback = result => {
                                    result && (that._tooltipTarget = target)
                                };
                                callback(that._callbacks["tooltip-show"](data_target, data_info, callback))
                            }
                        };
                        that._hideTooltipCallback = function() {
                            that._hideTooltipTimeout = null;
                            that._targetEvent = null;
                            if (that._tooltipTarget) {
                                that._callbacks["tooltip-hide"]();
                                that._tooltipTarget = null
                            }
                        };
                        that._dispose = function() {
                            clearTimeout(that._hideTooltipTimeout);
                            that._showTooltipCallback = that._hideTooltipCallback = that._dispose = null
                        }
                    },
                    dispose: function() {
                        this._dispose();
                        this.deactivate();
                        this._element.off("." + EVENT_NS);
                        this._element.linkOff();
                        this._element = this._context = this._callbacks = null;
                        return this
                    },
                    activate: function() {
                        this._element.linkAppend();
                        return this
                    },
                    deactivate: function() {
                        this._element.linkRemove().clear();
                        return this
                    },
                    attach: function(element, target, info) {
                        element.data({
                            "gauge-data-target": target,
                            "gauge-data-info": info
                        }).append(this._element);
                        return this
                    },
                    detach: function(element) {
                        element.remove();
                        return this
                    },
                    setTooltipState: function(state) {
                        const that = this;
                        that._element.off("." + EVENT_NS);
                        if (state) {
                            const data = {
                                tracker: that
                            };
                            that._element.on((0, _index.addNamespace)([_pointer.default.move], EVENT_NS), data, handleTooltipMouseOver).on((0, _index.addNamespace)([_pointer.default.out], EVENT_NS), data, handleTooltipMouseOut).on((0, _index.addNamespace)([_pointer.default.down], EVENT_NS), data, handleTooltipTouchStart).on((0, _index.addNamespace)([_pointer.default.up], EVENT_NS), data, handleTooltipTouchEnd).on((0, _index.addNamespace)([_wheel.name], EVENT_NS), data, handleTooltipMouseWheel)
                        }
                        return that
                    },
                    setCallbacks: function(callbacks) {
                        this._callbacks = callbacks;
                        return this
                    },
                    _showTooltip: function(event) {
                        clearTimeout(this._hideTooltipTimeout);
                        this._hideTooltipTimeout = null;
                        if (this._tooltipTarget === event.target) {
                            return
                        }
                        this._tooltipEvent = event;
                        this._showTooltipCallback()
                    },
                    _hideTooltip: function(delay) {
                        const that = this;
                        clearTimeout(that._hideTooltipTimeout);
                        if (delay) {
                            that._hideTooltipTimeout = setTimeout(that._hideTooltipCallback, delay)
                        } else {
                            that._hideTooltipCallback()
                        }
                    }
                });
                let active_touch_tooltip_tracker = null;

                function handleTooltipMouseOver(event) {
                    const tracker = event.data.tracker;
                    tracker._x = event.pageX;
                    tracker._y = event.pageY;
                    tracker._showTooltip(event)
                }

                function handleTooltipMouseOut(event) {
                    event.data.tracker._hideTooltip(100)
                }

                function handleTooltipMouseWheel(event) {
                    event.data.tracker._hideTooltip()
                }

                function handleTooltipTouchStart(event) {
                    const tracker = active_touch_tooltip_tracker = event.data.tracker;
                    tracker._touch = true;
                    handleTooltipMouseOver(event)
                }

                function handleTooltipTouchEnd() {
                    active_touch_tooltip_tracker._touch = false
                }

                function handleDocumentTooltipTouchStart(event) {
                    const tracker = active_touch_tooltip_tracker;
                    if (tracker && !tracker._touch) {
                        tracker._hideTooltip(100);
                        active_touch_tooltip_tracker = null
                    }
                }
                ready((function() {
                    _events_engine.default.subscribeGlobal(_dom_adapter.default.getDocument(), (0, _index.addNamespace)([_pointer.default.down], EVENT_NS), handleDocumentTooltipTouchStart)
                }));
                exports.default = Tracker;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        4655:
            /*!*****************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/linear_gauge.js ***!
              \*****************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _linear_gauge = (e = __webpack_require__( /*! ./gauges/linear_gauge */ 38452), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                exports.default = _linear_gauge.default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        9735:
            /*!************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/palette.js ***!
              \************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.createPalette = createPalette;
                exports.currentPalette = currentPalette;
                exports.generateColors = function(palette, count) {
                    let options = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {
                        keepLastColorInEnd: false
                    };
                    options.type = options.baseColorSet;
                    options.extensionMode = options.paletteExtensionMode;
                    return createPalette(palette, options).generateColors(count)
                };
                exports.getAccentColor = function(palette, themeDefault) {
                    palette = getPalette(palette, {
                        themeDefault: themeDefault
                    });
                    return palette.accentColor || palette[0]
                };
                exports.getDiscretePalette = function(source, size, themeDefaultPalette) {
                    const palette = size > 0 ? function(source, count) {
                        const colorCount = count - 1;
                        const sourceCount = source.length - 1;
                        const colors = [];
                        const gradient = [];
                        let i;

                        function addColor(pos) {
                            const k = sourceCount * pos;
                            const kl = _floor(k);
                            const kr = _ceil(k);
                            gradient.push(colors[kl].blend(colors[kr], k - kl).toHex())
                        }
                        for (i = 0; i <= sourceCount; ++i) {
                            colors.push(new _color.default(source[i]))
                        }
                        if (colorCount > 0) {
                            for (i = 0; i <= colorCount; ++i) {
                                addColor(i / colorCount)
                            }
                        } else {
                            addColor(.5)
                        }
                        return gradient
                    }(getPalette(source, {
                        type: "gradientSet",
                        themeDefault: themeDefaultPalette
                    }), size) : [];
                    return {
                        getColor: function(index) {
                            return palette[index] || null
                        }
                    }
                };
                exports.getGradientPalette = function(source, themeDefaultPalette) {
                    const palette = getPalette(source, {
                        type: "gradientSet",
                        themeDefault: themeDefaultPalette
                    });
                    const color1 = new _color.default(palette[0]);
                    const color2 = new _color.default(palette[1]);
                    return {
                        getColor: function(ratio) {
                            return 0 <= ratio && ratio <= 1 ? color1.blend(color2, ratio).toHex() : null
                        }
                    }
                };
                exports.getPalette = getPalette;
                exports.registerPalette = function(name, palette) {
                    const item = {};
                    let paletteName;
                    if (_isArray(palette)) {
                        item.simpleSet = palette.slice(0)
                    } else if (palette) {
                        item.simpleSet = _isArray(palette.simpleSet) ? palette.simpleSet.slice(0) : void 0;
                        item.indicatingSet = _isArray(palette.indicatingSet) ? palette.indicatingSet.slice(0) : void 0;
                        item.gradientSet = _isArray(palette.gradientSet) ? palette.gradientSet.slice(0) : void 0;
                        item.accentColor = palette.accentColor
                    }
                    if (!item.accentColor) {
                        item.accentColor = item.simpleSet && item.simpleSet[0]
                    }
                    if (item.simpleSet || item.indicatingSet || item.gradientSet) {
                        paletteName = (0, _utils.normalizeEnum)(name);
                        (0, _extend.extend)(palettes[paletteName] = palettes[paletteName] || {}, item)
                    }
                };
                var _utils = __webpack_require__( /*! ./core/utils */ 28779);
                var _extend = __webpack_require__( /*! ../core/utils/extend */ 52576);
                var _color = (e = __webpack_require__( /*! ../color */ 43101), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                var _type = __webpack_require__( /*! ../core/utils/type */ 11528);
                const _floor = Math.floor;
                const _ceil = Math.ceil;
                const _isArray = Array.isArray;
                const HIGHLIGHTING_STEP = 50;
                const DEFAULT_PALETTE = "material";
                const palettes = {
                    [DEFAULT_PALETTE]: {
                        simpleSet: ["#1db2f5", "#f5564a", "#97c95c", "#ffc720", "#eb3573", "#a63db8"],
                        indicatingSet: ["#97c95c", "#ffc720", "#f5564a"],
                        gradientSet: ["#1db2f5", "#97c95c"],
                        accentColor: "#1db2f5"
                    },
                    office: {
                        simpleSet: ["#5f8b95", "#ba4d51", "#af8a53", "#955f71", "#859666", "#7e688c"],
                        indicatingSet: ["#a3b97c", "#e1b676", "#ec7f83"],
                        gradientSet: ["#5f8b95", "#ba4d51"],
                        accentColor: "#ba4d51"
                    },
                    "harmony light": {
                        simpleSet: ["#fcb65e", "#679ec5", "#ad79ce", "#7abd5c", "#e18e92", "#b6d623", "#b7abea", "#85dbd5"],
                        indicatingSet: ["#b6d623", "#fcb65e", "#e18e92"],
                        gradientSet: ["#7abd5c", "#fcb65e"],
                        accentColor: "#679ec5"
                    },
                    "soft pastel": {
                        simpleSet: ["#60a69f", "#78b6d9", "#6682bb", "#a37182", "#eeba69", "#90ba58", "#456c68", "#7565a4"],
                        indicatingSet: ["#90ba58", "#eeba69", "#a37182"],
                        gradientSet: ["#78b6d9", "#eeba69"],
                        accentColor: "#60a69f"
                    },
                    pastel: {
                        simpleSet: ["#bb7862", "#70b3a1", "#bb626a", "#057d85", "#ab394b", "#dac599", "#153459", "#b1d2c6"],
                        indicatingSet: ["#70b3a1", "#dac599", "#bb626a"],
                        gradientSet: ["#bb7862", "#70b3a1"],
                        accentColor: "#bb7862"
                    },
                    bright: {
                        simpleSet: ["#70c92f", "#f8ca00", "#bd1550", "#e97f02", "#9d419c", "#7e4452", "#9ab57e", "#36a3a6"],
                        indicatingSet: ["#70c92f", "#f8ca00", "#bd1550"],
                        gradientSet: ["#e97f02", "#f8ca00"],
                        accentColor: "#e97f02"
                    },
                    soft: {
                        simpleSet: ["#cbc87b", "#9ab57e", "#e55253", "#7e4452", "#e8c267", "#565077", "#6babac", "#ad6082"],
                        indicatingSet: ["#9ab57e", "#e8c267", "#e55253"],
                        gradientSet: ["#9ab57e", "#e8c267"],
                        accentColor: "#565077"
                    },
                    ocean: {
                        simpleSet: ["#75c099", "#acc371", "#378a8a", "#5fa26a", "#064970", "#38c5d2", "#00a7c6", "#6f84bb"],
                        indicatingSet: ["#c8e394", "#7bc59d", "#397c8b"],
                        gradientSet: ["#acc371", "#38c5d2"],
                        accentColor: "#378a8a"
                    },
                    vintage: {
                        simpleSet: ["#dea484", "#efc59c", "#cb715e", "#eb9692", "#a85c4c", "#f2c0b5", "#c96374", "#dd956c"],
                        indicatingSet: ["#ffe5c6", "#f4bb9d", "#e57660"],
                        gradientSet: ["#efc59c", "#cb715e"],
                        accentColor: "#cb715e"
                    },
                    violet: {
                        simpleSet: ["#d1a1d1", "#eeacc5", "#7b5685", "#7e7cad", "#a13d73", "#5b41ab", "#e287e2", "#689cc1"],
                        indicatingSet: ["#d8e2f6", "#d0b2da", "#d56a8a"],
                        gradientSet: ["#eeacc5", "#7b5685"],
                        accentColor: "#7b5685"
                    },
                    carmine: {
                        simpleSet: ["#fb7764", "#73d47f", "#fed85e", "#d47683", "#dde392", "#757ab2"],
                        indicatingSet: ["#5cb85c", "#f0ad4e", "#d9534f"],
                        gradientSet: ["#fb7764", "#73d47f"],
                        accentColor: "#f05b41"
                    },
                    "dark moon": {
                        simpleSet: ["#4ddac1", "#f4c99a", "#80dd9b", "#f998b3", "#4aaaa0", "#a5aef1"],
                        indicatingSet: ["#59d8a4", "#f0ad4e", "#f9517e"],
                        gradientSet: ["#4ddac1", "#f4c99a"],
                        accentColor: "#3debd3"
                    },
                    "soft blue": {
                        simpleSet: ["#7ab8eb", "#97da97", "#facb86", "#e78683", "#839bda", "#4db7be"],
                        indicatingSet: ["#5cb85c", "#f0ad4e", "#d9534f"],
                        gradientSet: ["#7ab8eb", "#97da97"],
                        accentColor: "#7ab8eb"
                    },
                    "dark violet": {
                        simpleSet: ["#9c63ff", "#64c064", "#eead51", "#d2504b", "#4b6bbf", "#2da7b0"],
                        indicatingSet: ["#5cb85c", "#f0ad4e", "#d9534f"],
                        gradientSet: ["#9c63ff", "#64c064"],
                        accentColor: "#9c63ff"
                    },
                    "green mist": {
                        simpleSet: ["#3cbab2", "#8ed962", "#5b9d95", "#efcc7c", "#f1929f", "#4d8dab"],
                        indicatingSet: ["#72d63c", "#ffc852", "#f74a5e"],
                        gradientSet: ["#3cbab2", "#8ed962"],
                        accentColor: "#3cbab2"
                    }
                };
                let currentPaletteName;

                function currentPalette(name) {
                    if (void 0 === name) {
                        return currentPaletteName || DEFAULT_PALETTE
                    } else {
                        name = (0, _utils.normalizeEnum)(name);
                        currentPaletteName = name in palettes ? name : void 0
                    }
                }

                function getPalette(palette, parameters) {
                    parameters = parameters || {};
                    palette = palette || (void 0 === currentPaletteName ? parameters.themeDefault : currentPalette());
                    let result;
                    const type = parameters.type;
                    if (_isArray(palette)) {
                        return palette.slice(0)
                    } else {
                        if ((0, _type.isString)(palette)) {
                            result = palettes[(0, _utils.normalizeEnum)(palette)]
                        }
                        if (!result) {
                            result = palettes[currentPalette()]
                        }
                    }
                    return type ? result[type].slice(0) : result
                }

                function RingBuf(buf) {
                    let ind = 0;
                    this.next = function() {
                        const res = buf[ind++];
                        if (ind === buf.length) {
                            this.reset()
                        }
                        return res
                    };
                    this.reset = function() {
                        ind = 0
                    }
                }

                function getAlternateColorsStrategy(palette, parameters) {
                    const stepHighlight = parameters.useHighlight ? HIGHLIGHTING_STEP : 0;
                    const paletteSteps = new RingBuf([0, stepHighlight, -stepHighlight]);
                    let currentPalette = [];

                    function reset() {
                        const step = paletteSteps.next();
                        currentPalette = step ? function(originalPalette, step) {
                            const palette = [];
                            let i;
                            const ii = originalPalette.length;
                            for (i = 0; i < ii; ++i) {
                                palette.push(getNewColor(originalPalette[i], step))
                            }
                            return palette
                        }(palette, step) : palette.slice(0)
                    }
                    return {
                        getColor: function(index) {
                            const color = currentPalette[index % palette.length];
                            if (index % palette.length === palette.length - 1) {
                                reset()
                            }
                            return color
                        },
                        generateColors: function(count) {
                            const colors = [];
                            count = count || parameters.count;
                            for (let i = 0; i < count; i++) {
                                colors.push(this.getColor(i))
                            }
                            return colors
                        },
                        reset: function() {
                            paletteSteps.reset();
                            reset()
                        }
                    }
                }

                function getExtrapolateColorsStrategy(palette, parameters) {
                    return {
                        getColor: function(index, count) {
                            const paletteCount = palette.length;
                            const cycles = _floor((count - 1) / paletteCount + 1);
                            const color = palette[index % paletteCount];
                            if (cycles > 1) {
                                return function(color, cycleIndex, cycleCount) {
                                    const hsl = new _color.default(color).hsl;
                                    let l = hsl.l / 100;
                                    const diapason = cycleCount - 1 / cycleCount;
                                    let minL = l - .5 * diapason;
                                    let maxL = l + .5 * diapason;
                                    const cycleMiddle = (cycleCount - 1) / 2;
                                    const cycleDiff = cycleIndex - cycleMiddle;
                                    if (minL < Math.min(.5, .9 * l)) {
                                        minL = Math.min(.5, .9 * l)
                                    }
                                    if (maxL > Math.max(.8, l + .15 * (1 - l))) {
                                        maxL = Math.max(.8, l + .15 * (1 - l))
                                    }
                                    if (cycleDiff < 0) {
                                        l -= (minL - l) * cycleDiff / cycleMiddle
                                    } else {
                                        l += cycleDiff / cycleMiddle * (maxL - l)
                                    }
                                    hsl.l = 100 * l;
                                    return _color.default.prototype.fromHSL(hsl).toHex()
                                }(color, _floor(index / paletteCount), cycles)
                            }
                            return color
                        },
                        generateColors: function(count) {
                            const colors = [];
                            count = count || parameters.count;
                            for (let i = 0; i < count; i++) {
                                colors.push(this.getColor(i, count))
                            }
                            return colors
                        },
                        reset: function() {}
                    }
                }

                function getColorMixer(palette, parameters) {
                    const paletteCount = palette.length;
                    let extendedPalette = [];

                    function distributeColors(count, colorsCount, startIndex, distribution) {
                        const groupSize = Math.floor(count / colorsCount);
                        let extraItems = count - colorsCount * groupSize;
                        let i = startIndex;
                        let middleIndex;
                        let size;
                        while (i < startIndex + count) {
                            size = groupSize;
                            if (extraItems > 0) {
                                size += 1;
                                extraItems--
                            }
                            middleIndex = size > 2 ? Math.floor(size / 2) : 0;
                            distribution.push(i + middleIndex);
                            i += size
                        }
                        return distribution.sort((function(a, b) {
                            return a - b
                        }))
                    }

                    function getColorAndDistance(arr, startIndex, count) {
                        startIndex = (count + startIndex) % count;
                        let distance = 0;
                        for (let i = startIndex; i < 2 * count; i += 1) {
                            const index = (count + i) % count;
                            if (arr[index]) {
                                return [arr[index], distance]
                            }
                            distance++
                        }
                    }

                    function extendPalette(count) {
                        if (count <= paletteCount) {
                            return palette
                        }
                        let result = [];
                        const colorInGroups = paletteCount - 2;
                        let currentColorIndex = 0;
                        let cleanColorIndices = [];
                        if (parameters.keepLastColorInEnd) {
                            cleanColorIndices = distributeColors(count - 2, colorInGroups, 1, [0, count - 1])
                        } else {
                            cleanColorIndices = distributeColors(count - 1, paletteCount - 1, 1, [0])
                        }
                        for (let i = 0; i < count; i++) {
                            if (cleanColorIndices.indexOf(i) > -1) {
                                result[i] = palette[currentColorIndex++]
                            }
                        }
                        result = function(paletteWithEmptyColors, paletteLength) {
                            for (let i = 0; i < paletteLength; i++) {
                                const color = paletteWithEmptyColors[i];
                                if (!color) {
                                    let color1 = paletteWithEmptyColors[i - 1];
                                    if (!color1) {
                                        continue
                                    } else {
                                        const c2 = getColorAndDistance(paletteWithEmptyColors, i, paletteLength);
                                        const color2 = new _color.default(c2[0]);
                                        color1 = new _color.default(color1);
                                        for (let j = 0; j < c2[1]; j++, i++) {
                                            paletteWithEmptyColors[i] = color1.blend(color2, (j + 1) / (c2[1] + 1)).toHex()
                                        }
                                    }
                                }
                            }
                            return paletteWithEmptyColors
                        }(result, count);
                        return result
                    }
                    return {
                        getColor: function(index, count) {
                            count = count || parameters.count || paletteCount;
                            if (extendedPalette.length !== count) {
                                extendedPalette = extendPalette(count)
                            }
                            return extendedPalette[index % count]
                        },
                        generateColors: function(count, repeat) {
                            count = count || parameters.count || paletteCount;
                            if (repeat && count > paletteCount) {
                                const colors = extendPalette(paletteCount);
                                for (let i = 0; i < count - paletteCount; i++) {
                                    colors.push(colors[i])
                                }
                                return colors
                            } else {
                                return paletteCount > 0 ? extendPalette(count).slice(0, count) : []
                            }
                        },
                        reset: function() {}
                    }
                }

                function createPalette(palette, parameters, themeDefaultPalette) {
                    const paletteObj = {
                        dispose() {
                            this._extensionStrategy = null
                        },
                        getNextColor(count) {
                            return this._extensionStrategy.getColor(this._currentColor++, count)
                        },
                        generateColors(count, parameters) {
                            return this._extensionStrategy.generateColors(count, (parameters || {}).repeat)
                        },
                        reset() {
                            this._currentColor = 0;
                            this._extensionStrategy.reset();
                            return this
                        }
                    };
                    parameters = parameters || {};
                    const extensionMode = (parameters.extensionMode || "").toLowerCase();
                    const colors = getPalette(palette, {
                        type: parameters.type || "simpleSet",
                        themeDefault: themeDefaultPalette
                    });
                    if ("alternate" === extensionMode) {
                        paletteObj._extensionStrategy = getAlternateColorsStrategy(colors, parameters)
                    } else if ("extrapolate" === extensionMode) {
                        paletteObj._extensionStrategy = getExtrapolateColorsStrategy(colors, parameters)
                    } else {
                        paletteObj._extensionStrategy = getColorMixer(colors, parameters)
                    }
                    paletteObj.reset();
                    return paletteObj
                }

                function getNewColor(currentColor, step) {
                    let newColor = new _color.default(currentColor).alter(step);
                    const lightness = (color = newColor, .3 * color.r + .59 * color.g + .11 * color.b);
                    var color;
                    if (lightness > 200 || lightness < 55) {
                        newColor = new _color.default(currentColor).alter(-step / 2)
                    }
                    return newColor.toHex()
                }
            },
        4381:
            /*!**************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/pie_chart.js ***!
              \**************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _m_pie_chart = (e = __webpack_require__( /*! ../__internal/viz/m_pie_chart */ 98895), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                exports.default = _m_pie_chart.default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        11247:
            /*!****************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/polar_chart.js ***!
              \****************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _m_polar_chart = (e = __webpack_require__( /*! ../__internal/viz/m_polar_chart */ 52769), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                exports.default = _m_polar_chart.default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        30185:
            /*!*******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/range_selector.js ***!
              \*******************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _range_selector = (e = __webpack_require__( /*! ./range_selector/range_selector */ 61080), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                exports.default = _range_selector.default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        62381:
            /*!**************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/range_selector/common.js ***!
              \**************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.utils = exports.formatValue = exports.consts = exports.HEIGHT_COMPACT_MODE = void 0;
                var _smart_formatter = __webpack_require__( /*! ../axes/smart_formatter */ 38528);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 11528);
                exports.HEIGHT_COMPACT_MODE = 24;
                exports.utils = {
                    trackerSettings: {
                        fill: "grey",
                        stroke: "grey",
                        opacity: 1e-4
                    },
                    animationSettings: {
                        duration: 250
                    }
                };
                exports.consts = {
                    emptySliderMarkerText: ". . .",
                    pointerSize: 4
                };
                exports.formatValue = function(value, formatOptions, tickIntervalsInfo, valueType, type, logarithmBase) {
                    const formatObject = {
                        value: value,
                        valueText: (0, _smart_formatter.smartFormatter)(value, {
                            labelOptions: formatOptions,
                            ticks: tickIntervalsInfo ? tickIntervalsInfo.ticks : [],
                            tickInterval: tickIntervalsInfo ? tickIntervalsInfo.tickInterval : void 0,
                            dataType: valueType,
                            type: type,
                            logarithmBase: logarithmBase
                        })
                    };
                    return String((0, _type.isFunction)(formatOptions.customizeText) ? formatOptions.customizeText.call(formatObject, formatObject) : formatObject.valueText)
                }
            },
        61080:
            /*!**********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/range_selector/range_selector.js ***!
              \**********************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 92848));
                var _type2 = __webpack_require__( /*! ../../core/utils/type */ 11528);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 21274);
                var _utils = __webpack_require__( /*! ../core/utils */ 28779);
                var _date = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/date */ 41380));
                var _math = __webpack_require__( /*! ../../core/utils/math */ 50254);
                var _range = __webpack_require__( /*! ../translators/range */ 99857);
                var _base_axis = __webpack_require__( /*! ../axes/base_axis */ 99091);
                var _parse_utils = __webpack_require__( /*! ../components/parse_utils */ 60976);
                var _format_helper = _interopRequireDefault(__webpack_require__( /*! ../../format_helper */ 2082));
                var _common = __webpack_require__( /*! ./common */ 62381);
                var _sliders_controller = __webpack_require__( /*! ./sliders_controller */ 9331);
                var _tracker = __webpack_require__( /*! ./tracker */ 9358);
                var _range_view = __webpack_require__( /*! ./range_view */ 34735);
                var _series_data_source = __webpack_require__( /*! ./series_data_source */ 68006);
                var _tick_generator = __webpack_require__( /*! ../axes/tick_generator */ 64449);
                var _axes_constants = _interopRequireDefault(__webpack_require__( /*! ../axes/axes_constants */ 63885));
                var _m_base_widget = _interopRequireDefault(__webpack_require__( /*! ../../__internal/viz/core/m_base_widget */ 34506));
                var _export = __webpack_require__( /*! ../core/export */ 74754);
                var _title = __webpack_require__( /*! ../core/title */ 16216);
                var _loading_indicator = __webpack_require__( /*! ../core/loading_indicator */ 92528);
                var _data_source = __webpack_require__( /*! ../core/data_source */ 25058);

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const _max = Math.max;
                const _ceil = Math.ceil;
                const _floor = Math.floor;
                const VALUE = "value";

                function calculateMarkerHeight(renderer, value, sliderMarkerOptions) {
                    const formattedText = void 0 === value ? _common.consts.emptySliderMarkerText : (0, _common.formatValue)(value, sliderMarkerOptions);
                    const textBBox = getTextBBox(renderer, formattedText, sliderMarkerOptions.font);
                    return _ceil(textBBox.height) + 2 * sliderMarkerOptions.paddingTopBottom + _common.consts.pointerSize
                }

                function calculateScaleLabelHalfWidth(renderer, value, scaleOptions, tickIntervalsInfo) {
                    const formattedText = (0, _common.formatValue)(value, scaleOptions.label, tickIntervalsInfo, scaleOptions.valueType, scaleOptions.type, scaleOptions.logarithmBase);
                    const textBBox = getTextBBox(renderer, formattedText, scaleOptions.label.font);
                    return _ceil(textBBox.width / 2)
                }

                function calculateValueType(firstValue, secondValue) {
                    const typeFirstValue = (0, _type2.type)(firstValue);
                    const typeSecondValue = (0, _type2.type)(secondValue);
                    const validType = function(type) {
                        return typeFirstValue === type || typeSecondValue === type
                    };
                    return validType("date") ? "datetime" : validType("number") ? "numeric" : validType("string") ? "string" : ""
                }

                function showScaleMarkers(scaleOptions) {
                    return "datetime" === scaleOptions.valueType && scaleOptions.marker.visible
                }

                function checkLogarithmicOptions(options, defaultLogarithmBase, incidentOccurred) {
                    if (!options) {
                        return
                    }
                    const logarithmBase = options.logarithmBase;
                    if ("logarithmic" === options.type && logarithmBase <= 0 || logarithmBase && !(0, _type2.isNumeric)(logarithmBase)) {
                        options.logarithmBase = defaultLogarithmBase;
                        incidentOccurred("E2104")
                    } else if ("logarithmic" !== options.type) {
                        options.logarithmBase = void 0
                    }
                }

                function calculateScaleAreaHeight(renderer, scaleOptions, visibleMarkers, tickIntervalsInfo) {
                    const labelScaleOptions = scaleOptions.label;
                    const markerScaleOptions = scaleOptions.marker;
                    const placeholderHeight = scaleOptions.placeholderHeight;
                    const ticks = "semidiscrete" === scaleOptions.type ? scaleOptions.customTicks : tickIntervalsInfo.ticks;
                    const text = (0, _common.formatValue)(ticks[0], labelScaleOptions);
                    if (placeholderHeight) {
                        return placeholderHeight
                    } else {
                        return (labelScaleOptions.visible ? labelScaleOptions.topIndent + getTextBBox(renderer, text, labelScaleOptions.font).height : 0) + (visibleMarkers ? markerScaleOptions.topIndent + markerScaleOptions.separatorHeight : 0)
                    }
                }

                function getNextTickInterval(tickInterval, minorTickInterval, isDateType) {
                    if (!tickInterval) {
                        tickInterval = minorTickInterval
                    } else if (isDateType) {
                        tickInterval = _date.default.getNextDateUnit(tickInterval)
                    } else {
                        tickInterval += minorTickInterval
                    }
                    return tickInterval
                }

                function updateTickIntervals(scaleOptions, screenDelta, incidentOccurred, range) {
                    let result;
                    const min = (0, _type2.isDefined)(range.minVisible) ? range.minVisible : range.min;
                    const max = (0, _type2.isDefined)(range.maxVisible) ? range.maxVisible : range.max;
                    const categoriesInfo = scaleOptions._categoriesInfo;
                    let ticksInfo;
                    let length;
                    const bounds = {};
                    if ("semidiscrete" === scaleOptions.type) {
                        result = function(scaleOptions, min, max, screenDelta) {
                            const minorTickInterval = scaleOptions.minorTickInterval;
                            let tickInterval = scaleOptions.tickInterval;
                            let interval;
                            const isDateType = "datetime" === scaleOptions.valueType;
                            const gridSpacingFactor = scaleOptions.axisDivisionFactor || {};
                            let tickCountByInterval;
                            let tickCountByScreen;
                            if (!tickInterval) {
                                do {
                                    interval = getNextTickInterval(tickInterval, minorTickInterval, isDateType);
                                    if (tickInterval !== interval) {
                                        tickInterval = interval
                                    } else {
                                        break
                                    }
                                    if (isDateType) {
                                        interval = _date.default.dateToMilliseconds(tickInterval)
                                    }
                                    tickCountByInterval = _ceil((max - min) / interval);
                                    tickCountByScreen = _floor(screenDelta / (gridSpacingFactor[tickInterval] || 50)) || 1
                                } while (interval && tickCountByInterval > tickCountByScreen)
                            }
                            return {
                                tickInterval: tickInterval,
                                minorTickInterval: minorTickInterval,
                                bounds: {
                                    minVisible: min,
                                    maxVisible: max
                                },
                                ticks: []
                            }
                        }(scaleOptions, min, max, screenDelta)
                    } else {
                        ticksInfo = (0, _tick_generator.tickGenerator)({
                            axisType: scaleOptions.type,
                            dataType: scaleOptions.valueType,
                            logBase: scaleOptions.logarithmBase,
                            allowNegatives: true,
                            linearThreshold: Math.abs(scaleOptions.linearThreshold || 0),
                            axisDivisionFactor: scaleOptions.axisDivisionFactor,
                            minorAxisDivisionFactor: scaleOptions.minorAxisDivisionFactor,
                            calculateMinors: true,
                            allowDecimals: scaleOptions.allowDecimals,
                            endOnTick: scaleOptions.endOnTick,
                            incidentOccurred: incidentOccurred,
                            rangeIsEmpty: range.isEmpty()
                        })({
                            min: min,
                            max: max,
                            categories: (0, _type2.isDefined)(categoriesInfo) ? categoriesInfo.categories : []
                        }, screenDelta, scaleOptions.tickInterval, scaleOptions.forceUserTickInterval, void 0, scaleOptions.minorTickInterval, scaleOptions.minorTickCount);
                        length = ticksInfo.ticks.length;
                        bounds.minVisible = ticksInfo.ticks[0] < min ? ticksInfo.ticks[0] : min;
                        bounds.maxVisible = ticksInfo.ticks[length - 1] > max ? ticksInfo.ticks[length - 1] : max;
                        result = {
                            tickInterval: ticksInfo.tickInterval,
                            minorTickInterval: 0 === scaleOptions.minorTickInterval ? 0 : ticksInfo.minorTickInterval,
                            bounds: bounds,
                            ticks: ticksInfo.ticks
                        }
                    }
                    return result
                }

                function getFirstDayOfWeek(options) {
                    var _options$workWeek;
                    return null === (_options$workWeek = options.workWeek) || void 0 === _options$workWeek ? void 0 : _options$workWeek[0]
                }

                function getTextBBox(renderer, text, fontOptions) {
                    const textElement = renderer.text(text, -1e3, -1e3).css((0, _utils.patchFontOptions)(fontOptions)).append(renderer.root);
                    const textBBox = textElement.getBBox();
                    textElement.remove();
                    return textBBox
                }

                function updateScaleOptions(scaleOptions, seriesDataSource, translatorRange, tickIntervalsInfo, checkDateMarkerVisibility) {
                    let bounds;
                    let isEmptyInterval;
                    const categoriesInfo = scaleOptions._categoriesInfo;
                    let intervals;
                    const isDateTime = "datetime" === scaleOptions.valueType;
                    if (seriesDataSource && !seriesDataSource.isEmpty() && !translatorRange.isEmpty()) {
                        bounds = tickIntervalsInfo.bounds;
                        translatorRange.addRange(bounds);
                        scaleOptions.startValue = translatorRange.invert ? bounds.maxVisible : bounds.minVisible;
                        scaleOptions.endValue = translatorRange.invert ? bounds.minVisible : bounds.maxVisible
                    }
                    scaleOptions.marker.visible = checkDateMarkerVisibility(isDateTime && -1 === scaleOptions.type.indexOf("discrete"), scaleOptions.marker.visible, scaleOptions.startValue, scaleOptions.endValue, tickIntervalsInfo.tickInterval);
                    if (categoriesInfo) {
                        scaleOptions.startValue = categoriesInfo.start;
                        scaleOptions.endValue = categoriesInfo.end
                    }
                    if (-1 === scaleOptions.type.indexOf("discrete")) {
                        isEmptyInterval = (0, _type2.isDate)(scaleOptions.startValue) && (0, _type2.isDate)(scaleOptions.endValue) && scaleOptions.startValue.getTime() === scaleOptions.endValue.getTime() || scaleOptions.startValue === scaleOptions.endValue
                    }
                    scaleOptions.isEmpty = (start = scaleOptions.startValue, end = scaleOptions.endValue, !(0, _type2.isDefined)(start) || !(0, _type2.isDefined)(end)) || isEmptyInterval;
                    var start, end;
                    if (scaleOptions.isEmpty) {
                        scaleOptions.startValue = scaleOptions.endValue = void 0
                    } else {
                        scaleOptions.minorTickInterval = tickIntervalsInfo.minorTickInterval;
                        scaleOptions.tickInterval = tickIntervalsInfo.tickInterval;
                        if (isDateTime && (!(0, _type2.isDefined)(scaleOptions.label.format) || "semidiscrete" === scaleOptions.type && scaleOptions.minorTickInterval !== scaleOptions.tickInterval)) {
                            if ("discrete" === scaleOptions.type) {
                                scaleOptions.label.format = _format_helper.default.getDateFormatByTicks(tickIntervalsInfo.ticks)
                            } else if (!scaleOptions.marker.visible) {
                                scaleOptions.label.format = _format_helper.default.getDateFormatByTickInterval(scaleOptions.startValue, scaleOptions.endValue, scaleOptions.tickInterval)
                            } else {
                                scaleOptions.label.format = _date.default.getDateFormatByTickInterval(scaleOptions.tickInterval)
                            }
                        }
                    }
                    if ("semidiscrete" === scaleOptions.type) {
                        intervals = function(options) {
                            let min = options.startValue;
                            let max = options.endValue;
                            const isDate = "datetime" === options.valueType;
                            const firstDayOfWeek = getFirstDayOfWeek(options);
                            const tickInterval = options.tickInterval;
                            const res = {
                                intervals: []
                            };
                            if (!(0, _type2.isDefined)(min) || !(0, _type2.isDefined)(max)) {
                                return res
                            }
                            res.intervals = _date.default.getSequenceByInterval(min, max, options.minorTickInterval);
                            if (tickInterval !== options.minorTickInterval) {
                                res.altIntervals = res.intervals;
                                min = correctValueByInterval(min, isDate, tickInterval, firstDayOfWeek);
                                max = correctValueByInterval(max, isDate, tickInterval, firstDayOfWeek);
                                res.intervals = _date.default.getSequenceByInterval(min, max, tickInterval);
                                res.intervals[0] = res.altIntervals[0]
                            }
                            return res
                        }(scaleOptions);
                        scaleOptions.customMinorTicks = intervals.altIntervals;
                        scaleOptions.customTicks = intervals.intervals;
                        scaleOptions.customBoundTicks = [scaleOptions.customTicks[0]]
                    }
                }

                function correctValueByInterval(value, isDate, interval, firstDayOfWeek) {
                    if ((0, _type2.isDefined)(value)) {
                        value = isDate ? _date.default.correctDateWithUnitBeginning(new Date(value), interval, null, firstDayOfWeek) : (0, _math.adjust)(_floor((0, _math.adjust)(value / interval)) * interval)
                    }
                    return value
                }

                function getPrecisionForSlider(startValue, endValue, screenDelta) {
                    const d = Math.abs(endValue - startValue) / screenDelta;
                    const tail = d - _floor(d);
                    return tail > 0 ? _ceil(Math.abs((0, _math.adjust)((0, _utils.getLog)(tail, 10)))) : 0
                }
                const dxRangeSelector = _m_base_widget.default.inherit({
                    _toggleParentsScrollSubscription() {},
                    _eventsMap: {
                        onValueChanged: {
                            name: "valueChanged"
                        }
                    },
                    _rootClassPrefix: "dxrs",
                    _rootClass: "dxrs-range-selector",
                    _dataIsReady: function() {
                        return this._dataIsLoaded()
                    },
                    _initialChanges: ["DATA_SOURCE", "VALUE"],
                    _themeDependentChanges: ["MOSTLY_TOTAL"],
                    _themeSection: "rangeSelector",
                    _fontFields: ["scale.label.font", "sliderMarker.font"],
                    _initCore: function() {
                        const that = this;
                        const renderer = that._renderer;
                        const root = renderer.root;
                        root.css({
                            "touch-action": "pan-y"
                        });
                        that._clipRect = renderer.clipRect();
                        const rangeViewGroup = renderer.g().attr({
                            class: "dxrs-view"
                        }).append(root);
                        const slidersGroup = renderer.g().attr({
                            class: "dxrs-slidersContainer",
                            "clip-path": that._clipRect.id
                        }).append(root);
                        const scaleGroup = renderer.g().attr({
                            class: "dxrs-scale",
                            "clip-path": that._clipRect.id
                        }).append(root);
                        const labelsAxesGroup = renderer.g().attr({
                            class: "dxrs-scale-elements",
                            "clip-path": that._clipRect.id
                        }).append(root);
                        const scaleBreaksGroup = renderer.g().attr({
                            class: "dxrs-scale-breaks"
                        }).append(root);
                        const trackersGroup = renderer.g().attr({
                            class: "dxrs-trackers"
                        }).append(root);
                        that._axis = new AxisWrapper({
                            renderer: renderer,
                            root: scaleGroup,
                            scaleBreaksGroup: scaleBreaksGroup,
                            labelsAxesGroup: labelsAxesGroup,
                            updateSelectedRange: function(range, e) {
                                that.setValue((0, _utils.convertVisualRangeObject)(range), e)
                            },
                            incidentOccurred: that._incidentOccurred
                        });
                        that._rangeView = new _range_view.RangeView({
                            renderer: renderer,
                            root: rangeViewGroup,
                            translator: that._axis.getTranslator()
                        });
                        that._slidersController = new _sliders_controller.SlidersController({
                            renderer: renderer,
                            root: slidersGroup,
                            trackersGroup: trackersGroup,
                            updateSelectedRange: function(range, lastSelectedRange, e) {
                                if (!that._rangeOption) {
                                    that.option(VALUE, (0, _utils.convertVisualRangeObject)(range, (0, _type2.isPlainObject)(that._options.silent(VALUE))))
                                }
                                that._eventTrigger("valueChanged", {
                                    value: (0, _utils.convertVisualRangeObject)(range),
                                    previousValue: (0, _utils.convertVisualRangeObject)(lastSelectedRange),
                                    event: e
                                })
                            },
                            axis: that._axis,
                            translator: that._axis.getTranslator()
                        });
                        that._tracker = new _tracker.Tracker({
                            renderer: renderer,
                            controller: that._slidersController
                        })
                    },
                    _getDefaultSize: function() {
                        return {
                            width: 400,
                            height: 160
                        }
                    },
                    _disposeCore: function() {
                        this._axis.dispose();
                        this._slidersController.dispose();
                        this._tracker.dispose()
                    },
                    _applySize: function(rect) {
                        this._clientRect = rect.slice();
                        this._change(["MOSTLY_TOTAL"])
                    },
                    _optionChangesMap: {
                        scale: "SCALE",
                        value: "VALUE",
                        dataSource: "DATA_SOURCE"
                    },
                    _optionChangesOrder: ["SCALE", "DATA_SOURCE"],
                    _change_SCALE: function() {
                        this._change(["MOSTLY_TOTAL"])
                    },
                    _setValueByDataSource() {
                        const that = this;
                        const options = that._options.silent();
                        const axis = that._axis;
                        if (options.dataSource) {
                            let selectedRangeUpdateMode = that.option("selectedRangeUpdateMode");
                            const value = that.getValue();
                            const valueIsReady = (0, _type2.isDefined)(value[0]) && (0, _type2.isDefined)(value[1]);
                            if ((0, _type2.isDefined)(selectedRangeUpdateMode)) {
                                selectedRangeUpdateMode = (0, _utils.normalizeEnum)(selectedRangeUpdateMode);
                                that.__skipAnimation = true
                            } else if (valueIsReady && !that._dataSourceIsAsync) {
                                selectedRangeUpdateMode = "reset"
                            }
                            if ("auto" === selectedRangeUpdateMode && valueIsReady) {
                                const rangesInfo = axis.allScaleSelected(value);
                                if (rangesInfo.startValue && rangesInfo.endValue) {
                                    selectedRangeUpdateMode = "reset"
                                } else if (rangesInfo.endValue) {
                                    selectedRangeUpdateMode = "shift"
                                } else {
                                    selectedRangeUpdateMode = "keep"
                                }
                            }
                            if ("reset" === selectedRangeUpdateMode) {
                                options[VALUE] = null
                            } else if ("shift" === selectedRangeUpdateMode && valueIsReady) {
                                const value = that.getValue();
                                that.__skipAnimation = true;
                                options[VALUE] = {
                                    length: axis.getVisualRangeLength({
                                        minVisible: value[0],
                                        maxVisible: value[1]
                                    })
                                }
                            } else if ("keep" === selectedRangeUpdateMode) {
                                that.__skipAnimation = true
                            }
                        }
                        that._dataSourceIsAsync = void 0
                    },
                    _change_DATA_SOURCE: function() {
                        if (this._options.silent("dataSource")) {
                            this._updateDataSource()
                        }
                    },
                    _customChangesOrder: ["MOSTLY_TOTAL", "VALUE", "SLIDER_SELECTION"],
                    _change_MOSTLY_TOTAL: function() {
                        this._applyMostlyTotalChange()
                    },
                    _change_SLIDER_SELECTION: function() {
                        const value = this._options.silent(VALUE);
                        this._slidersController.setSelectedRange(value && (0, _utils.getVizRangeObject)(value))
                    },
                    _change_VALUE: function() {
                        const that = this;
                        const option = that._rangeOption;
                        that._dataSourceIsAsync = !that._dataIsReady();
                        if (option) {
                            that._options.silent(VALUE, option);
                            that.setValue(option)
                        }
                    },
                    _validateRange: function(start, end) {
                        const ensureValueInvalid = value => (0, _type2.isDefined)(value) && !this._axis.getTranslator().isValid(value);
                        if (this._dataIsReady() && (ensureValueInvalid(start) || ensureValueInvalid(end))) {
                            this._incidentOccurred("E2203")
                        }
                    },
                    _applyChanges: function() {
                        const that = this;
                        const value = that._options.silent(VALUE);
                        if (that._changes.has("VALUE") && value) {
                            that._rangeOption = value
                        }
                        that.callBase.apply(that, arguments);
                        that._rangeOption = null;
                        that.__isResizing = that.__skipAnimation = false
                    },
                    _applyMostlyTotalChange: function() {
                        const renderer = this._renderer;
                        const rect = this._clientRect;
                        let currentAnimationEnabled;
                        const canvas = {
                            left: rect[0],
                            top: rect[1],
                            width: rect[2] - rect[0],
                            height: rect[3] - rect[1]
                        };
                        if (this.__isResizing || this.__skipAnimation) {
                            currentAnimationEnabled = renderer.animationEnabled();
                            renderer.updateAnimationOptions({
                                enabled: false
                            })
                        }
                        this._clipRect.attr({
                            x: rect[0],
                            y: rect[1],
                            width: rect[2] - rect[0],
                            height: rect[3] - rect[1]
                        });
                        this._axis.getTranslator().update(new _range.Range, canvas, {
                            isHorizontal: true
                        });
                        this._updateContent({
                            left: rect[0],
                            top: rect[1],
                            width: rect[2] - rect[0],
                            height: rect[3] - rect[1]
                        });
                        if (this.__isResizing || this.__skipAnimation) {
                            renderer.updateAnimationOptions({
                                enabled: currentAnimationEnabled
                            })
                        }
                        this._drawn()
                    },
                    _dataSourceChangedHandler: function() {
                        this._setValueByDataSource();
                        this._requestChange(["MOSTLY_TOTAL"])
                    },
                    _completeSeriesDataSourceCreation(scaleOptions, seriesDataSource) {
                        const rect = this._clientRect;
                        const canvas = {
                            left: rect[0],
                            top: rect[1],
                            width: rect[2] - rect[0],
                            height: rect[3] - rect[1]
                        };
                        this._axis.updateOptions((0, _extend.extend)({}, scaleOptions, {
                            isHorizontal: true,
                            label: {}
                        }));
                        seriesDataSource.isShowChart() && this._axis.setMarginOptions(seriesDataSource.getMarginOptions(canvas));
                        this._axis.updateCanvas(canvas);
                        seriesDataSource.createPoints()
                    },
                    _updateContent: function(canvas) {
                        const that = this;
                        const chartOptions = that.option("chart");
                        const seriesDataSource = that._createSeriesDataSource(chartOptions);
                        const isCompactMode = !(seriesDataSource && seriesDataSource.isShowChart() || that.option("background.image.url"));
                        const scaleOptions = function(scaleOption, calculatedValueType, incidentOccurred, containerColor) {
                            let parsedValue = 0;
                            let valueType = (0, _parse_utils.correctValueType)((0, _utils.normalizeEnum)(scaleOption.valueType));
                            const validateStartEndValues = function(field, parser) {
                                const messageToIncidentOccurred = "startValue" === field ? "start" : "end";
                                if ((0, _type2.isDefined)(scaleOption[field])) {
                                    parsedValue = parser(scaleOption[field]);
                                    if ((0, _type2.isDefined)(parsedValue)) {
                                        scaleOption[field] = parsedValue
                                    } else {
                                        scaleOption[field] = void 0;
                                        incidentOccurred("E2202", [messageToIncidentOccurred])
                                    }
                                }
                            };
                            valueType = calculatedValueType || valueType;
                            if (!valueType) {
                                valueType = calculateValueType(scaleOption.startValue, scaleOption.endValue) || "numeric"
                            }
                            if ("string" === valueType || scaleOption.categories) {
                                scaleOption.type = "discrete";
                                valueType = "string"
                            }
                            scaleOption.containerColor = containerColor;
                            scaleOption.valueType = valueType;
                            scaleOption.dataType = valueType;
                            const parser = (0, _parse_utils.getParser)(valueType);
                            validateStartEndValues("startValue", parser);
                            validateStartEndValues("endValue", parser);
                            checkLogarithmicOptions(scaleOption, 10, incidentOccurred);
                            if (!scaleOption.type) {
                                scaleOption.type = "continuous"
                            }
                            scaleOption.parser = parser;
                            if ("semidiscrete" === scaleOption.type) {
                                scaleOption.minorTick.visible = false;
                                scaleOption.minorTickInterval = scaleOption.minRange;
                                scaleOption.marker.visible = false;
                                scaleOption.maxRange = void 0
                            }
                            scaleOption.forceUserTickInterval |= (0, _type2.isDefined)(scaleOption.tickInterval) && !(0, _type2.isDefined)(scaleOption.axisDivisionFactor);
                            scaleOption.axisDivisionFactor = (0, _type2.isDefined)(scaleOption.axisDivisionFactor) ? scaleOption.axisDivisionFactor : 30;
                            scaleOption.minorAxisDivisionFactor = (0, _type2.isDefined)(scaleOption.minorAxisDivisionFactor) ? scaleOption.minorAxisDivisionFactor : 15;
                            return scaleOption
                        }(that._getOption("scale"), seriesDataSource && seriesDataSource.getCalculatedValueType(), that._incidentOccurred, this._getOption("containerBackgroundColor", true));
                        seriesDataSource && that._completeSeriesDataSourceCreation(scaleOptions, seriesDataSource);
                        const argTranslatorRange = function(seriesDataSource, scaleOptions) {
                            let minValue;
                            let maxValue;
                            let inverted = false;
                            let startValue = scaleOptions.startValue;
                            let endValue = scaleOptions.endValue;
                            let categories;
                            let categoriesInfo;
                            let translatorRange = seriesDataSource ? seriesDataSource.getBoundRange().arg : new _range.Range;
                            let rangeForCategories;
                            const isDate = "datetime" === scaleOptions.valueType;
                            const firstDayOfWeek = getFirstDayOfWeek(scaleOptions);
                            const minRange = scaleOptions.minRange;
                            if ("discrete" === scaleOptions.type) {
                                rangeForCategories = new _range.Range({
                                    minVisible: startValue,
                                    maxVisible: endValue
                                });
                                rangeForCategories.addRange(translatorRange);
                                translatorRange = rangeForCategories;
                                categories = seriesDataSource ? seriesDataSource.argCategories : scaleOptions.categories || startValue && endValue && [startValue, endValue];
                                categories = categories || [];
                                scaleOptions._categoriesInfo = categoriesInfo = (0, _utils.getCategoriesInfo)(categories, startValue, endValue)
                            }
                            if ("semidiscrete" === scaleOptions.type) {
                                startValue = scaleOptions.startValue = correctValueByInterval(scaleOptions.startValue, isDate, minRange, firstDayOfWeek);
                                endValue = scaleOptions.endValue = correctValueByInterval(scaleOptions.endValue, isDate, minRange, firstDayOfWeek);
                                translatorRange.minVisible = correctValueByInterval(translatorRange.minVisible, isDate, minRange, firstDayOfWeek);
                                translatorRange.maxVisible = correctValueByInterval(translatorRange.maxVisible, isDate, minRange, firstDayOfWeek);
                                translatorRange.min = correctValueByInterval(translatorRange.min, isDate, minRange, firstDayOfWeek);
                                translatorRange.max = correctValueByInterval(translatorRange.max, isDate, minRange, firstDayOfWeek)
                            }
                            if ((0, _type2.isDefined)(startValue) && (0, _type2.isDefined)(endValue)) {
                                inverted = categoriesInfo ? categoriesInfo.inverted : startValue > endValue;
                                minValue = categoriesInfo ? categoriesInfo.start : inverted ? endValue : startValue;
                                maxValue = categoriesInfo ? categoriesInfo.end : inverted ? startValue : endValue
                            } else if ((0, _type2.isDefined)(startValue) || (0, _type2.isDefined)(endValue)) {
                                minValue = startValue;
                                maxValue = endValue
                            } else if (categoriesInfo) {
                                minValue = categoriesInfo.start;
                                maxValue = categoriesInfo.end
                            }
                            translatorRange.addRange({
                                invert: inverted,
                                min: minValue,
                                max: maxValue,
                                minVisible: minValue,
                                maxVisible: maxValue,
                                dataType: scaleOptions.valueType
                            });
                            translatorRange.addRange({
                                categories: !seriesDataSource ? categories : void 0,
                                base: scaleOptions.logarithmBase,
                                axisType: scaleOptions.type,
                                dataType: scaleOptions.valueType
                            });
                            seriesDataSource && translatorRange.sortCategories(categories);
                            return translatorRange
                        }(seriesDataSource, scaleOptions);
                        const tickIntervalsInfo = updateTickIntervals(scaleOptions, canvas.width, that._incidentOccurred, argTranslatorRange);
                        const chartThemeManager = seriesDataSource && seriesDataSource.isShowChart() && seriesDataSource.getThemeManager();
                        if (chartThemeManager) {
                            checkLogarithmicOptions(chartOptions && chartOptions.valueAxis, chartThemeManager.getOptions("valueAxis").logarithmBase, that._incidentOccurred)
                        }
                        updateScaleOptions(scaleOptions, seriesDataSource, argTranslatorRange, tickIntervalsInfo, (screenDelta = canvas.width, function(isDateScale, isMarkerVisible, min, max, tickInterval) {
                            if (isMarkerVisible && isDateScale) {
                                if (!(0, _type2.isDefined)(tickInterval) || tickInterval.years || tickInterval.months >= 6 || screenDelta / 50 < _ceil((max - min) / _date.default.dateToMilliseconds("year")) + 1) {
                                    isMarkerVisible = false
                                }
                            }
                            return isMarkerVisible
                        }));
                        var screenDelta;
                        ! function(translatorRange, scaleOptions) {
                            let intervalX = scaleOptions.minorTickInterval || scaleOptions.tickInterval;
                            if ("datetime" === scaleOptions.valueType) {
                                intervalX = _date.default.dateToMilliseconds(intervalX)
                            }
                            translatorRange.addRange({
                                interval: intervalX
                            })
                        }(argTranslatorRange, scaleOptions);
                        const sliderMarkerOptions = that._prepareSliderMarkersOptions(scaleOptions, canvas.width, tickIntervalsInfo, argTranslatorRange);
                        const indents = function(renderer, scale, sliderMarkerOptions, indentOptions, tickIntervalsInfo) {
                            let leftMarkerHeight;
                            let leftScaleLabelWidth = 0;
                            let rightScaleLabelWidth = 0;
                            let rightMarkerHeight;
                            let placeholderWidthLeft;
                            let placeholderWidthRight;
                            let placeholderHeight;
                            const ticks = "semidiscrete" === scale.type ? scale.customTicks : tickIntervalsInfo.ticks;
                            let startTickValue;
                            let endTickValue;
                            indentOptions = indentOptions || {};
                            placeholderWidthLeft = indentOptions.left;
                            placeholderWidthRight = indentOptions.right;
                            placeholderHeight = sliderMarkerOptions.placeholderHeight;
                            if (sliderMarkerOptions.visible) {
                                leftMarkerHeight = calculateMarkerHeight(renderer, scale.startValue, sliderMarkerOptions);
                                rightMarkerHeight = calculateMarkerHeight(renderer, scale.endValue, sliderMarkerOptions);
                                if (void 0 === placeholderHeight) {
                                    placeholderHeight = _max(leftMarkerHeight, rightMarkerHeight)
                                }
                            }
                            if (scale.label.visible) {
                                startTickValue = (0, _type2.isDefined)(scale.startValue) ? ticks[0] : void 0;
                                endTickValue = (0, _type2.isDefined)(scale.endValue) ? ticks[ticks.length - 1] : void 0;
                                leftScaleLabelWidth = calculateScaleLabelHalfWidth(renderer, startTickValue, scale, tickIntervalsInfo);
                                rightScaleLabelWidth = calculateScaleLabelHalfWidth(renderer, endTickValue, scale, tickIntervalsInfo)
                            }
                            placeholderWidthLeft = void 0 !== placeholderWidthLeft ? placeholderWidthLeft : leftScaleLabelWidth;
                            placeholderWidthRight = (void 0 !== placeholderWidthRight ? placeholderWidthRight : rightScaleLabelWidth) || 1;
                            return {
                                left: placeholderWidthLeft,
                                right: placeholderWidthRight,
                                top: placeholderHeight || 0,
                                bottom: 0
                            }
                        }(that._renderer, scaleOptions, sliderMarkerOptions, that.option("indent"), tickIntervalsInfo);
                        const rangeContainerCanvas = {
                            left: canvas.left + indents.left,
                            top: canvas.top + indents.top,
                            width: canvas.left + indents.left + _max(canvas.width - indents.left - indents.right, 1),
                            height: _max(!isCompactMode ? canvas.height - indents.top - indents.bottom - calculateScaleAreaHeight(that._renderer, scaleOptions, showScaleMarkers(scaleOptions), tickIntervalsInfo) : _common.HEIGHT_COMPACT_MODE, 0),
                            right: 0,
                            bottom: 0
                        };
                        that._axis.update(scaleOptions, isCompactMode, rangeContainerCanvas, argTranslatorRange, seriesDataSource);
                        scaleOptions.minorTickInterval = scaleOptions.isEmpty ? 0 : scaleOptions.minorTickInterval;
                        that._updateElements(scaleOptions, sliderMarkerOptions, isCompactMode, rangeContainerCanvas, seriesDataSource);
                        if (chartThemeManager) {
                            chartThemeManager.dispose()
                        }
                    },
                    _updateElements: function(scaleOptions, sliderMarkerOptions, isCompactMode, canvas, seriesDataSource) {
                        const behavior = this._getOption("behavior");
                        const shutterOptions = this._getOption("shutter");
                        const isNotSemiDiscrete = "semidiscrete" !== scaleOptions.type;
                        shutterOptions.color = shutterOptions.color || this._getOption("containerBackgroundColor", true);
                        this._rangeView.update(this.option("background"), this._themeManager.theme("background"), canvas, isCompactMode, behavior.animationEnabled && this._renderer.animationEnabled(), seriesDataSource);
                        this._isUpdating = true;
                        this._slidersController.update([canvas.top, canvas.top + canvas.height], behavior, isCompactMode, this._getOption("sliderHandle"), sliderMarkerOptions, shutterOptions, {
                            minRange: isNotSemiDiscrete ? this.option("scale.minRange") : void 0,
                            maxRange: isNotSemiDiscrete ? this.option("scale.maxRange") : void 0
                        }, this._axis.getFullTicks(), this._getOption("selectedRangeColor", true));
                        this._requestChange(["SLIDER_SELECTION"]);
                        this._isUpdating = false;
                        this._tracker.update(!this._axis.getTranslator().getBusinessRange().isEmpty(), behavior)
                    },
                    _createSeriesDataSource: function(chartOptions) {
                        const that = this;
                        let seriesDataSource;
                        const dataSource = that._dataSourceItems();
                        const scaleOptions = that._getOption("scale");
                        const valueType = scaleOptions.valueType || calculateValueType(scaleOptions.startValue, scaleOptions.endValue);
                        const valueAxis = new _base_axis.Axis({
                            renderer: that._renderer,
                            axisType: "xyAxes",
                            drawingType: "linear"
                        });
                        valueAxis.updateOptions({
                            isHorizontal: false,
                            label: {},
                            categoriesSortingMethod: that._getOption("chart").valueAxis.categoriesSortingMethod
                        });
                        if (dataSource || chartOptions && chartOptions.series) {
                            chartOptions = (0, _extend.extend)({}, chartOptions, {
                                theme: that.option("theme")
                            });
                            seriesDataSource = new _series_data_source.SeriesDataSource({
                                renderer: that._renderer,
                                dataSource: dataSource,
                                valueType: (0, _utils.normalizeEnum)(valueType),
                                axisType: scaleOptions.type,
                                chart: chartOptions,
                                dataSourceField: that.option("dataSourceField"),
                                incidentOccurred: that._incidentOccurred,
                                categories: scaleOptions.categories,
                                argumentAxis: that._axis,
                                valueAxis: valueAxis
                            })
                        }
                        return seriesDataSource
                    },
                    _prepareSliderMarkersOptions: function(scaleOptions, screenDelta, tickIntervalsInfo, argRange) {
                        const minorTickInterval = tickIntervalsInfo.minorTickInterval;
                        const tickInterval = tickIntervalsInfo.tickInterval;
                        let interval = tickInterval;
                        const endValue = scaleOptions.endValue;
                        const startValue = scaleOptions.startValue;
                        const sliderMarkerOptions = this._getOption("sliderMarker");
                        const doNotSnap = !this._getOption("behavior").snapToTicks;
                        const isTypeDiscrete = "discrete" === scaleOptions.type;
                        const isValueTypeDatetime = "datetime" === scaleOptions.valueType;
                        sliderMarkerOptions.borderColor = this._getOption("containerBackgroundColor", true);
                        if (!sliderMarkerOptions.format && !argRange.isEmpty()) {
                            if (doNotSnap && (0, _type2.isNumeric)(scaleOptions.startValue)) {
                                sliderMarkerOptions.format = {
                                    type: "fixedPoint",
                                    precision: getPrecisionForSlider(startValue, endValue, screenDelta)
                                }
                            }
                            if (isValueTypeDatetime && !isTypeDiscrete) {
                                if ((0, _type2.isDefined)(minorTickInterval) && 0 !== minorTickInterval) {
                                    interval = function(tickInterval, minorTickInterval, withCorrection) {
                                        let interval = _date.default.getDateUnitInterval(minorTickInterval);
                                        const majorUnit = _date.default.getDateUnitInterval(tickInterval);
                                        const idx = _date.default.dateUnitIntervals.indexOf(interval);
                                        if (withCorrection && interval === majorUnit && idx > 0) {
                                            interval = _date.default.dateUnitIntervals[idx - 1]
                                        }
                                        return interval
                                    }(tickInterval, minorTickInterval, doNotSnap)
                                }
                                if (!scaleOptions.marker.visible) {
                                    if ((0, _type2.isDefined)(startValue) && (0, _type2.isDefined)(endValue)) {
                                        sliderMarkerOptions.format = _format_helper.default.getDateFormatByTickInterval(startValue, endValue, interval)
                                    }
                                } else {
                                    sliderMarkerOptions.format = _date.default.getDateFormatByTickInterval(interval)
                                }
                            }
                            if (isValueTypeDatetime && isTypeDiscrete && tickIntervalsInfo.ticks.length) {
                                sliderMarkerOptions.format = _format_helper.default.getDateFormatByTicks(tickIntervalsInfo.ticks)
                            }
                        }
                        return sliderMarkerOptions
                    },
                    getValue: function() {
                        return (0, _utils.convertVisualRangeObject)(this._slidersController.getSelectedRange())
                    },
                    setValue: function(value, e) {
                        const visualRange = (0, _utils.getVizRangeObject)(value);
                        if (!this._isUpdating && value) {
                            this._validateRange(visualRange.startValue, visualRange.endValue);
                            !(0, _utils.rangesAreEqual)(visualRange, this._slidersController.getSelectedRange()) && this._slidersController.setSelectedRange(visualRange, e)
                        }
                    },
                    _setContentSize: function() {
                        this.__isResizing = 2 === this._changes.count();
                        this.callBase.apply(this, arguments)
                    }
                });
                (0, _iterator.each)(["selectedRangeColor", "containerBackgroundColor", "sliderMarker", "sliderHandle", "shutter", "background", "behavior", "chart", "indent"], (function(_, name) {
                    dxRangeSelector.prototype._optionChangesMap[name] = "MOSTLY_TOTAL"
                }));

                function getSharpDirection() {
                    return 1
                }

                function getTickStartPositionShift(length) {
                    return length % 2 === 1 ? -_floor(length / 2) : -length / 2
                }

                function checkShiftedLabels(majorTicks, boxes, minSpacing, alignment) {
                    function checkLabelsOverlapping(nearestLabelsIndexes) {
                        if (2 === nearestLabelsIndexes.length && _axes_constants.default.areLabelsOverlap(boxes[nearestLabelsIndexes[0]], boxes[nearestLabelsIndexes[1]], minSpacing, alignment)) {
                            majorTicks[nearestLabelsIndexes[0]].removeLabel()
                        }
                    }

                    function getTwoVisibleLabels(startIndex) {
                        const labels = [];
                        for (let i = startIndex; labels.length < 2 && i < majorTicks.length; i++) {
                            majorTicks[i].label && labels.push(i)
                        }
                        return labels
                    }
                    if (majorTicks.length < 3) {
                        return
                    }
                    checkLabelsOverlapping(getTwoVisibleLabels(0));
                    checkLabelsOverlapping(getTwoVisibleLabels(majorTicks.length - 2).reverse())
                }

                function AxisWrapper(params) {
                    this._axis = new _base_axis.Axis({
                        renderer: params.renderer,
                        axesContainerGroup: params.root,
                        scaleBreaksGroup: params.scaleBreaksGroup,
                        labelsAxesGroup: params.labelsAxesGroup,
                        incidentOccurred: params.incidentOccurred,
                        axisType: "xyAxes",
                        drawingType: "linear",
                        widgetClass: "dxrs",
                        axisClass: "range-selector",
                        isArgumentAxis: true,
                        getTemplate() {}
                    });
                    this._updateSelectedRangeCallback = params.updateSelectedRange;
                    this._axis.getAxisSharpDirection = this._axis.getSharpDirectionByCoords = getSharpDirection;
                    this._axis.getTickStartPositionShift = getTickStartPositionShift;
                    this._axis._checkShiftedLabels = checkShiftedLabels
                }
                AxisWrapper.prototype = {
                    constructor: AxisWrapper,
                    update: function(options, isCompactMode, canvas, businessRange, seriesDataSource) {
                        const axis = this._axis;
                        axis.updateOptions(function(scaleOptions, isCompactMode, height, axisPosition) {
                            scaleOptions.marker.label.font = scaleOptions.label.font;
                            scaleOptions.color = scaleOptions.marker.color = scaleOptions.tick.color;
                            scaleOptions.opacity = scaleOptions.marker.opacity = scaleOptions.tick.opacity;
                            scaleOptions.width = scaleOptions.marker.width = scaleOptions.tick.width;
                            scaleOptions.placeholderSize = (scaleOptions.placeholderHeight || 0) + axisPosition;
                            scaleOptions.argumentType = scaleOptions.valueType;
                            scaleOptions.visible = isCompactMode;
                            scaleOptions.isHorizontal = true;
                            scaleOptions.calculateMinors = true;
                            scaleOptions.semiDiscreteInterval = scaleOptions.minRange;
                            if (!isCompactMode) {
                                scaleOptions.minorTick.length = scaleOptions.tick.length = height
                            }
                            scaleOptions.label.indentFromAxis = scaleOptions.label.topIndent + axisPosition;
                            return scaleOptions
                        }(options, isCompactMode, canvas.height, canvas.height / 2 - _ceil(options.width / 2)));
                        axis.validate();
                        axis.setBusinessRange(businessRange, true);
                        if (void 0 !== seriesDataSource && seriesDataSource.isShowChart()) {
                            axis.setMarginOptions(seriesDataSource.getMarginOptions(canvas))
                        }
                        axis.draw(canvas);
                        axis.shift({
                            left: 0,
                            bottom: -canvas.height / 2 + canvas.top
                        });
                        if (axis.getMarkerTrackers()) {
                            ! function(scaleOptions, markerTrackers, setSelectedRange) {
                                (0, _iterator.each)(markerTrackers, (function(_, value) {
                                    value.on("dxpointerdown", onPointerDown)
                                }));

                                function onPointerDown(e) {
                                    const range = e.target.range;
                                    const minRange = scaleOptions.minRange ? _date.default.addInterval(range.startValue, scaleOptions.minRange) : void 0;
                                    const maxRange = scaleOptions.maxRange ? _date.default.addInterval(range.startValue, scaleOptions.maxRange) : void 0;
                                    if (!(minRange && minRange > range.endValue || maxRange && maxRange < range.endValue)) {
                                        setSelectedRange(range, e)
                                    }
                                }
                            }(options, axis.getMarkerTrackers(), this._updateSelectedRangeCallback)
                        }
                        axis.drawScaleBreaks({
                            start: canvas.top,
                            end: canvas.top + canvas.height
                        })
                    },
                    visualRange: function() {},
                    getViewport: function() {
                        return {}
                    },
                    allScaleSelected(value) {
                        const {
                            startValue: startValue,
                            endValue: endValue
                        } = this._axis.visualRange();
                        return {
                            startValue: value[0].valueOf() === startValue.valueOf(),
                            endValue: value[1].valueOf() === endValue.valueOf()
                        }
                    },
                    getOptions() {
                        return this._axis.getOptions() || {}
                    }
                };
                (0, _iterator.each)(_base_axis.Axis.prototype, (field => {
                    if ("constructor" !== field && "_" !== field[0] && (0, _type2.isFunction)(_base_axis.Axis.prototype[field]) && !(field in AxisWrapper.prototype)) {
                        AxisWrapper.prototype[field] = function() {
                            const axis = this._axis;
                            return axis[field].apply(axis, arguments)
                        }
                    }
                }));
                (0, _component_registrator.default)("dxRangeSelector", dxRangeSelector);
                exports.default = dxRangeSelector;
                dxRangeSelector.addPlugin(_export.plugin);
                dxRangeSelector.addPlugin(_title.plugin);
                dxRangeSelector.addPlugin(_loading_indicator.plugin);
                dxRangeSelector.addPlugin(_data_source.plugin);
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        34735:
            /*!******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/range_selector/range_view.js ***!
              \******************************************************************************/
            function(__unused_webpack_module, exports) {
                exports.RangeView = RangeView;

                function merge(a, b) {
                    return void 0 !== a ? a : b
                }

                function RangeView(params) {
                    this._params = params;
                    this._clipRect = params.renderer.clipRect();
                    params.root.attr({
                        "clip-path": this._clipRect.id
                    })
                }
                RangeView.prototype = {
                    constructor: RangeView,
                    update: function(backgroundOption, backgroundTheme, canvas, isCompactMode, isAnimationEnabled, seriesDataSource) {
                        const renderer = this._params.renderer;
                        const root = this._params.root;
                        const canvasWidth = canvas.width - canvas.left;
                        let seriesGroup;
                        backgroundOption = backgroundOption || {};
                        root.clear();
                        this._clipRect.attr({
                            x: canvas.left,
                            y: canvas.top,
                            width: canvasWidth,
                            height: canvas.height
                        });
                        if (!isCompactMode) {
                            if (merge(backgroundOption.visible, backgroundTheme.visible)) {
                                if (backgroundOption.color) {
                                    renderer.rect(canvas.left, canvas.top, canvasWidth + 1, canvas.height).attr({
                                        fill: merge(backgroundOption.color, backgroundTheme.color),
                                        class: "dx-range-selector-background"
                                    }).append(root)
                                }
                                if (backgroundOption.image && backgroundOption.image.url) {
                                    renderer.image(canvas.left, canvas.top, canvasWidth + 1, canvas.height, backgroundOption.image.url, merge(backgroundOption.image.location, backgroundTheme.image.location)).append(root)
                                }
                            }
                            if (seriesDataSource && seriesDataSource.isShowChart()) {
                                seriesGroup = renderer.g().attr({
                                    class: "dxrs-series-group"
                                }).append(root);
                                ! function(root, seriesDataSource, canvas, isAnimationEnabled) {
                                    const seriesList = seriesDataSource.getSeries();
                                    if (!seriesList.length) {
                                        return
                                    }
                                    const valueAxis = seriesList[0].getValueAxis();
                                    valueAxis.updateCanvas({
                                        top: canvas.top,
                                        bottom: 0,
                                        height: canvas.height + canvas.top
                                    });
                                    seriesDataSource.adjustSeriesDimensions();
                                    const valueRange = seriesDataSource.getBoundRange().val;
                                    valueRange.sortCategories(valueAxis.getCategoriesSorter());
                                    valueAxis.setBusinessRange(valueRange);
                                    seriesList.forEach((series => {
                                        series._extGroups.seriesGroup = series._extGroups.labelsGroup = root;
                                        series.draw(isAnimationEnabled)
                                    }))
                                }(seriesGroup, seriesDataSource, canvas, isAnimationEnabled)
                            }
                        }
                    }
                }
            },
        68006:
            /*!**************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/range_selector/series_data_source.js ***!
              \**************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.SeriesDataSource = void 0;
                var _base_series = __webpack_require__( /*! ../series/base_series */ 66151);
                var _series_family = __webpack_require__( /*! ../core/series_family */ 11348);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 11528);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 21274);
                var _utils = __webpack_require__( /*! ../core/utils */ 28779);
                var _range = __webpack_require__( /*! ../translators/range */ 99857);
                var _data_validator = __webpack_require__( /*! ../components/data_validator */ 39104);
                var _chart_theme_manager = __webpack_require__( /*! ../components/chart_theme_manager */ 45647);
                const SeriesDataSource = function(options) {
                    const themeManager = this._themeManager = (chartOptions = options.chart, new _chart_theme_manager.ThemeManager({
                        options: chartOptions,
                        themeSection: "rangeSelector.chart",
                        fontFields: ["commonSeriesSettings.label.font"]
                    }));
                    var chartOptions;
                    themeManager.setTheme(options.chart.theme);
                    const topIndent = themeManager.getOptions("topIndent");
                    const bottomIndent = themeManager.getOptions("bottomIndent");
                    this._indent = {
                        top: topIndent >= 0 && topIndent < 1 ? topIndent : 0,
                        bottom: bottomIndent >= 0 && bottomIndent < 1 ? bottomIndent : 0
                    };
                    this._valueAxis = themeManager.getOptions("valueAxisRangeSelector") || {};
                    this._hideChart = false;
                    this._series = this._calculateSeries(options);
                    this._seriesFamilies = []
                };
                exports.SeriesDataSource = SeriesDataSource;
                SeriesDataSource.prototype = {
                    constructor: SeriesDataSource,
                    _calculateSeries: function(options) {
                        const that = this;
                        const series = [];
                        let particularSeriesOptions;
                        let seriesTheme;
                        const data = options.dataSource || [];
                        let parsedData;
                        const chartThemeManager = that._themeManager;
                        const seriesTemplate = chartThemeManager.getOptions("seriesTemplate");
                        let allSeriesOptions = seriesTemplate ? (0, _utils.processSeriesTemplate)(seriesTemplate, data) : options.chart.series;
                        let dataSourceField;
                        const valueAxis = that._valueAxis;
                        let i;
                        let newSeries;
                        let groupsData;
                        if (options.dataSource && !allSeriesOptions) {
                            dataSourceField = options.dataSourceField || "arg";
                            allSeriesOptions = {
                                argumentField: dataSourceField,
                                valueField: dataSourceField
                            };
                            that._hideChart = true
                        }
                        allSeriesOptions = Array.isArray(allSeriesOptions) ? allSeriesOptions : allSeriesOptions ? [allSeriesOptions] : [];
                        for (i = 0; i < allSeriesOptions.length; i++) {
                            particularSeriesOptions = (0, _extend.extend)(true, {}, allSeriesOptions[i]);
                            particularSeriesOptions.rotated = false;
                            seriesTheme = chartThemeManager.getOptions("series", particularSeriesOptions, allSeriesOptions.length);
                            seriesTheme.argumentField = seriesTheme.argumentField || options.dataSourceField;
                            if (!seriesTheme.name) {
                                seriesTheme.name = "Series " + (i + 1).toString()
                            }
                            if (data && data.length > 0) {
                                newSeries = new _base_series.Series({
                                    renderer: options.renderer,
                                    argumentAxis: options.argumentAxis,
                                    valueAxis: options.valueAxis,
                                    incidentOccurred: options.incidentOccurred
                                }, seriesTheme);
                                series.push(newSeries)
                            }
                        }
                        if (series.length) {
                            groupsData = {
                                groups: [{
                                    series: series,
                                    valueAxis: options.valueAxis,
                                    valueOptions: {
                                        type: valueAxis.type,
                                        valueType: dataSourceField ? options.valueType : valueAxis.valueType
                                    }
                                }],
                                argumentOptions: {
                                    categories: options.categories,
                                    argumentType: options.valueType,
                                    type: options.axisType
                                }
                            };
                            parsedData = (0, _data_validator.validateData)(data, groupsData, options.incidentOccurred, chartThemeManager.getOptions("dataPrepareSettings"));
                            that.argCategories = groupsData.categories;
                            for (i = 0; i < series.length; i++) {
                                series[i].updateData(parsedData[series[i].getArgumentField()])
                            }
                        }
                        return series
                    },
                    createPoints() {
                        if (0 === this._series.length) {
                            return
                        }
                        const series = this._series;
                        const viewport = new _range.Range;
                        const axis = series[0].getArgumentAxis();
                        const themeManager = this._themeManager;
                        const negativesAsZeroes = themeManager.getOptions("negativesAsZeroes");
                        const negativesAsZeros = themeManager.getOptions("negativesAsZeros");
                        series.forEach((function(s) {
                            viewport.addRange(s.getArgumentRange())
                        }));
                        axis.getTranslator().updateBusinessRange(viewport);
                        series.forEach((function(s) {
                            s.createPoints()
                        }));
                        this._seriesFamilies = function(series, minBubbleSize, maxBubbleSize, barOptions, negativesAsZeroes) {
                            const families = [];
                            const types = [];
                            (0, _iterator.each)(series, (function(i, item) {
                                if (!types.includes(item.type)) {
                                    types.push(item.type)
                                }
                            }));
                            (0, _iterator.each)(types, (function(_, type) {
                                const family = new _series_family.SeriesFamily({
                                    type: type,
                                    minBubbleSize: minBubbleSize,
                                    maxBubbleSize: maxBubbleSize,
                                    barGroupPadding: barOptions.barGroupPadding,
                                    barGroupWidth: barOptions.barGroupWidth,
                                    negativesAsZeroes: negativesAsZeroes
                                });
                                family.add(series);
                                family.adjustSeriesValues();
                                families.push(family)
                            }));
                            return families
                        }(series, themeManager.getOptions("minBubbleSize"), themeManager.getOptions("maxBubbleSize"), {
                            barGroupPadding: themeManager.getOptions("barGroupPadding"),
                            barGroupWidth: themeManager.getOptions("barGroupWidth")
                        }, (0, _type.isDefined)(negativesAsZeroes) ? negativesAsZeroes : negativesAsZeros)
                    },
                    adjustSeriesDimensions: function() {
                        (0, _iterator.each)(this._seriesFamilies, (function(_, family) {
                            family.adjustSeriesDimensions()
                        }))
                    },
                    getBoundRange: function() {
                        const that = this;
                        let rangeData;
                        const valueAxis = that._valueAxis;
                        const valRange = new _range.Range({
                            min: valueAxis.min,
                            minVisible: valueAxis.min,
                            max: valueAxis.max,
                            maxVisible: valueAxis.max,
                            axisType: valueAxis.type,
                            base: valueAxis.logarithmBase
                        });
                        const argRange = new _range.Range({});
                        let rangeYSize;
                        let rangeVisibleSizeY;
                        let minIndent;
                        let maxIndent;
                        (0, _iterator.each)(that._series, (function(_, series) {
                            rangeData = series.getRangeData();
                            valRange.addRange(rangeData.val);
                            argRange.addRange(rangeData.arg)
                        }));
                        if (!valRange.isEmpty() && !argRange.isEmpty()) {
                            minIndent = valueAxis.inverted ? that._indent.top : that._indent.bottom;
                            maxIndent = valueAxis.inverted ? that._indent.bottom : that._indent.top;
                            rangeYSize = valRange.max - valRange.min;
                            rangeVisibleSizeY = ((0, _type.isNumeric)(valRange.maxVisible) ? valRange.maxVisible : valRange.max) - ((0, _type.isNumeric)(valRange.minVisible) ? valRange.minVisible : valRange.min);
                            if ((0, _type.isDate)(valRange.min)) {
                                valRange.min = new Date(valRange.min.valueOf() - rangeYSize * minIndent)
                            } else {
                                valRange.min -= rangeYSize * minIndent
                            }
                            if ((0, _type.isDate)(valRange.max)) {
                                valRange.max = new Date(valRange.max.valueOf() + rangeYSize * maxIndent)
                            } else {
                                valRange.max += rangeYSize * maxIndent
                            }
                            if ((0, _type.isNumeric)(rangeVisibleSizeY)) {
                                valRange.maxVisible = (0, _type.isDefined)(valRange.maxVisible) ? valRange.maxVisible + rangeVisibleSizeY * maxIndent : void 0;
                                valRange.minVisible = (0, _type.isDefined)(valRange.minVisible) ? valRange.minVisible - rangeVisibleSizeY * minIndent : void 0
                            }
                            valRange.invert = valueAxis.inverted
                        }
                        return {
                            arg: argRange,
                            val: valRange
                        }
                    },
                    getMarginOptions: function(canvas) {
                        const bubbleSize = Math.min(canvas.width, canvas.height) * this._themeManager.getOptions("maxBubbleSize");
                        return this._series.reduce((function(marginOptions, series) {
                            const seriesOptions = series.getMarginOptions();
                            if (true === seriesOptions.processBubbleSize) {
                                seriesOptions.size = bubbleSize
                            }
                            return (0, _utils.mergeMarginOptions)(marginOptions, seriesOptions)
                        }), {})
                    },
                    getSeries: function() {
                        return this._series
                    },
                    isEmpty: function() {
                        return 0 === this.getSeries().length
                    },
                    isShowChart: function() {
                        return !this._hideChart
                    },
                    getCalculatedValueType: function() {
                        const series = this._series[0];
                        return null === series || void 0 === series ? void 0 : series.argumentType
                    },
                    getThemeManager: function() {
                        return this._themeManager
                    }
                }
            },
        79421:
            /*!**************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/range_selector/slider.js ***!
              \**************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _common = __webpack_require__( /*! ./common */ 62381);
                var _slider_marker = _interopRequireDefault(__webpack_require__( /*! ./slider_marker */ 67518));
                var _m_support = _interopRequireDefault(__webpack_require__( /*! ../../__internal/core/utils/m_support */ 85991));

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const animationSettings = _common.utils.animationSettings;

                function Slider(params, index) {
                    this._translator = params.translator;
                    this._sliderGroup = params.renderer.g().attr({
                        class: "slider"
                    }).append(params.root);
                    this._line = params.renderer.path(null, "line").append(this._sliderGroup);
                    this._marker = new _slider_marker.default(params.renderer, this._sliderGroup, 1 === index);
                    this._tracker = params.renderer.rect().attr({
                        class: "slider-tracker",
                        fill: "#000000",
                        opacity: 1e-4
                    }).css({
                        cursor: "w-resize"
                    }).append(params.trackersGroup)
                }
                Slider.prototype = {
                    constructor: Slider,
                    cancelAnimation: function() {
                        this._sliderGroup.stopAnimation();
                        this._tracker.stopAnimation()
                    },
                    applyPosition: function(isAnimated) {
                        const slider = this._sliderGroup;
                        const tracker = this._tracker;
                        const attrs = {
                            translateX: this._position
                        };
                        this._marker.setPosition(this._position);
                        if (isAnimated) {
                            slider.animate(attrs, animationSettings);
                            tracker.animate(attrs, animationSettings)
                        } else {
                            slider.attr(attrs);
                            tracker.attr(attrs)
                        }
                    },
                    _setValid: function(isValid) {
                        this._marker.setValid(isValid);
                        this._line.attr({
                            stroke: this._colors[Number(isValid)]
                        })
                    },
                    _setText: function(text) {
                        this._marker.setText(text)
                    },
                    update: function(verticalRange, sliderHandleOptions, sliderMarkerOptions) {
                        this._formatOptions = {
                            format: sliderMarkerOptions.format,
                            customizeText: sliderMarkerOptions.customizeText
                        };
                        this._marker.applyOptions(sliderMarkerOptions, this._translator.getScreenRange());
                        this._colors = [sliderMarkerOptions.invalidRangeColor, sliderHandleOptions.color];
                        this._sliderGroup.attr({
                            translateY: verticalRange[0]
                        });
                        this._line.attr({
                            "stroke-width": sliderHandleOptions.width,
                            stroke: sliderHandleOptions.color,
                            "stroke-opacity": sliderHandleOptions.opacity,
                            sharp: "h",
                            points: [0, 0, 0, verticalRange[1] - verticalRange[0]]
                        });
                        const trackerWidth = (sliderHandleWidth = sliderHandleOptions.width, _m_support.default.touchEvents || _m_support.default.pointerEvents ? 20 : 8 < sliderHandleWidth ? sliderHandleWidth : 8);
                        var sliderHandleWidth;
                        this._tracker.attr({
                            x: -trackerWidth / 2,
                            y: 0,
                            width: trackerWidth,
                            height: verticalRange[1] - verticalRange[0],
                            translateY: verticalRange[0]
                        })
                    },
                    toForeground: function() {
                        this._sliderGroup.toForeground()
                    },
                    getSliderTracker: function() {
                        return this._tracker
                    },
                    getPosition: function() {
                        return this._position
                    },
                    setDisplayValue: function(value) {
                        this._value = value;
                        this._setText((0, _common.formatValue)(value, this._formatOptions))
                    },
                    setOverlapped: function(isOverlapped) {
                        this._marker.setOverlapped(isOverlapped)
                    },
                    getValue: function() {
                        return this._value
                    },
                    on: function(event, handler) {
                        this._tracker.on(event, handler);
                        this._marker.getTracker().on(event, handler)
                    },
                    getCloudBorder: function() {
                        return this._marker.getBorderPosition()
                    },
                    dispose: function() {
                        this._marker.dispose()
                    }
                };
                exports.default = Slider;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        67518:
            /*!*********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/range_selector/slider_marker.js ***!
              \*********************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _utils = __webpack_require__( /*! ../core/utils */ 28779);
                var _common = __webpack_require__( /*! ./common */ 62381);
                const POINTER_SIZE = _common.consts.pointerSize;

                function SliderMarker(renderer, root, isLeftPointer) {
                    this._isLeftPointer = isLeftPointer;
                    this._isOverlapped = false;
                    this._group = renderer.g().attr({
                        class: "slider-marker"
                    }).append(root);
                    this._area = renderer.path(null, "area").append(this._group);
                    this._label = renderer.text().attr({
                        align: "left"
                    }).append(this._group);
                    this._tracker = renderer.rect().attr({
                        class: "slider-marker-tracker",
                        fill: "#000000",
                        opacity: 1e-4
                    }).css({
                        cursor: "pointer"
                    }).append(this._group);
                    this._border = renderer.rect(0, 0, 1, 0)
                }
                SliderMarker.prototype = {
                    constructor: SliderMarker,
                    _getRectSize: function(textSize) {
                        return {
                            width: Math.round(2 * this._paddingLeftRight + textSize.width),
                            height: Math.round(2 * this._paddingTopBottom + textSize.height)
                        }
                    },
                    _getTextSize: function() {
                        const textSize = this._label.getBBox();
                        if (!this._textHeight && isFinite(textSize.height)) {
                            this._textHeight = textSize.height
                        }
                        return {
                            width: textSize.width,
                            height: this._textHeight,
                            y: textSize.y
                        }
                    },
                    _getAreaPointsInfo: function(textSize) {
                        const that = this;
                        const rectSize = that._getRectSize(textSize);
                        const rectWidth = rectSize.width;
                        const rectHeight = rectSize.height;
                        let rectLeftBorder = -rectWidth;
                        let rectRightBorder = 0;
                        let pointerRightPoint = POINTER_SIZE;
                        let pointerCenterPoint = 0;
                        let pointerLeftPoint = -POINTER_SIZE;
                        const position = that._position;
                        const isLeft = that._isLeftPointer;
                        const correctCloudBorders = function() {
                            rectLeftBorder++;
                            rectRightBorder++;
                            pointerRightPoint++;
                            pointerCenterPoint++;
                            pointerLeftPoint++
                        };
                        const checkPointerBorders = function() {
                            if (pointerRightPoint > rectRightBorder) {
                                pointerRightPoint = rectRightBorder
                            } else if (pointerLeftPoint < rectLeftBorder) {
                                pointerLeftPoint = rectLeftBorder
                            }
                            isLeft && correctCloudBorders()
                        };
                        let borderPosition = position;
                        if (isLeft) {
                            if (position > that._range[1] - rectWidth) {
                                rectRightBorder = -position + that._range[1];
                                rectLeftBorder = rectRightBorder - rectWidth;
                                checkPointerBorders();
                                borderPosition += rectLeftBorder
                            } else {
                                rectLeftBorder = pointerLeftPoint = 0;
                                rectRightBorder = rectWidth
                            }
                        } else if (position - that._range[0] < rectWidth) {
                            rectLeftBorder = -(position - that._range[0]);
                            rectRightBorder = rectLeftBorder + rectWidth;
                            checkPointerBorders();
                            borderPosition += rectRightBorder
                        } else {
                            pointerRightPoint = 0;
                            correctCloudBorders()
                        }
                        that._borderPosition = borderPosition;
                        return {
                            offset: rectLeftBorder,
                            isCut: (!isLeft || pointerCenterPoint !== pointerLeftPoint) && (isLeft || pointerCenterPoint !== pointerRightPoint),
                            points: [rectLeftBorder, 0, rectRightBorder, 0, rectRightBorder, rectHeight, pointerRightPoint, rectHeight, pointerCenterPoint, rectHeight + POINTER_SIZE, pointerLeftPoint, rectHeight, rectLeftBorder, rectHeight]
                        }
                    },
                    _update: function() {
                        const that = this;
                        let textSize;
                        clearTimeout(that._timeout);
                        that._label.attr({
                            text: that._text || ""
                        });
                        const currentTextSize = that._getTextSize();
                        const rectSize = that._getRectSize(currentTextSize);
                        textSize = that._textSize || currentTextSize;
                        textSize = that._textSize = currentTextSize.width > textSize.width || currentTextSize.height > textSize.height ? currentTextSize : textSize;
                        that._timeout = setTimeout((function() {
                            updateSliderMarker(currentTextSize, rectSize);
                            that._textSize = currentTextSize
                        }), 75);

                        function updateSliderMarker(size, rectSize) {
                            rectSize = rectSize || that._getRectSize(size);
                            that._group.attr({
                                translateY: -(rectSize.height + POINTER_SIZE)
                            });
                            const pointsData = that._getAreaPointsInfo(size);
                            const points = pointsData.points;
                            const offset = pointsData.offset;
                            that._area.attr({
                                points: points
                            });
                            that._border.attr({
                                x: that._isLeftPointer ? points[0] - 1 : points[2],
                                height: pointsData.isCut ? rectSize.height : rectSize.height + POINTER_SIZE
                            });
                            that._tracker.attr({
                                translateX: offset,
                                width: rectSize.width,
                                height: rectSize.height + POINTER_SIZE
                            });
                            that._label.attr({
                                translateX: that._paddingLeftRight + offset,
                                translateY: rectSize.height / 2 - (size.y + size.height / 2)
                            })
                        }
                        updateSliderMarker(textSize)
                    },
                    setText: function(value) {
                        this._text = value
                    },
                    setPosition: function(position) {
                        this._position = position;
                        this._update()
                    },
                    applyOptions: function(options, screenRange) {
                        this._range = screenRange;
                        this._paddingLeftRight = options.paddingLeftRight;
                        this._paddingTopBottom = options.paddingTopBottom;
                        this._textHeight = null;
                        this._colors = [options.invalidRangeColor, options.color];
                        this._area.attr({
                            fill: options.color
                        });
                        this._border.attr({
                            fill: options.borderColor
                        });
                        this._label.css((0, _utils.patchFontOptions)(options.font));
                        this._update()
                    },
                    getTracker: function() {
                        return this._tracker
                    },
                    setValid: function(isValid) {
                        this._area.attr({
                            fill: this._colors[Number(isValid)]
                        })
                    },
                    setColor: function(color) {
                        this._area.attr({
                            fill: color
                        })
                    },
                    dispose: function() {
                        clearTimeout(this._timeout)
                    },
                    setOverlapped: function(isOverlapped) {
                        const that = this;
                        if (that._isOverlapped !== isOverlapped) {
                            if (isOverlapped) {
                                that._border.append(that._group)
                            } else {
                                that._isOverlapped && that._border.remove()
                            }
                            that._isOverlapped = isOverlapped
                        }
                    },
                    getBorderPosition: function() {
                        return this._borderPosition
                    }
                };
                exports.default = SliderMarker;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        9331:
            /*!**************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/range_selector/sliders_controller.js ***!
              \**************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.SlidersController = SlidersController;
                var _common = __webpack_require__( /*! ../../core/utils/common */ 17781);
                var _common2 = __webpack_require__( /*! ./common */ 62381);
                var _slider = (e = __webpack_require__( /*! ./slider */ 79421), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                var _utils = __webpack_require__( /*! ../core/utils */ 28779);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 11528);
                var _math = __webpack_require__( /*! ../../core/utils/math */ 50254);
                const animationSettings = _common2.utils.animationSettings;
                const emptySliderMarkerText = _common2.consts.emptySliderMarkerText;

                function buildRectPoints(left, top, right, bottom) {
                    return [left, top, right, top, right, bottom, left, bottom]
                }

                function isLess(a, b) {
                    return a < b
                }

                function isGreater(a, b) {
                    return a > b
                }

                function selectClosestValue(target, values) {
                    let start = 0;
                    let end = values ? values.length - 1 : 0;
                    let middle;
                    let val = target;
                    while (end - start > 1) {
                        middle = start + end >> 1;
                        val = values[middle];
                        if (val === target) {
                            return target
                        } else if (target < val) {
                            end = middle
                        } else {
                            start = middle
                        }
                    }
                    if (values) {
                        val = values[target - values[start] <= values[end] - target ? start : end]
                    }
                    return val
                }

                function dummyProcessSelectionChanged() {
                    this._lastSelectedRange = this.getSelectedRange();
                    delete this._processSelectionChanged
                }

                function SlidersController(params) {
                    const sliderParams = {
                        renderer: params.renderer,
                        root: params.root,
                        trackersGroup: params.trackersGroup,
                        translator: params.translator
                    };
                    this._params = params;
                    this._areaTracker = params.renderer.path(null, "area").attr({
                        class: "area-tracker",
                        fill: "#000000",
                        opacity: 1e-4
                    }).append(params.trackersGroup);
                    this._selectedAreaTracker = params.renderer.path(null, "area").attr({
                        class: "selected-area-tracker",
                        fill: "#000000",
                        opacity: 1e-4
                    }).append(params.trackersGroup);
                    this._shutter = params.renderer.path(null, "area").append(params.root);
                    this._sliders = [new _slider.default(sliderParams, 0), new _slider.default(sliderParams, 1)];
                    this._processSelectionChanged = dummyProcessSelectionChanged
                }
                SlidersController.prototype = {
                    constructor: SlidersController,
                    dispose: function() {
                        this._sliders[0].dispose();
                        this._sliders[1].dispose()
                    },
                    getTrackerTargets: function() {
                        return {
                            area: this._areaTracker,
                            selectedArea: this._selectedAreaTracker,
                            sliders: this._sliders
                        }
                    },
                    _processSelectionChanged: function(e) {
                        const that = this;
                        const selectedRange = that.getSelectedRange();
                        if (!(0, _utils.rangesAreEqual)(selectedRange, that._lastSelectedRange)) {
                            that._params.updateSelectedRange(selectedRange, that._lastSelectedRange, e);
                            that._lastSelectedRange = selectedRange
                        }
                    },
                    update: function(verticalRange, behavior, isCompactMode, sliderHandleOptions, sliderMarkerOptions, shutterOptions, rangeBounds, fullTicks, selectedRangeColor) {
                        const screenRange = this._params.translator.getScreenRange();
                        this._verticalRange = verticalRange;
                        this._minRange = rangeBounds.minRange;
                        this._maxRange = rangeBounds.maxRange;
                        this._animationEnabled = behavior.animationEnabled && this._params.renderer.animationEnabled();
                        this._allowSlidersSwap = behavior.allowSlidersSwap;
                        this._sliders[0].update(verticalRange, sliderHandleOptions, sliderMarkerOptions);
                        this._sliders[1].update(verticalRange, sliderHandleOptions, sliderMarkerOptions);
                        this._sliders[0]._position = this._sliders[1]._position = screenRange[0];
                        this._values = !this._params.translator.isValueProlonged && behavior.snapToTicks ? fullTicks : null;
                        this._areaTracker.attr({
                            points: buildRectPoints(screenRange[0], verticalRange[0], screenRange[1], verticalRange[1])
                        });
                        this._isCompactMode = isCompactMode;
                        this._shutterOffset = sliderHandleOptions.width / 2;
                        this._updateSelectedView(shutterOptions, selectedRangeColor);
                        this._isOnMoving = "onhandlemove" === (0, _utils.normalizeEnum)(behavior.valueChangeMode);
                        this._updateSelectedRange();
                        this._applyTotalPosition(false)
                    },
                    _updateSelectedView: function(shutterOptions, selectedRangeColor) {
                        const settings = {
                            fill: null,
                            "fill-opacity": null,
                            stroke: null,
                            "stroke-width": null
                        };
                        if (this._isCompactMode) {
                            settings.stroke = selectedRangeColor;
                            settings["stroke-width"] = 3;
                            settings.sharp = "v"
                        } else {
                            settings.fill = shutterOptions.color;
                            settings["fill-opacity"] = shutterOptions.opacity
                        }
                        this._shutter.attr(settings)
                    },
                    _updateSelectedRange: function() {
                        const that = this;
                        const sliders = that._sliders;
                        sliders[0].cancelAnimation();
                        sliders[1].cancelAnimation();
                        that._shutter.stopAnimation();
                        if (that._params.translator.getBusinessRange().isEmpty()) {
                            sliders[0]._setText(emptySliderMarkerText);
                            sliders[1]._setText(emptySliderMarkerText);
                            sliders[0]._value = sliders[1]._value = void 0;
                            sliders[0]._position = that._params.translator.getScreenRange()[0];
                            sliders[1]._position = that._params.translator.getScreenRange()[1];
                            that._applyTotalPosition(false);
                            ! function(controller) {
                                controller.setSelectedRange = _common.noop;
                                if (controller._processSelectionChanged === dummyProcessSelectionChanged) {
                                    controller._processSelectionChanged()
                                }
                            }(that)
                        } else {
                            controller = that, void delete controller.setSelectedRange
                        }
                        var controller
                    },
                    _applyTotalPosition: function(isAnimated) {
                        const sliders = this._sliders;
                        isAnimated = this._animationEnabled && isAnimated;
                        sliders[0].applyPosition(isAnimated);
                        sliders[1].applyPosition(isAnimated);
                        const areOverlapped = sliders[0].getCloudBorder() > sliders[1].getCloudBorder();
                        sliders[0].setOverlapped(areOverlapped);
                        sliders[1].setOverlapped(areOverlapped);
                        this._applyAreaTrackersPosition();
                        this._applySelectedRangePosition(isAnimated)
                    },
                    _applyAreaTrackersPosition: function() {
                        const position1 = this._sliders[0].getPosition();
                        const position2 = this._sliders[1].getPosition();
                        this._selectedAreaTracker.attr({
                            points: buildRectPoints(position1, this._verticalRange[0], position2, this._verticalRange[1])
                        }).css({
                            cursor: Math.abs(this._params.translator.getScreenRange()[1] - this._params.translator.getScreenRange()[0] - position2 + position1) < .001 ? "default" : "pointer"
                        })
                    },
                    _applySelectedRangePosition: function(isAnimated) {
                        const that = this;
                        const verticalRange = that._verticalRange;
                        const pos1 = that._sliders[0].getPosition();
                        const pos2 = that._sliders[1].getPosition();
                        let screenRange;
                        let points;
                        if (that._isCompactMode) {
                            points = [pos1 + Math.ceil(that._shutterOffset), (verticalRange[0] + verticalRange[1]) / 2, pos2 - Math.floor(that._shutterOffset), (verticalRange[0] + verticalRange[1]) / 2]
                        } else {
                            screenRange = that._params.axis.getVisibleArea();
                            points = [buildRectPoints(screenRange[0], verticalRange[0], Math.max(pos1 - Math.floor(that._shutterOffset), screenRange[0]), verticalRange[1]), buildRectPoints(screenRange[1], verticalRange[0], Math.min(pos2 + Math.ceil(that._shutterOffset), screenRange[1]), verticalRange[1])]
                        }
                        if (isAnimated) {
                            that._shutter.animate({
                                points: points
                            }, animationSettings)
                        } else {
                            that._shutter.attr({
                                points: points
                            })
                        }
                    },
                    getSelectedRange: function() {
                        return {
                            startValue: this._sliders[0].getValue(),
                            endValue: this._sliders[1].getValue()
                        }
                    },
                    setSelectedRange: function(visualRange, e) {
                        visualRange = visualRange || {};
                        const translator = this._params.translator;
                        const businessRange = translator.getBusinessRange();
                        const compare = "discrete" === businessRange.axisType ? function(a, b) {
                            return a < b
                        } : function(a, b) {
                            return a <= b
                        };
                        let {
                            startValue: startValue,
                            endValue: endValue
                        } = (0, _utils.adjustVisualRange)({
                            dataType: businessRange.dataType,
                            axisType: businessRange.axisType,
                            base: businessRange.base
                        }, {
                            startValue: translator.isValid(visualRange.startValue) ? translator.getCorrectValue(visualRange.startValue, 1) : void 0,
                            endValue: translator.isValid(visualRange.endValue) ? translator.getCorrectValue(visualRange.endValue, -1) : void 0,
                            length: visualRange.length
                        }, {
                            min: businessRange.minVisible,
                            max: businessRange.maxVisible,
                            categories: businessRange.categories
                        });
                        startValue = (0, _type.isNumeric)(startValue) ? (0, _math.adjust)(startValue) : startValue;
                        endValue = (0, _type.isNumeric)(endValue) ? (0, _math.adjust)(endValue) : endValue;
                        const values = compare(translator.to(startValue, -1), translator.to(endValue, 1)) ? [startValue, endValue] : [endValue, startValue];
                        this._sliders[0].setDisplayValue(values[0]);
                        this._sliders[1].setDisplayValue(values[1]);
                        this._sliders[0]._position = translator.to(values[0], -1);
                        this._sliders[1]._position = translator.to(values[1], 1);
                        this._applyTotalPosition(true);
                        this._processSelectionChanged(e)
                    },
                    beginSelectedAreaMoving: function(initialPosition) {
                        const that = this;
                        const sliders = that._sliders;
                        const offset = (sliders[0].getPosition() + sliders[1].getPosition()) / 2 - initialPosition;
                        let currentPosition = initialPosition;
                        move.complete = function(e) {
                            that._dockSelectedArea(e)
                        };
                        return move;

                        function move(position, e) {
                            if (position !== currentPosition && position > currentPosition === position > (sliders[0].getPosition() + sliders[1].getPosition()) / 2 - offset) {
                                that._moveSelectedArea(position + offset, false, e)
                            }
                            currentPosition = position
                        }
                    },
                    _dockSelectedArea: function(e) {
                        const translator = this._params.translator;
                        const sliders = this._sliders;
                        sliders[0]._position = translator.to(sliders[0].getValue(), -1);
                        sliders[1]._position = translator.to(sliders[1].getValue(), 1);
                        this._applyTotalPosition(true);
                        this._processSelectionChanged(e)
                    },
                    moveSelectedArea: function(screenPosition, e) {
                        this._moveSelectedArea(screenPosition, true, e);
                        this._dockSelectedArea(e)
                    },
                    _moveSelectedArea: function(screenPosition, isAnimated, e) {
                        const that = this;
                        const translator = that._params.translator;
                        const sliders = that._sliders;
                        const interval = sliders[1].getPosition() - sliders[0].getPosition();
                        let startPosition = screenPosition - interval / 2;
                        let endPosition = screenPosition + interval / 2;
                        if (startPosition < translator.getScreenRange()[0]) {
                            startPosition = translator.getScreenRange()[0];
                            endPosition = startPosition + interval
                        }
                        if (endPosition > translator.getScreenRange()[1]) {
                            endPosition = translator.getScreenRange()[1];
                            startPosition = endPosition - interval
                        }
                        const startValue = selectClosestValue(translator.from(startPosition, -1), that._values);
                        sliders[0].setDisplayValue(startValue);
                        sliders[1].setDisplayValue(selectClosestValue(translator.from(translator.to(startValue, -1) + interval, 1), that._values));
                        sliders[0]._position = startPosition;
                        sliders[1]._position = endPosition;
                        that._applyTotalPosition(isAnimated);
                        if (that._isOnMoving) {
                            that._processSelectionChanged(e)
                        }
                    },
                    placeSliderAndBeginMoving: function(firstPosition, secondPosition, e) {
                        const that = this;
                        const translator = that._params.translator;
                        const sliders = that._sliders;
                        const index = firstPosition < secondPosition ? 0 : 1;
                        const dir = index > 0 ? 1 : -1;
                        const compare = index > 0 ? isGreater : isLess;
                        const antiCompare = index > 0 ? isLess : isGreater;
                        let thresholdPosition;
                        const positions = [];
                        const values = [];
                        values[index] = translator.from(firstPosition, dir);
                        values[1 - index] = translator.from(secondPosition, -dir);
                        positions[1 - index] = secondPosition;
                        if (translator.isValueProlonged) {
                            if (compare(firstPosition, translator.to(values[index], dir))) {
                                values[index] = translator.from(firstPosition, -dir)
                            }
                            if (compare(secondPosition, translator.to(values[index], -dir))) {
                                values[1 - index] = values[index]
                            }
                        }
                        if (that._minRange) {
                            thresholdPosition = translator.to(translator.add(selectClosestValue(values[index], that._values), that._minRange, -dir), -dir);
                            if (compare(secondPosition, thresholdPosition)) {
                                values[1 - index] = translator.add(values[index], that._minRange, -dir)
                            }
                            thresholdPosition = translator.to(translator.add(translator.getRange()[1 - index], that._minRange, dir), -dir);
                            if (antiCompare(firstPosition, thresholdPosition)) {
                                values[1 - index] = translator.getRange()[1 - index];
                                values[index] = translator.add(values[1 - index], that._minRange, dir);
                                positions[1 - index] = firstPosition
                            }
                        }
                        values[0] = selectClosestValue(values[0], that._values);
                        values[1] = selectClosestValue(values[1], that._values);
                        positions[index] = translator.to(values[index], dir);
                        sliders[0].setDisplayValue(values[0]);
                        sliders[1].setDisplayValue(values[1]);
                        sliders[0]._position = positions[0];
                        sliders[1]._position = positions[1];
                        that._applyTotalPosition(true);
                        if (that._isOnMoving) {
                            that._processSelectionChanged(e)
                        }
                        const handler = that.beginSliderMoving(1 - index, secondPosition);
                        sliders[1 - index]._sliderGroup.stopAnimation();
                        that._shutter.stopAnimation();
                        handler(secondPosition);
                        return handler
                    },
                    beginSliderMoving: function(initialIndex, initialPosition) {
                        const that = this;
                        const translator = that._params.translator;
                        const sliders = that._sliders;
                        const minPosition = translator.getScreenRange()[0];
                        const maxPosition = translator.getScreenRange()[1];
                        let index = initialIndex;
                        const staticPosition = sliders[1 - index].getPosition();
                        let currentPosition = initialPosition;
                        let dir = index > 0 ? 1 : -1;
                        let compareMin = index > 0 ? isLess : isGreater;
                        let compareMax = index > 0 ? isGreater : isLess;
                        let moveOffset = sliders[index].getPosition() - initialPosition;
                        let swapOffset = compareMin(sliders[index].getPosition(), initialPosition) ? -moveOffset : moveOffset;
                        move.complete = function(e) {
                            sliders[index]._setValid(true);
                            that._dockSelectedArea(e)
                        };
                        return move;

                        function move(position, e) {
                            let isValid;
                            let temp;
                            let pos;
                            let slider;
                            let value;
                            if (position !== currentPosition) {
                                if (compareMin(position + swapOffset, staticPosition)) {
                                    isValid = that._allowSlidersSwap;
                                    if (isValid && !translator.isValueProlonged && that._minRange) {
                                        isValid = translator.isValid(translator.add(sliders[1 - index].getValue(), that._minRange, -dir))
                                    }
                                    if (isValid) {
                                        that._changeMovingSlider(index);
                                        index = 1 - index;
                                        dir = -dir;
                                        temp = compareMin;
                                        compareMin = compareMax;
                                        compareMax = temp;
                                        moveOffset = -dir * Math.abs(moveOffset);
                                        swapOffset = -moveOffset
                                    }
                                }
                                if (compareMax(position + moveOffset, staticPosition)) {
                                    slider = sliders[index];
                                    value = sliders[1 - index].getValue();
                                    pos = Math.max(Math.min(position + moveOffset, maxPosition), minPosition);
                                    isValid = translator.isValueProlonged ? !compareMin(pos, translator.to(value, dir)) : true;
                                    let invalidStateValue;
                                    if (isValid && that._minRange) {
                                        isValid = !compareMin(pos, translator.to(translator.add(value, that._minRange, dir), dir));
                                        if (!isValid) {
                                            invalidStateValue = translator.add(value, that._minRange, dir)
                                        }
                                    }
                                    if (isValid && that._maxRange) {
                                        isValid = !compareMax(pos, translator.to(translator.add(value, that._maxRange, dir), dir));
                                        if (!isValid) {
                                            invalidStateValue = translator.add(value, that._maxRange, dir)
                                        }
                                    }
                                    slider._setValid(isValid);
                                    slider.setDisplayValue(isValid ? selectClosestValue(translator.from(pos, dir), that._values) : (0, _type.isDefined)(invalidStateValue) ? invalidStateValue : slider.getValue());
                                    slider._position = pos;
                                    that._applyTotalPosition(false);
                                    slider.toForeground();
                                    if (that._isOnMoving) {
                                        that._processSelectionChanged(e)
                                    }
                                }
                            }
                            currentPosition = position
                        }
                    },
                    _changeMovingSlider: function(index) {
                        const that = this;
                        const translator = that._params.translator;
                        const sliders = that._sliders;
                        const position = sliders[1 - index].getPosition();
                        const dir = index > 0 ? 1 : -1;
                        let newValue;
                        sliders[index].setDisplayValue(selectClosestValue(translator.from(position, dir), that._values));
                        newValue = translator.from(position, -dir);
                        if (translator.isValueProlonged) {
                            newValue = translator.from(position, dir)
                        } else if (that._minRange) {
                            newValue = translator.add(newValue, that._minRange, -dir)
                        }
                        sliders[1 - index].setDisplayValue(selectClosestValue(newValue, that._values));
                        sliders[index]._setValid(true);
                        sliders[index]._marker._update();
                        sliders[0]._position = sliders[1]._position = position
                    },
                    foregroundSlider: function(index) {
                        this._sliders[index].toForeground()
                    }
                }
            },
        9358:
            /*!***************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/range_selector/tracker.js ***!
              \***************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.Tracker = Tracker;
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/core/events_engine */ 92774));
                var _pointer = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/pointer */ 89797));
                var _window = __webpack_require__( /*! ../../core/utils/window */ 3104);
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../core/dom_adapter */ 64960));
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 21274);
                var _support = __webpack_require__( /*! ../../core/utils/support */ 4785);

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const MIN_MANUAL_SELECTING_WIDTH = 10;
                const window = (0, _window.getWindow)();

                function isLeftButtonPressed(event) {
                    const e = event || window.event;
                    const originalEvent = e.originalEvent;
                    const touches = e.touches;
                    const pointerType = originalEvent ? originalEvent.pointerType : false;
                    const eventTouches = originalEvent ? originalEvent.touches : false;
                    const isMSPointerLeftClick = originalEvent && void 0 !== pointerType && (pointerType === (originalEvent.MSPOINTER_TYPE_TOUCH || "touch") || pointerType === (originalEvent.MSPOINTER_TYPE_MOUSE || "mouse") && 1 === originalEvent.buttons);
                    const isTouches = touches && touches.length > 0 || eventTouches && eventTouches.length > 0;
                    return 1 === e.which || isMSPointerLeftClick || isTouches
                }

                function isMultiTouches(event) {
                    const originalEvent = event.originalEvent;
                    const touches = event.touches;
                    const eventTouches = originalEvent && originalEvent.touches;
                    return touches && touches.length > 1 || eventTouches && eventTouches.length > 1 || null
                }

                function preventDefault(e) {
                    if (!isMultiTouches(e)) {
                        e.preventDefault()
                    }
                }

                function stopPropagationAndPreventDefault(e) {
                    if (!isMultiTouches(e)) {
                        e.stopPropagation();
                        e.preventDefault()
                    }
                }

                function isTouchEventArgs(e) {
                    return e && e.type && 0 === e.type.indexOf("touch")
                }

                function getEventPageX(event) {
                    const originalEvent = event.originalEvent;
                    let result = 0;
                    if (event.pageX) {
                        result = event.pageX
                    } else if (originalEvent && originalEvent.pageX) {
                        result = originalEvent.pageX
                    }
                    if (originalEvent && originalEvent.touches) {
                        if (originalEvent.touches.length > 0) {
                            result = originalEvent.touches[0].pageX
                        } else if (originalEvent.changedTouches.length > 0) {
                            result = originalEvent.changedTouches[0].pageX
                        }
                    }
                    return result
                }

                function initializeAreaEvents(controller, area, state, getRootOffsetLeft) {
                    let isTouchEvent;
                    let isActive = false;
                    let initialPosition;
                    let movingHandler = null;
                    const docEvents = {
                        [_pointer.default.move](e) {
                            let position;
                            let offset;
                            if (isTouchEvent !== isTouchEventArgs(e)) {
                                return
                            }
                            if (!isLeftButtonPressed(e)) {
                                cancel(e)
                            }
                            if (isActive) {
                                position = getEventPageX(e);
                                offset = getRootOffsetLeft();
                                if (movingHandler) {
                                    movingHandler(position - offset, e)
                                } else if (state.manualRangeSelectionEnabled && Math.abs(initialPosition - position) >= MIN_MANUAL_SELECTING_WIDTH) {
                                    movingHandler = controller.placeSliderAndBeginMoving(initialPosition - offset, position - offset, e)
                                }
                            }
                        },
                        [_pointer.default.up](e) {
                            let position;
                            if (isActive) {
                                position = getEventPageX(e);
                                if (!movingHandler && state.moveSelectedRangeByClick && Math.abs(initialPosition - position) < MIN_MANUAL_SELECTING_WIDTH) {
                                    controller.moveSelectedArea(position - getRootOffsetLeft(), e)
                                }
                                cancel(e)
                            }
                        }
                    };

                    function cancel(e) {
                        if (isActive) {
                            isActive = false;
                            if (movingHandler) {
                                movingHandler.complete(e);
                                movingHandler = null
                            }
                        }
                    }
                    area.on(_pointer.default.down, (function(e) {
                        if (!state.enabled || !isLeftButtonPressed(e) || isActive) {
                            return
                        }
                        isActive = true;
                        isTouchEvent = isTouchEventArgs(e);
                        initialPosition = getEventPageX(e)
                    }));
                    return docEvents
                }

                function initializeSelectedAreaEvents(controller, area, state, getRootOffsetLeft) {
                    let isTouchEvent;
                    let isActive = false;
                    let movingHandler = null;
                    const docEvents = {
                        [_pointer.default.move](e) {
                            if (isTouchEvent !== isTouchEventArgs(e)) {
                                return
                            }
                            if (!isLeftButtonPressed(e)) {
                                cancel(e)
                            }
                            if (isActive) {
                                preventDefault(e);
                                movingHandler(getEventPageX(e) - getRootOffsetLeft(), e)
                            }
                        },
                        [_pointer.default.up]: cancel
                    };

                    function cancel(e) {
                        if (isActive) {
                            isActive = false;
                            movingHandler.complete(e);
                            movingHandler = null
                        }
                    }
                    area.on(_pointer.default.down, (function(e) {
                        if (!state.enabled || !isLeftButtonPressed(e) || isActive) {
                            return
                        }
                        isActive = true;
                        isTouchEvent = isTouchEventArgs(e);
                        movingHandler = controller.beginSelectedAreaMoving(getEventPageX(e) - getRootOffsetLeft());
                        stopPropagationAndPreventDefault(e)
                    }));
                    return docEvents
                }

                function initializeSliderEvents(controller, sliders, state, getRootOffsetLeft) {
                    let isTouchEvent;
                    let isActive = false;
                    let movingHandler = null;
                    const docEvents = {
                        [_pointer.default.move](e) {
                            if (isTouchEvent !== isTouchEventArgs(e)) {
                                return
                            }
                            if (!isLeftButtonPressed(e)) {
                                cancel(e)
                            }
                            if (isActive) {
                                preventDefault(e);
                                movingHandler(getEventPageX(e) - getRootOffsetLeft(), e)
                            }
                        },
                        [_pointer.default.up]: cancel
                    };
                    (0, _iterator.each)(sliders, (function(i, slider) {
                        slider.on({
                            [_pointer.default.down](e) {
                                if (!state.enabled || !isLeftButtonPressed(e) || isActive) {
                                    return
                                }
                                isActive = true;
                                isTouchEvent = isTouchEventArgs(e);
                                movingHandler = controller.beginSliderMoving(i, getEventPageX(e) - getRootOffsetLeft());
                                stopPropagationAndPreventDefault(e)
                            },
                            [_pointer.default.move]() {
                                if (!movingHandler) {
                                    controller.foregroundSlider(i)
                                }
                            }
                        })
                    }));

                    function cancel(e) {
                        if (isActive) {
                            isActive = false;
                            movingHandler.complete(e);
                            movingHandler = null
                        }
                    }
                    return docEvents
                }

                function Tracker(params) {
                    const state = this._state = {};
                    const targets = params.controller.getTrackerTargets();
                    if (_support.pointerEvents) {
                        params.renderer.root.css({
                            msTouchAction: "pinch-zoom"
                        })
                    }
                    this._docEvents = [initializeSelectedAreaEvents(params.controller, targets.selectedArea, state, getRootOffsetLeft), initializeAreaEvents(params.controller, targets.area, state, getRootOffsetLeft), initializeSliderEvents(params.controller, targets.sliders, state, getRootOffsetLeft)];
                    (0, _iterator.each)(this._docEvents, (function(_, events) {
                        _events_engine.default.on(_dom_adapter.default.getDocument(), events)
                    }));

                    function getRootOffsetLeft() {
                        return params.renderer.getRootOffset().left
                    }
                }
                Tracker.prototype = {
                    constructor: Tracker,
                    dispose: function() {
                        (0, _iterator.each)(this._docEvents, (function(_, events) {
                            _events_engine.default.off(_dom_adapter.default.getDocument(), events)
                        }))
                    },
                    update: function(enabled, behavior) {
                        const state = this._state;
                        state.enabled = enabled;
                        state.moveSelectedRangeByClick = behavior.moveSelectedRangeByClick;
                        state.manualRangeSelectionEnabled = behavior.manualRangeSelectionEnabled
                    }
                }
            },
        37755:
            /*!***********************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/sankey.js ***!
              \***********************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _sankey = (e = __webpack_require__( /*! ./sankey/sankey */ 78839), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                var _tooltip = __webpack_require__( /*! ./sankey/tooltip */ 24339);
                var _export = __webpack_require__( /*! ./core/export */ 74754);
                var _title = __webpack_require__( /*! ./core/title */ 16216);
                var _tracker = __webpack_require__( /*! ./sankey/tracker */ 85476);
                var _tooltip2 = __webpack_require__( /*! ./core/tooltip */ 23277);
                var _loading_indicator = __webpack_require__( /*! ./core/loading_indicator */ 92528);
                _sankey.default.addPlugin(_export.plugin);
                _sankey.default.addPlugin(_title.plugin);
                _sankey.default.addPlugin(_tracker.plugin);
                _sankey.default.addPlugin(_loading_indicator.plugin);
                _sankey.default.addPlugin(_tooltip2.plugin);
                (0, _tooltip.setTooltipCustomOptions)(_sankey.default);
                exports.default = _sankey.default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        92585:
            /*!*********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/sankey/constants.js ***!
              \*********************************************************************/
            function(__unused_webpack_module, exports) {
                exports.COLOR_MODE_TARGET = exports.COLOR_MODE_SOURCE = exports.COLOR_MODE_NONE = exports.COLOR_MODE_GRADIENT = void 0;
                exports.COLOR_MODE_GRADIENT = "gradient";
                exports.COLOR_MODE_SOURCE = "source";
                exports.COLOR_MODE_TARGET = "target";
                exports.COLOR_MODE_NONE = "none"
            },
        69359:
            /*!**************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/sankey/data_validator.js ***!
              \**************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _graph = (e = __webpack_require__( /*! ./graph */ 2792), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                const validator = {
                    validate: function(data, incidentOccurred) {
                        let result = null;
                        if (this._hasCycle(data)) {
                            result = "E2006";
                            incidentOccurred("E2006")
                        }
                        return result
                    },
                    _hasCycle: function(data) {
                        return _graph.default.struct.hasCycle(data)
                    }
                };
                exports.default = validator;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        2792:
            /*!*****************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/sankey/graph.js ***!
              \*****************************************************************/
            function(module, exports) {
                exports.default = void 0;
                const routines = {
                    maxOfArray: function(arr, callback) {
                        let m = 0;
                        let callback_function = v => v;
                        if (callback) {
                            callback_function = callback
                        }
                        for (let i = 0; i < arr.length; i++) {
                            if (callback_function(arr[i]) > m) {
                                m = callback_function(arr[i])
                            }
                        }
                        return m
                    }
                };
                const getVertices = function(links) {
                    const vert = [];
                    links.forEach((link => {
                        if (-1 === vert.indexOf(link[0])) {
                            vert.push(link[0])
                        }
                        if (-1 === vert.indexOf(link[1])) {
                            vert.push(link[1])
                        }
                    }));
                    return vert
                };
                const getAdjacentVertices = function(links, vertex) {
                    const avert = [];
                    links.forEach((link => {
                        if (link[0] === vertex && -1 === avert.indexOf(link[1])) {
                            avert.push(link[1])
                        }
                    }));
                    return avert
                };
                const getReverseAdjacentVertices = function(links, vertex) {
                    const avert = [];
                    links.forEach((link => {
                        if (link[1] === vertex && -1 === avert.indexOf(link[0])) {
                            avert.push(link[0])
                        }
                    }));
                    return avert
                };
                const struct = {
                    _hasCycle: false,
                    _sortedList: [],
                    hasCycle: function(links) {
                        this._hasCycle = false;
                        this._sortedList = [];
                        const vertices = {};
                        const allVertices = getVertices(links);
                        allVertices.forEach((vertex => {
                            vertices[vertex] = {
                                color: "white"
                            }
                        }));
                        allVertices.forEach((vertex => {
                            if ("white" === vertices[vertex].color) {
                                this._depthFirstSearch(links, vertices, vertex)
                            }
                        }));
                        this._sortedList.reverse();
                        return this._hasCycle
                    },
                    _depthFirstSearch: function(links, vertices, vertex) {
                        vertices[vertex].color = "gray";
                        const averts = getAdjacentVertices(links, vertex);
                        for (let a = 0; a < averts.length; a++) {
                            if ("white" === vertices[averts[a]].color) {
                                this._depthFirstSearch(links, vertices, averts[a])
                            } else if ("gray" === vertices[averts[a]].color) {
                                this._hasCycle = true
                            }
                        }
                        this._sortedList.push({
                            name: vertex,
                            lp: null,
                            incoming: getReverseAdjacentVertices(links, vertex),
                            outgoing: getAdjacentVertices(links, vertex)
                        });
                        vertices[vertex].color = "black"
                    },
                    computeLongestPaths(links) {
                        const sortedVertices = this._sortedList;
                        sortedVertices.forEach((vertex => {
                            const averts = getReverseAdjacentVertices(links, vertex.name);
                            if (0 === averts.length) {
                                vertex.lp = 0
                            } else {
                                const maxLP = [];
                                averts.forEach((adjacentVertex => {
                                    maxLP.push(sortedVertices.filter((sv => sv.name === adjacentVertex))[0].lp)
                                }));
                                vertex.lp = routines.maxOfArray(maxLP) + 1
                            }
                        }));
                        return this._sortedList
                    }
                };
                exports.default = {
                    struct: struct,
                    routines: routines,
                    getVertices: getVertices,
                    getAdjacentVertices: getAdjacentVertices,
                    getReverseAdjacentVertices: getReverseAdjacentVertices
                };
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        58864:
            /*!******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/sankey/layout.js ***!
              \******************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.layout = void 0;
                var _graph = _interopRequireDefault(__webpack_require__( /*! ./graph */ 2792));
                var _data_validator = _interopRequireDefault(__webpack_require__( /*! ./data_validator */ 69359));

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                exports.layout = {
                    _weightPerPixel: null,
                    _getCascadeIdx: function(nodeTitle, cascadesConfig) {
                        const nodeInfo = cascadesConfig.filter((c => c.name === nodeTitle))[0];
                        if (nodeInfo.outgoing.length > 0) {
                            return nodeInfo.lp
                        } else {
                            return _graph.default.routines.maxOfArray(cascadesConfig.map((c => c.lp)))
                        }
                    },
                    _getInWeightForNode: function(nodeTitle, links) {
                        let w = 0;
                        links.forEach((link => {
                            if (link[1] === nodeTitle) {
                                w += link[2]
                            }
                        }));
                        return w
                    },
                    _getOutWeightForNode: function(nodeTitle, links) {
                        let w = 0;
                        links.forEach((link => {
                            if (link[0] === nodeTitle) {
                                w += link[2]
                            }
                        }));
                        return w
                    },
                    _computeCascades: function(links) {
                        const cascadesConfig = _graph.default.struct.computeLongestPaths(links);
                        const maxCascade = _graph.default.routines.maxOfArray(cascadesConfig.map((c => c.lp)));
                        const cascades = [];
                        for (let i = 0; i < maxCascade + 1; i++) {
                            cascades.push({})
                        }
                        links.forEach((link => {
                            let cascade = cascades[this._getCascadeIdx(link[0], cascadesConfig)];
                            if (!cascade[link[0]]) {
                                cascade[link[0]] = {
                                    nodeTitle: link[0]
                                }
                            }
                            cascade = cascades[this._getCascadeIdx(link[1], cascadesConfig)];
                            if (!cascade[link[1]]) {
                                cascade[link[1]] = {
                                    nodeTitle: link[1]
                                }
                            }
                        }));
                        cascades.forEach((cascade => {
                            Object.keys(cascade).forEach((nodeTitle => {
                                const node = cascade[nodeTitle];
                                node.inWeight = this._getInWeightForNode(node.nodeTitle, links);
                                node.outWeight = this._getOutWeightForNode(node.nodeTitle, links);
                                node.maxWeight = Math.max(node.inWeight, node.outWeight)
                            }))
                        }));
                        return cascades
                    },
                    _getWeightForCascade: function(cascades, cascadeIdx) {
                        let wMax = 0;
                        const cascade = cascades[cascadeIdx];
                        Object.keys(cascade).forEach((nodeTitle => {
                            wMax += Math.max(cascade[nodeTitle].inWeight, cascade[nodeTitle].outWeight)
                        }));
                        return wMax
                    },
                    _getMaxWeightThroughCascades: function(cascades) {
                        const max = [];
                        cascades.forEach((cascade => {
                            let mW = 0;
                            Object.keys(cascade).forEach((nodeTitle => {
                                const node = cascade[nodeTitle];
                                mW += Math.max(node.inWeight, node.outWeight)
                            }));
                            max.push(mW)
                        }));
                        return _graph.default.routines.maxOfArray(max)
                    },
                    _computeNodes: function(cascades, options) {
                        const rects = [];
                        const maxWeight = this._getMaxWeightThroughCascades(cascades);
                        const maxNodeNum = _graph.default.routines.maxOfArray(cascades.map((nodesInCascade => Object.keys(nodesInCascade).length)));
                        let nodePadding = options.nodePadding;
                        let heightAvailable = options.height - nodePadding * (maxNodeNum - 1);
                        if (heightAvailable < 0) {
                            nodePadding = 0;
                            heightAvailable = options.height - nodePadding * (maxNodeNum - 1)
                        }
                        this._weightPerPixel = maxWeight / heightAvailable;
                        let cascadeIdx = 0;
                        cascades.forEach((cascade => {
                            const cascadeRects = [];
                            let y = 0;
                            const nodesInCascade = Object.keys(cascade).length;
                            const cascadeHeight = this._getWeightForCascade(cascades, cascadeIdx) / this._weightPerPixel + nodePadding * (nodesInCascade - 1);
                            let cascadeAlign;
                            if (Array.isArray(options.nodeAlign)) {
                                cascadeAlign = cascadeIdx < options.nodeAlign.length ? options.nodeAlign[cascadeIdx] : "center"
                            } else {
                                cascadeAlign = options.nodeAlign
                            }
                            if ("bottom" === cascadeAlign) {
                                y = options.height - cascadeHeight
                            } else if ("center" === cascadeAlign) {
                                y = .5 * (options.height - cascadeHeight)
                            }
                            y = Math.round(y);
                            Object.keys(cascade).forEach((nodeTitle => {
                                cascade[nodeTitle].sort = this._sort && Object.prototype.hasOwnProperty.call(this._sort, nodeTitle) ? this._sort[nodeTitle] : 1
                            }));
                            Object.keys(cascade).sort(((a, b) => cascade[a].sort - cascade[b].sort)).forEach((nodeTitle => {
                                const node = cascade[nodeTitle];
                                const height = Math.floor(heightAvailable * node.maxWeight / maxWeight);
                                const x = Math.round(cascadeIdx * options.width / (cascades.length - 1)) - (0 === cascadeIdx ? 0 : options.nodeWidth);
                                const rect = {};
                                rect._name = nodeTitle;
                                rect.width = options.nodeWidth;
                                rect.height = height;
                                rect.x = x + options.x;
                                rect.y = y + options.y;
                                y += height + nodePadding;
                                cascadeRects.push(rect)
                            }));
                            cascadeIdx++;
                            rects.push(cascadeRects)
                        }));
                        return rects
                    },
                    _findRectByName: function(rects, name) {
                        for (let c = 0; c < rects.length; c++) {
                            for (let r = 0; r < rects[c].length; r++) {
                                if (name === rects[c][r]._name) {
                                    return rects[c][r]
                                }
                            }
                        }
                        return null
                    },
                    _findIndexByName: function(rects, nodeTitle) {
                        let index = 0;
                        for (let c = 0; c < rects.length; c++) {
                            for (let r = 0; r < rects[c].length; r++) {
                                if (nodeTitle === rects[c][r]._name) {
                                    return index
                                }
                                index++
                            }
                        }
                        return null
                    },
                    _computeLinks: function(links, rects, cascades) {
                        const yOffsets = {};
                        const paths = [];
                        const result = [];
                        cascades.forEach((cascade => {
                            Object.keys(cascade).forEach((nodeTitle => {
                                yOffsets[nodeTitle] = {
                                    in: 0,
                                    out: 0
                                }
                            }))
                        }));
                        rects.forEach((rectsOfCascade => {
                            rectsOfCascade.forEach((nodeRect => {
                                const nodeTitle = nodeRect._name;
                                const rectFrom = this._findRectByName(rects, nodeTitle);
                                const linksFromNode = links.filter((link => link[0] === nodeTitle));
                                linksFromNode.forEach((link => {
                                    link.sort = this._findIndexByName(rects, link[1])
                                }));
                                linksFromNode.sort(((a, b) => a.sort - b.sort)).forEach((link => {
                                    const rectTo = this._findRectByName(rects, link[1]);
                                    const height = Math.round(link[2] / this._weightPerPixel);
                                    const yOffsetFrom = yOffsets[link[0]].out;
                                    const yOffsetTo = yOffsets[link[1]].in;
                                    const heightFrom = yOffsets[link[0]].out + height > rectFrom.height ? rectFrom.height - yOffsets[link[0]].out : height;
                                    const heightTo = yOffsets[link[1]].in + height > rectTo.height ? rectTo.height - yOffsets[link[1]].in : height;
                                    paths.push({
                                        from: {
                                            x: rectFrom.x,
                                            y: rectFrom.y + yOffsetFrom,
                                            width: rectFrom.width,
                                            height: heightFrom,
                                            node: rectFrom,
                                            weight: link[2]
                                        },
                                        to: {
                                            x: rectTo.x,
                                            y: rectTo.y + yOffsetTo,
                                            width: rectTo.width,
                                            height: heightTo,
                                            node: rectTo
                                        }
                                    });
                                    yOffsets[link[0]].out += height;
                                    yOffsets[link[1]].in += height
                                }))
                            }))
                        }));
                        paths.forEach((link => {
                            const path = {
                                d: this._spline(link.from, link.to),
                                _boundingRect: {
                                    x: link.from.x + link.from.width,
                                    y: Math.min(link.from.y, link.to.y),
                                    width: link.to.x - (link.from.x + link.from.width),
                                    height: Math.max(link.from.x + link.from.height, link.to.y + link.to.height) - Math.min(link.from.y, link.to.y)
                                },
                                _weight: link.from.weight,
                                _from: link.from.node,
                                _to: link.to.node
                            };
                            result.push(path)
                        }));
                        this._fitAllNodesHeight(rects, paths);
                        return result
                    },
                    _fitNodeHeight: function(nodeName, nodeRects, paths) {
                        const targetRect = this._findRectByName(nodeRects, nodeName);
                        let heightOfLinksSummaryIn = 0;
                        let heightOfLinksSummaryOut = 0;
                        paths.forEach((function(path) {
                            if (path.from.node._name === nodeName) {
                                heightOfLinksSummaryOut += path.from.height
                            }
                            if (path.to.node._name === nodeName) {
                                heightOfLinksSummaryIn += path.to.height
                            }
                        }));
                        targetRect.height = Math.max(heightOfLinksSummaryIn, heightOfLinksSummaryOut)
                    },
                    _fitAllNodesHeight: function(nodeRects, paths) {
                        for (let c = 0; c < nodeRects.length; c++) {
                            for (let r = 0; r < nodeRects[c].length; r++) {
                                this._fitNodeHeight(nodeRects[c][r]._name, nodeRects, paths)
                            }
                        }
                    },
                    _spline: function(rectLeft, rectRight) {
                        const p_UpLeft_x = rectLeft.x + rectLeft.width,
                            p_UpLeft_y = rectLeft.y;
                        const p_DownLeft_x = rectLeft.x + rectLeft.width,
                            p_DownLeft_y = rectLeft.y + rectLeft.height;
                        const p_UpRight_x = rectRight.x,
                            p_UpRight_y = rectRight.y;
                        const p_DownRight_x = rectRight.x,
                            p_DownRight_y = rectRight.y + rectRight.height;
                        const curve_width = .3 * (p_UpRight_x - p_UpLeft_x);
                        const result = `M ${p_UpLeft_x} ${p_UpLeft_y} C ${p_UpLeft_x+curve_width} ${p_UpLeft_y} ${p_UpRight_x-curve_width} ${p_UpRight_y} ${p_UpRight_x} ${p_UpRight_y} L ${p_DownRight_x} ${p_DownRight_y} C ${p_DownRight_x-curve_width} ${p_DownRight_y} ${p_DownLeft_x+curve_width} ${p_DownLeft_y} ${p_DownLeft_x} ${p_DownLeft_y} Z`;
                        return result
                    },
                    computeLayout: function(linksData, sortData, options, incidentOccurred) {
                        this._sort = sortData;
                        const result = {};
                        const validateResult = _data_validator.default.validate(linksData, incidentOccurred);
                        if (!validateResult) {
                            result.cascades = this._computeCascades(linksData);
                            result.nodes = this._computeNodes(result.cascades, {
                                width: options.availableRect.width,
                                height: options.availableRect.height,
                                x: options.availableRect.x,
                                y: options.availableRect.y,
                                nodePadding: options.nodePadding,
                                nodeWidth: options.nodeWidth,
                                nodeAlign: options.nodeAlign
                            });
                            result.links = this._computeLinks(linksData, result.nodes, result.cascades)
                        } else {
                            result.error = validateResult
                        }
                        return result
                    },
                    overlap: function(box1, box2) {
                        return !(box2.x > box1.x + box1.width || box2.x + box2.width < box1.x || box2.y >= box1.y + box1.height || box2.y + box2.height <= box1.y)
                    }
                }
            },
        32150:
            /*!*********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/sankey/link_item.js ***!
              \*********************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _constants = __webpack_require__( /*! ./constants */ 92585);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 11528);
                const states = ["normal", "adjacentNodeHover", "hover"];

                function compileAttrs(color, itemOptions, itemBaseOptions, gradient) {
                    const border = itemOptions.border;
                    const baseBorder = itemBaseOptions.border;
                    const borderVisible = (0, _type.isDefined)(border.visible) ? border.visible : baseBorder.visible;
                    const borderWidth = (0, _type.isDefined)(border.width) ? border.width : baseBorder.width;
                    const borderOpacity = (0, _type.isDefined)(border.opacity) ? border.opacity : (0, _type.isDefined)(baseBorder.opacity) ? baseBorder.opacity : 1;
                    const opacity = (0, _type.isDefined)(itemOptions.opacity) ? itemOptions.opacity : (0, _type.isDefined)(itemBaseOptions.opacity) ? itemBaseOptions.opacity : 1;
                    let fill = itemOptions.color || color;
                    if (itemBaseOptions.colorMode === _constants.COLOR_MODE_TARGET || itemBaseOptions.colorMode === _constants.COLOR_MODE_SOURCE) {
                        fill = color
                    } else if (itemBaseOptions.colorMode === _constants.COLOR_MODE_GRADIENT && gradient && (0, _type.isDefined)(gradient.id)) {
                        fill = gradient.id
                    }
                    return {
                        fill: fill,
                        "stroke-width": borderVisible ? borderWidth : 0,
                        stroke: itemOptions.border.color || itemBaseOptions.border.color,
                        "stroke-opacity": borderOpacity,
                        opacity: opacity,
                        hatching: itemOptions.hatching
                    }
                }

                function Link(widget, params) {
                    const widgetOffset = widget._renderer.getRootOffset();
                    this.code = 0;
                    this.widget = widget;
                    this.color = params.color;
                    this.connection = params.connection;
                    this.d = params.d;
                    this.options = params.options;
                    this.boundingRect = params.boundingRect, this.coords = {
                        x: params.boundingRect.x + params.boundingRect.width / 2 + widgetOffset.left,
                        y: params.boundingRect.y + params.boundingRect.height / 2 + widgetOffset.top
                    };
                    this.states = {
                        normal: compileAttrs(this.color, this.options, this.options, params.gradient),
                        adjacentNodeHover: compileAttrs(this.color, {
                            opacity: 0,
                            border: {}
                        }, this.options, params.gradient),
                        hover: compileAttrs(this.color, {
                            opacity: 0,
                            border: {}
                        }, this.options, params.gradient)
                    };
                    this.overlayStates = {
                        normal: compileAttrs(this.color, {
                            opacity: 0,
                            border: {}
                        }, this.options),
                        adjacentNodeHover: compileAttrs(this.color, this.options.hoverStyle, this.options),
                        hover: compileAttrs(this.color, this.options.hoverStyle, this.options)
                    }
                }
                Link.prototype = {
                    getState: function() {
                        return states[this.code]
                    },
                    isHovered: function() {
                        return 2 === this.code
                    },
                    isAdjacentNodeHovered: function() {
                        return 1 === this.code
                    },
                    setState: function(code, state) {
                        if (state) {
                            this.code = code
                        } else {
                            this.code = 0;
                            this.hideTooltip()
                        }
                        this.widget._applyLinksAppearance()
                    },
                    setHover: function() {
                        this.hover(true)
                    },
                    hover: function(state) {
                        if (!this.widget._getOption("hoverEnabled", true) || state === this.isHovered()) {
                            return
                        }
                        this.widget._suspend();
                        state && this.widget.clearHover();
                        this.setState(2, state);
                        this.widget._eventTrigger("linkHoverChanged", {
                            target: this
                        });
                        this.widget._resume()
                    },
                    adjacentNodeHover: function(state) {
                        if (!this.widget._getOption("hoverEnabled", true) || state === this.isAdjacentNodeHovered()) {
                            return
                        }
                        this.widget._suspend();
                        this.setState(1, state);
                        this.widget._resume()
                    },
                    setAdjacentNodeHover: function() {
                        this.adjacentNodeHover(true)
                    },
                    showTooltip: function(coords) {
                        this.widget._getOption("hoverEnabled", true) && this.widget._tooltip && this.widget._tooltip.show({
                            type: "link",
                            info: {
                                source: this.connection.source,
                                target: this.connection.target,
                                weight: this.connection.weight
                            }
                        }, "undefined" !== typeof coords ? {
                            x: coords[0],
                            y: coords[1]
                        } : this.coords)
                    },
                    hideTooltip: function() {
                        this.widget._tooltip && this.widget._tooltip.hide()
                    }
                };
                exports.default = Link;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        4442:
            /*!*********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/sankey/node_item.js ***!
              \*********************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _type = __webpack_require__( /*! ../../core/utils/type */ 11528);
                var _utils = __webpack_require__( /*! ../core/utils */ 28779);
                const states = ["normal", "hover"];

                function compileAttrs(color, itemOptions, itemBaseOptions) {
                    const border = itemOptions.border;
                    const baseBorder = itemBaseOptions.border;
                    const borderVisible = (0, _type.isDefined)(border.visible) ? border.visible : baseBorder.visible;
                    const borderWidth = (0, _type.isDefined)(border.width) ? border.width : baseBorder.width;
                    const borderOpacity = (0, _type.isDefined)(border.opacity) ? border.opacity : (0, _type.isDefined)(baseBorder.opacity) ? baseBorder.opacity : 1;
                    const opacity = (0, _type.isDefined)(itemOptions.opacity) ? itemOptions.opacity : (0, _type.isDefined)(itemBaseOptions.opacity) ? itemBaseOptions.opacity : 1;
                    return {
                        fill: itemOptions.color || color,
                        "stroke-width": borderVisible ? borderWidth : 0,
                        stroke: itemOptions.border.color || itemBaseOptions.border.color,
                        "stroke-opacity": borderOpacity,
                        opacity: opacity,
                        hatching: itemOptions.hatching
                    }
                }

                function Node(widget, params) {
                    const widgetOffset = widget._renderer.getRootOffset();
                    this.code = 0;
                    this.widget = widget;
                    this.color = params.color;
                    this.options = params.options;
                    this.rect = params.rect;
                    this.label = params.rect._name;
                    this.coords = {
                        x: params.rect.x + params.rect.width / 2 + widgetOffset.left,
                        y: params.rect.y + params.rect.height / 2 + widgetOffset.top
                    };
                    this.id = params.id;
                    this.linksIn = params.linksIn;
                    this.linksOut = params.linksOut;
                    this.states = {
                        normal: compileAttrs(this.color, this.options, this.options),
                        hover: compileAttrs(this.color, this.options.hoverStyle, this.options)
                    }
                }
                Node.prototype = {
                    compileAttrs: function() {
                        return compileAttrs(this.color, this.options)
                    },
                    getState: function() {
                        return states[this.code]
                    },
                    isHovered: function() {
                        return !!(1 & this.code)
                    },
                    setState: function(code, state) {
                        if (state) {
                            this.code |= code
                        } else {
                            this.code &= ~code
                        }
                        if (state) {
                            this.linksIn.concat(this.linksOut).forEach((adjacentLink => {
                                this.widget._links[adjacentLink.index].setAdjacentNodeHover(true)
                            }))
                        } else {
                            this.widget._links.forEach((function(link) {
                                link.isAdjacentNodeHovered() && link.adjacentNodeHover(false)
                            }));
                            this.hideTooltip()
                        }
                        this.widget._applyNodesAppearance();
                        this.widget._applyLinksAppearance()
                    },
                    hover: function(state) {
                        if (!this.widget._getOption("hoverEnabled", true) || state === this.isHovered()) {
                            return
                        }
                        this.widget._suspend();
                        state && this.widget.clearHover();
                        this.setState(1, state);
                        this.widget._eventTrigger("nodeHoverChanged", {
                            target: this
                        });
                        this.widget._resume()
                    },
                    setHover: function() {
                        this.hover(true)
                    },
                    showTooltip: function(coords) {
                        this.widget._getOption("hoverEnabled", true) && this.widget._tooltip && this.widget._tooltip.show({
                            type: "node",
                            info: {
                                label: this.label,
                                title: this.label,
                                weightIn: this.linksIn.reduce((function(previousValue, currentValue) {
                                    return previousValue + currentValue.weight
                                }), 0),
                                weightOut: this.linksOut.reduce((function(previousValue, currentValue) {
                                    return previousValue + currentValue.weight
                                }), 0)
                            }
                        }, "undefined" !== typeof coords ? {
                            x: coords[0],
                            y: coords[1]
                        } : this.coords)
                    },
                    hideTooltip: function() {
                        this.widget._tooltip && this.widget._tooltip.hide()
                    },
                    getLabelAttributes: function(labelSettings, filter) {
                        return function(labelOptions, filter, node) {
                            const _patchFontOptions = _utils.patchFontOptions;
                            if (labelOptions.useNodeColors) {
                                labelOptions.font.color = node.color
                            }
                            const borderVisible = (0, _type.isDefined)(labelOptions.border.visible) ? labelOptions.border.visible : false;
                            const borderWidth = (0, _type.isDefined)(labelOptions.border.width) ? labelOptions.border.width : 0;
                            const borderColor = (0, _type.isDefined)(labelOptions.border.color) ? labelOptions.border.color : labelOptions.font.color;
                            const borderOpacity = (0, _type.isDefined)(labelOptions.border.opacity) ? labelOptions.border.opacity : 1;
                            const attr = {
                                filter: filter
                            };
                            if (borderVisible && borderWidth) {
                                attr.stroke = borderColor;
                                attr["stroke-width"] = borderVisible ? borderWidth : 0;
                                attr["stroke-opacity"] = borderOpacity
                            }
                            return {
                                attr: attr,
                                css: _patchFontOptions(labelOptions.font)
                            }
                        }(labelSettings, filter, this)
                    }
                };
                exports.default = Node;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        78839:
            /*!******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/sankey/sankey.js ***!
              \******************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _constants = __webpack_require__( /*! ./constants */ 92585);
                var _common = __webpack_require__( /*! ../../core/utils/common */ 17781);
                var _node_item = _interopRequireDefault(__webpack_require__( /*! ./node_item */ 4442));
                var _link_item = _interopRequireDefault(__webpack_require__( /*! ./link_item */ 32150));
                var _layout = __webpack_require__( /*! ./layout */ 58864);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 11528);
                var _m_base_widget = _interopRequireDefault(__webpack_require__( /*! ../../__internal/viz/core/m_base_widget */ 34506));
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 92848));
                var _data_source = __webpack_require__( /*! ../core/data_source */ 25058);

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }

                function getConnectedLinks(layout, nodeName, linkType) {
                    const result = [];
                    const attrName = "in" === linkType ? "_to" : "_from";
                    const invertedAttrName = "in" === linkType ? "_from" : "_to";
                    layout.links.map((link => link[attrName]._name === nodeName)).forEach(((connected, idx) => {
                        connected && result.push({
                            index: idx,
                            weight: layout.links[idx]._weight,
                            node: layout.links[idx][invertedAttrName]._name
                        })
                    }));
                    return result
                }
                const dxSankey = _m_base_widget.default.inherit({
                    _rootClass: "dxs-sankey",
                    _rootClassPrefix: "dxs",
                    _proxyData: [],
                    _optionChangesMap: {
                        dataSource: "DATA_SOURCE",
                        sortData: "DATA_SOURCE",
                        alignment: "DATA_SOURCE",
                        node: "BUILD_LAYOUT",
                        label: "LABELS",
                        link: "BUILD_LAYOUT",
                        palette: "BUILD_LAYOUT",
                        paletteExtensionMode: "BUILD_LAYOUT"
                    },
                    _themeDependentChanges: ["BUILD_LAYOUT"],
                    _getDefaultSize: function() {
                        return {
                            width: 400,
                            height: 400
                        }
                    },
                    _themeSection: "sankey",
                    _fontFields: ["label.font"],
                    _optionChangesOrder: ["DATA_SOURCE"],
                    _initialChanges: ["DATA_SOURCE"],
                    _initCore: function() {
                        this._groupLinks = this._renderer.g().append(this._renderer.root);
                        this._groupNodes = this._renderer.g().append(this._renderer.root);
                        this._groupLabels = this._renderer.g().attr({
                            class: this._rootClassPrefix + "-labels"
                        }).append(this._renderer.root);
                        this._drawLabels = true;
                        this._nodes = [];
                        this._links = [];
                        this._gradients = []
                    },
                    _disposeCore: _common.noop,
                    _applySize: function(rect) {
                        this._rect = rect.slice();
                        const adaptiveLayout = this._getOption("adaptiveLayout");
                        if (adaptiveLayout.keepLabels || this._rect[2] - this._rect[0] > adaptiveLayout.width) {
                            this._drawLabels = true
                        } else {
                            this._drawLabels = false
                        }
                        this._change(["BUILD_LAYOUT"]);
                        return this._rect
                    },
                    _eventsMap: {
                        onNodeHoverChanged: {
                            name: "nodeHoverChanged"
                        },
                        onLinkHoverChanged: {
                            name: "linkHoverChanged"
                        }
                    },
                    _customChangesOrder: ["BUILD_LAYOUT", "NODES_DRAW", "LINKS_DRAW", "LABELS", "DRAWN"],
                    _dataSourceChangedHandler: function() {
                        this._requestChange(["BUILD_LAYOUT"])
                    },
                    _change_DRAWN: function() {
                        this._drawn()
                    },
                    _change_DATA_SOURCE: function() {
                        this._change(["DRAWN"]);
                        this._updateDataSource()
                    },
                    _change_LABELS: function() {
                        this._applyLabelsAppearance()
                    },
                    _change_BUILD_LAYOUT: function() {
                        this._groupNodes.clear();
                        this._groupLinks.clear();
                        this._groupLabels.clear();
                        this._buildLayout()
                    },
                    _change_NODES_DRAW: function() {
                        const that = this;
                        const nodes = that._nodes;
                        nodes.forEach((function(node, index) {
                            const element = that._renderer.rect().attr(node.rect).append(that._groupNodes);
                            node.element = element
                        }));
                        this._applyNodesAppearance()
                    },
                    _change_LINKS_DRAW: function() {
                        const that = this;
                        const links = that._links;
                        links.forEach((function(link, index) {
                            const group = that._renderer.g().attr({
                                class: "link",
                                "data-link-idx": index
                            }).append(that._groupLinks);
                            link.overlayElement = that._renderer.path([], "area").attr({
                                d: link.d
                            }).append(group);
                            link.element = that._renderer.path([], "area").attr({
                                d: link.d
                            }).append(group)
                        }));
                        this._applyLinksAppearance()
                    },
                    _suspend: function() {
                        if (!this._applyingChanges) {
                            this._suspendChanges()
                        }
                    },
                    _resume: function() {
                        if (!this._applyingChanges) {
                            this._resumeChanges()
                        }
                    },
                    _showTooltip: _common.noop,
                    hideTooltip: _common.noop,
                    clearHover: function() {
                        this._suspend();
                        this._nodes.forEach((function(node) {
                            node.isHovered() && node.hover(false)
                        }));
                        this._links.forEach((function(link) {
                            link.isHovered() && link.hover(false);
                            link.isAdjacentNodeHovered() && link.adjacentNodeHover(false)
                        }));
                        this._resume()
                    },
                    _applyNodesAppearance: function() {
                        this._nodes.forEach((function(node) {
                            const state = node.getState();
                            node.element.smartAttr(node.states[state])
                        }))
                    },
                    _applyLinksAppearance: function() {
                        this._links.forEach((function(link) {
                            const state = link.getState();
                            link.element.smartAttr(link.states[state]);
                            link.overlayElement.smartAttr(link.overlayStates[state])
                        }))
                    },
                    _hitTestTargets: function(x, y) {
                        const that = this;
                        let data;
                        this._proxyData.some((function(callback) {
                            data = callback.call(that, x, y);
                            if (data) {
                                return true
                            }
                        }));
                        return data
                    },
                    _getData: function() {
                        const that = this;
                        const data = that._dataSourceItems() || [];
                        const sourceField = that._getOption("sourceField", true);
                        const targetField = that._getOption("targetField", true);
                        const weightField = that._getOption("weightField", true);
                        const processedData = [];
                        data.forEach((function(item) {
                            const hasItemOwnProperty = Object.prototype.hasOwnProperty.bind(item);
                            if (!hasItemOwnProperty(sourceField)) {
                                that._incidentOccurred("E2007", sourceField)
                            } else if (!hasItemOwnProperty(targetField)) {
                                that._incidentOccurred("E2007", targetField)
                            } else if (!hasItemOwnProperty(weightField)) {
                                that._incidentOccurred("E2007", weightField)
                            } else if (!(0, _type.isString)(item[sourceField])) {
                                that._incidentOccurred("E2008", sourceField)
                            } else if (!(0, _type.isString)(item[targetField])) {
                                that._incidentOccurred("E2008", targetField)
                            } else if (!(0, _type.isNumeric)(item[weightField]) || item[weightField] <= 0) {
                                that._incidentOccurred("E2009", weightField)
                            } else {
                                processedData.push([item[sourceField], item[targetField], item[weightField]])
                            }
                        }));
                        return processedData
                    },
                    _buildLayout: function() {
                        const that = this;
                        const data = that._getData();
                        const availableRect = this._rect;
                        const nodeOptions = that._getOption("node");
                        const sortData = that._getOption("sortData");
                        const layoutBuilder = that._getOption("layoutBuilder", true) || _layout.layout;
                        const rect = {
                            x: availableRect[0],
                            y: availableRect[1],
                            width: availableRect[2] - availableRect[0],
                            height: availableRect[3] - availableRect[1]
                        };
                        const layout = layoutBuilder.computeLayout(data, sortData, {
                            availableRect: rect,
                            nodePadding: nodeOptions.padding,
                            nodeWidth: nodeOptions.width,
                            nodeAlign: that._getOption("alignment", true)
                        }, that._incidentOccurred);
                        that._layoutMap = layout;
                        if (!Object.prototype.hasOwnProperty.call(layout, "error")) {
                            const nodeColors = {};
                            let nodeIdx = 0;
                            const linkOptions = that._getOption("link");
                            const totalNodesNum = layout.nodes.map((item => item.length)).reduce(((previousValue, currentValue) => previousValue + currentValue), 0);
                            const palette = that._themeManager.createPalette(that._getOption("palette", true), {
                                useHighlight: true,
                                extensionMode: that._getOption("paletteExtensionMode", true),
                                count: totalNodesNum
                            });
                            that._nodes = [];
                            that._links = [];
                            that._gradients.forEach((gradient => {
                                gradient.dispose()
                            }));
                            that._gradients = [];
                            that._shadowFilter && that._shadowFilter.dispose();
                            layout.nodes.forEach((cascadeNodes => {
                                cascadeNodes.forEach((node => {
                                    const color = nodeOptions.color || palette.getNextColor();
                                    const nodeItem = new _node_item.default(that, {
                                        id: nodeIdx,
                                        color: color,
                                        rect: node,
                                        options: nodeOptions,
                                        linksIn: getConnectedLinks(layout, node._name, "in"),
                                        linksOut: getConnectedLinks(layout, node._name, "out")
                                    });
                                    that._nodes.push(nodeItem);
                                    nodeIdx++;
                                    nodeColors[node._name] = color
                                }))
                            }));
                            layout.links.forEach((link => {
                                let gradient = null;
                                if (linkOptions.colorMode === _constants.COLOR_MODE_GRADIENT) {
                                    gradient = that._renderer.linearGradient([{
                                        offset: "0%",
                                        "stop-color": nodeColors[link._from._name]
                                    }, {
                                        offset: "100%",
                                        "stop-color": nodeColors[link._to._name]
                                    }]);
                                    this._gradients.push(gradient)
                                }
                                let color = linkOptions.color;
                                if (linkOptions.colorMode === _constants.COLOR_MODE_SOURCE) {
                                    color = nodeColors[link._from._name]
                                } else if (linkOptions.colorMode === _constants.COLOR_MODE_TARGET) {
                                    color = nodeColors[link._to._name]
                                }
                                const linkItem = new _link_item.default(that, {
                                    d: link.d,
                                    boundingRect: link._boundingRect,
                                    color: color,
                                    options: linkOptions,
                                    connection: {
                                        source: link._from._name,
                                        target: link._to._name,
                                        weight: link._weight
                                    },
                                    gradient: gradient
                                });
                                that._links.push(linkItem)
                            }));
                            that._renderer.initDefsElements();
                            that._change(["NODES_DRAW", "LINKS_DRAW", "LABELS"])
                        }
                        that._change(["DRAWN"])
                    },
                    _applyLabelsAppearance: function() {
                        const that = this;
                        const labelOptions = that._getOption("label");
                        const availableWidth = that._rect[2] - that._rect[0];
                        const nodeOptions = that._getOption("node");
                        that._shadowFilter = that._renderer.shadowFilter("-50%", "-50%", "200%", "200%").attr(labelOptions.shadow);
                        that._groupLabels.clear();
                        if (that._drawLabels && labelOptions.visible) {
                            const availableLabelWidth = (availableWidth - (nodeOptions.width + labelOptions.horizontalOffset) - that._layoutMap.cascades.length * nodeOptions.width) / (that._layoutMap.cascades.length - 1) - labelOptions.horizontalOffset;
                            that._nodes.forEach((function(node) {
                                that._createLabel(node, labelOptions, that._shadowFilter.id);
                                ! function(node, labelOptions, availableLabelWidth, rect) {
                                    if (node._label.getBBox().width > availableLabelWidth) {
                                        node.labelText.applyEllipsis(availableLabelWidth)
                                    }
                                    const bBox = node._label.getBBox();
                                    const verticalOffset = labelOptions.verticalOffset;
                                    const horizontalOffset = labelOptions.horizontalOffset;
                                    let labelOffsetY = Math.round(node.rect.y + node.rect.height / 2 - bBox.y - bBox.height / 2) + verticalOffset;
                                    let labelOffsetX = node.rect.x + horizontalOffset + node.rect.width - bBox.x;
                                    if (labelOffsetX + bBox.width >= rect[2] - rect[0]) {
                                        labelOffsetX = node.rect.x - horizontalOffset - bBox.x - bBox.width
                                    }
                                    if (labelOffsetY >= rect[3]) {
                                        labelOffsetY = rect[3]
                                    }
                                    if (labelOffsetY - bBox.height < rect[1]) {
                                        labelOffsetY = node.rect.y - bBox.y + verticalOffset
                                    }
                                    node.labelText.attr({
                                        translateX: labelOffsetX,
                                        translateY: labelOffsetY
                                    })
                                }(node, labelOptions, availableLabelWidth, that._rect)
                            }));
                            if ("none" !== labelOptions.overlappingBehavior) {
                                that._nodes.forEach((function(thisNode) {
                                    const thisBox = thisNode._label.getBBox();
                                    that._nodes.forEach((function(otherNode) {
                                        const otherBox = otherNode._label.getBBox();
                                        if (thisNode.id !== otherNode.id && _layout.layout.overlap(thisBox, otherBox)) {
                                            if ("ellipsis" === labelOptions.overlappingBehavior) {
                                                thisNode.labelText.applyEllipsis(otherBox.x - thisBox.x)
                                            } else if ("hide" === labelOptions.overlappingBehavior) {
                                                thisNode.labelText.remove()
                                            }
                                        }
                                    }))
                                }))
                            }
                        }
                    },
                    _createLabel: function(node, labelOptions, filter) {
                        const textData = labelOptions.customizeText(node);
                        const settings = node.getLabelAttributes(labelOptions, filter);
                        if (textData) {
                            node._label = this._renderer.g().append(this._groupLabels);
                            node.labelText = this._renderer.text(textData).attr(settings.attr).css(settings.css);
                            node.labelText.append(node._label)
                        }
                    },
                    _getMinSize: function() {
                        const adaptiveLayout = this._getOption("adaptiveLayout");
                        return [adaptiveLayout.width, adaptiveLayout.height]
                    },
                    getAllNodes: function() {
                        return this._nodes.slice()
                    },
                    getAllLinks: function() {
                        return this._links.slice()
                    }
                });
                (0, _component_registrator.default)("dxSankey", dxSankey);
                exports.default = dxSankey;
                dxSankey.addPlugin(_data_source.plugin);
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        24339:
            /*!*******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/sankey/tooltip.js ***!
              \*******************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.setTooltipCustomOptions = function(sankey) {
                    sankey.prototype._setTooltipOptions = function() {
                        const tooltip = this._tooltip;
                        const options = tooltip && this._getOption("tooltip");
                        let linkTemplate;
                        let nodeTemplate;
                        if (options.linkTooltipTemplate) {
                            linkTemplate = this._getTemplate(options.linkTooltipTemplate)
                        }
                        if (options.nodeTooltipTemplate) {
                            nodeTemplate = this._getTemplate(options.nodeTooltipTemplate)
                        }
                        tooltip && tooltip.update((0, _extend2.extend)({}, options, {
                            customizeTooltip: function(args) {
                                if (!(linkTemplate && "link" === args.type || nodeTemplate && "node" === args.type)) {
                                    args.skipTemplate = true
                                }
                                const formatter = value => tooltip.formatValue(value);
                                if ("node" === args.type) {
                                    return generateCustomCallback(options.customizeNodeTooltip, defaultCustomizeNodeTooltip(formatter))(args.info)
                                } else if ("link" === args.type) {
                                    return generateCustomCallback(options.customizeLinkTooltip, defaultCustomizeLinkTooltip(formatter))(args.info)
                                }
                                return {}
                            },
                            contentTemplate(arg, div) {
                                const templateArgs = {
                                    model: arg.info,
                                    container: div
                                };
                                if (linkTemplate && "link" === arg.type) {
                                    return linkTemplate.render(templateArgs)
                                }
                                if (nodeTemplate && "node" === arg.type) {
                                    return nodeTemplate.render(templateArgs)
                                }
                            },
                            enabled: options.enabled
                        }))
                    };
                    sankey.prototype.hideTooltip = function() {
                        this._tooltip && this._tooltip.hide()
                    }
                };
                var _extend2 = __webpack_require__( /*! ../../core/utils/extend */ 52576);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 11528);
                const defaultCustomizeLinkTooltip = formatter => function(info) {
                    return {
                        html: `<strong>${info.source} > ${info.target}</strong><br/>Weight: ${formatter(info.weight)}`
                    }
                };
                const defaultCustomizeNodeTooltip = formatter => function(info) {
                    return {
                        html: `<strong>${info.label}</strong><br/>Incoming weight: ${formatter(info.weightIn)}<br/>Outgoing weight: ${formatter(info.weightOut)}`
                    }
                };
                const generateCustomCallback = function(customCallback, defaultCallback) {
                    return function(objectInfo) {
                        let res = (0, _type.isFunction)(customCallback) ? customCallback.call(objectInfo, objectInfo) : {};
                        const hasOwnProperty = Object.prototype.hasOwnProperty.bind(res);
                        if (!hasOwnProperty("html") && !hasOwnProperty("text")) {
                            res = (0, _extend2.extend)(res, defaultCallback.call(objectInfo, objectInfo))
                        }
                        return res
                    }
                }
            },
        85476:
            /*!*******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/sankey/tracker.js ***!
              \*******************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.plugin = void 0;
                var _sankey = (e = __webpack_require__( /*! ./sankey */ 78839), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                var _tracker = __webpack_require__( /*! ../components/tracker */ 16197);
                const proto = _sankey.default.prototype;
                let dataKeyModifier = 0;
                proto._eventsMap.onNodeClick = {
                    name: "nodeClick"
                };
                proto._eventsMap.onLinkClick = {
                    name: "linkClick"
                };
                exports.plugin = {
                    name: "tracker",
                    init: function() {
                        const that = this;
                        const dataKey = "__sankey_data_" + dataKeyModifier++;
                        that._tracker = new _tracker.Tracker({
                            widget: that,
                            root: that._renderer.root,
                            getData: function(e) {
                                const target = e.target;
                                return target[dataKey]
                            },
                            getNode: function(index) {
                                if (index < that._nodes.length) {
                                    return that._nodes[index]
                                } else {
                                    return that._links[index - that._nodes.length]
                                }
                            },
                            click: function(e) {
                                const eventName = this.getData(e.event) < that._nodes.length ? "nodeClick" : "linkClick";
                                that._eventTrigger(eventName, {
                                    target: e.node,
                                    event: e.event
                                })
                            }
                        });
                        this._dataKey = dataKey
                    },
                    dispose: function() {
                        this._tracker.dispose()
                    },
                    extenders: {
                        _change_LINKS_DRAW: function() {
                            const dataKey = this._dataKey;
                            this._nodes.concat(this._links).forEach((function(item, index) {
                                item.element.data(dataKey, index)
                            }))
                        }
                    }
                }
            },
        46283:
            /*!***********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/series/area_series.js ***!
              \***********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.polar = exports.chart = void 0;
                var _object = __webpack_require__( /*! ../../core/utils/object */ 22263);
                var _extend2 = __webpack_require__( /*! ../../core/utils/extend */ 52576);
                var _scatter_series = __webpack_require__( /*! ./scatter_series */ 24008);
                var _line_series = __webpack_require__( /*! ./line_series */ 85854);
                var _utils = __webpack_require__( /*! ../core/utils */ 28779);
                const chartLineSeries = _line_series.chart.line;
                const polarLineSeries = _line_series.polar.line;
                const _extend = _extend2.extend;
                const calculateBezierPoints = _line_series.chart.spline._calculateBezierPoints;
                const chart = exports.chart = {};
                const polar = exports.polar = {};
                const baseAreaMethods = {
                    _createBorderElement: chartLineSeries._createMainElement,
                    _createLegendState: function(styleOptions, defaultColor) {
                        return {
                            fill: (0, _utils.extractColor)(styleOptions.color) || defaultColor,
                            opacity: styleOptions.opacity,
                            hatching: styleOptions.hatching,
                            filter: styleOptions.highlight
                        }
                    },
                    _getColorId: function(options) {
                        var _options$color;
                        return null === (_options$color = options.color) || void 0 === _options$color ? void 0 : _options$color.fillId
                    },
                    getValueRangeInitialValue: function() {
                        if ("logarithmic" !== this.valueAxisType && "datetime" !== this.valueType && false !== this.showZero) {
                            return 0
                        } else {
                            return _scatter_series.chart.getValueRangeInitialValue.call(this)
                        }
                    },
                    _getDefaultSegment: function(segment) {
                        const defaultSegment = chartLineSeries._getDefaultSegment(segment);
                        defaultSegment.area = defaultSegment.line.concat(defaultSegment.line.slice().reverse());
                        return defaultSegment
                    },
                    _updateElement: function(element, segment, animate, complete) {
                        const lineParams = {
                            points: segment.line
                        };
                        const areaParams = {
                            points: segment.area
                        };
                        const borderElement = element.line;
                        if (animate) {
                            borderElement && borderElement.animate(lineParams);
                            element.area.animate(areaParams, {}, complete)
                        } else {
                            borderElement && borderElement.attr(lineParams);
                            element.area.attr(areaParams)
                        }
                    },
                    _removeElement: function(element) {
                        element.line && element.line.remove();
                        element.area.remove()
                    },
                    _drawElement: function(segment) {
                        return {
                            line: this._bordersGroup && this._createBorderElement(segment.line, {
                                "stroke-width": this._styles.normal.border["stroke-width"]
                            }).append(this._bordersGroup),
                            area: this._createMainElement(segment.area).append(this._elementsGroup)
                        }
                    },
                    _applyStyle: function(style) {
                        this._elementsGroup && this._elementsGroup.smartAttr(style.elements);
                        this._bordersGroup && this._bordersGroup.attr(style.border);
                        (this._graphics || []).forEach((function(graphic) {
                            graphic.line && graphic.line.attr({
                                "stroke-width": style.border["stroke-width"]
                            }).sharp()
                        }))
                    },
                    _parseStyle: function(options, defaultColor, defaultBorderColor) {
                        const borderOptions = options.border || {};
                        const borderStyle = chartLineSeries._parseLineOptions(borderOptions, defaultBorderColor);
                        borderStyle.stroke = borderOptions.visible && borderStyle["stroke-width"] ? borderStyle.stroke : "none";
                        borderStyle["stroke-width"] = borderStyle["stroke-width"] || 1;
                        return {
                            border: borderStyle,
                            elements: {
                                stroke: "none",
                                fill: (0, _utils.extractColor)(options.color) || defaultColor,
                                hatching: options.hatching,
                                opacity: options.opacity,
                                filter: options.highlight ?? null
                            }
                        }
                    },
                    _areBordersVisible: function() {
                        const options = this._options;
                        return options.border.visible || options.hoverStyle.border.visible || options.selectionStyle.border.visible
                    },
                    _createMainElement: function(points, settings) {
                        return this._renderer.path(points, "area").attr(settings)
                    },
                    _getTrackerSettings: function(segment) {
                        return {
                            "stroke-width": segment.singlePointSegment ? this._defaultTrackerWidth : 0
                        }
                    },
                    _getMainPointsFromSegment: function(segment) {
                        return segment.area
                    }
                };
                const areaSeries = chart.area = _extend({}, chartLineSeries, baseAreaMethods, {
                    _prepareSegment(points, rotated) {
                        const processedPoints = this._processSinglePointsAreaSegment(points, rotated);
                        const areaPoints = function(points) {
                            return (0, _utils.map)(points, (function(pt) {
                                return pt.getCoords()
                            })).concat((0, _utils.map)(points.slice().reverse(), (function(pt) {
                                return pt.getCoords(true)
                            })))
                        }(processedPoints);
                        const argAxis = this.getArgumentAxis();
                        if (argAxis.getAxisPosition) {
                            const argAxisPosition = argAxis.getAxisPosition();
                            const axisOptions = argAxis.getOptions();
                            const edgeOffset = (!rotated ? -1 : 1) * Math.round(axisOptions.width / 2);
                            if (axisOptions.visible) {
                                areaPoints.forEach(((p, i) => {
                                    if (p) {
                                        const index = 1 === points.length ? 0 : i < points.length ? i : areaPoints.length - 1 - i;
                                        rotated && p.x === points[index].defaultX && p.x === argAxisPosition - argAxis.getAxisShift() && (p.x += edgeOffset);
                                        !rotated && p.y === points[index].defaultY && p.y === argAxisPosition - argAxis.getAxisShift() && (p.y += edgeOffset)
                                    }
                                }))
                            }
                        }
                        return {
                            line: processedPoints,
                            area: areaPoints,
                            singlePointSegment: processedPoints !== points
                        }
                    },
                    _processSinglePointsAreaSegment: function(points, rotated) {
                        if (points && 1 === points.length) {
                            const p = points[0];
                            const p1 = (0, _object.clone)(p);
                            p1[rotated ? "y" : "x"] += 1;
                            p1.argument = null;
                            return [p, p1]
                        }
                        return points
                    }
                });
                polar.area = _extend({}, polarLineSeries, baseAreaMethods, {
                    _prepareSegment: function(points, rotated, lastSegment) {
                        lastSegment && polarLineSeries._closeSegment.call(this, points);
                        return areaSeries._prepareSegment.call(this, points)
                    },
                    _processSinglePointsAreaSegment: function(points) {
                        return _line_series.polar.line._prepareSegment.call(this, points).line
                    }
                });
                chart.steparea = _extend({}, areaSeries, {
                    _prepareSegment: function(points, rotated) {
                        const stepLineSeries = _line_series.chart.stepline;
                        points = areaSeries._processSinglePointsAreaSegment(points, rotated);
                        return areaSeries._prepareSegment.call(this, stepLineSeries._calculateStepLinePoints.call(this, points), rotated)
                    },
                    getSeriesPairCoord: _line_series.chart.stepline.getSeriesPairCoord
                });
                chart.splinearea = _extend({}, areaSeries, {
                    _areaPointsToSplineAreaPoints: function(areaPoints) {
                        const previousMiddlePoint = areaPoints[areaPoints.length / 2 - 1];
                        const middlePoint = areaPoints[areaPoints.length / 2];
                        areaPoints.splice(areaPoints.length / 2, 0, {
                            x: previousMiddlePoint.x,
                            y: previousMiddlePoint.y
                        }, {
                            x: middlePoint.x,
                            y: middlePoint.y
                        })
                    },
                    _prepareSegment: function(points, rotated) {
                        const processedPoints = areaSeries._processSinglePointsAreaSegment(points, rotated);
                        const areaSegment = areaSeries._prepareSegment.call(this, calculateBezierPoints(processedPoints, rotated));
                        this._areaPointsToSplineAreaPoints(areaSegment.area);
                        areaSegment.singlePointSegment = processedPoints !== points;
                        return areaSegment
                    },
                    _getDefaultSegment: function(segment) {
                        const areaDefaultSegment = areaSeries._getDefaultSegment(segment);
                        this._areaPointsToSplineAreaPoints(areaDefaultSegment.area);
                        return areaDefaultSegment
                    },
                    _createMainElement: function(points, settings) {
                        return this._renderer.path(points, "bezierarea").attr(settings)
                    },
                    _createBorderElement: _line_series.chart.spline._createMainElement,
                    getSeriesPairCoord: _line_series.chart.spline.getSeriesPairCoord,
                    _getNearestPoints: _line_series.chart.spline._getNearestPoints,
                    _getBezierPoints: _line_series.chart.spline._getBezierPoints,
                    obtainCubicBezierTCoef: _line_series.chart.spline.obtainCubicBezierTCoef
                })
            },
        91449:
            /*!**********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/series/bar_series.js ***!
              \**********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.polar = exports.chart = void 0;
                var _extend2 = __webpack_require__( /*! ../../core/utils/extend */ 52576);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 21274);
                var scatterSeries = function(e, r) {
                    if (!r && e && e.__esModule) {
                        return e
                    }
                    if (null === e || "object" != typeof e && "function" != typeof e) {
                        return {
                            default: e
                        }
                    }
                    var t = _getRequireWildcardCache(r);
                    if (t && t.has(e)) {
                        return t.get(e)
                    }
                    var n = {
                            __proto__: null
                        },
                        a = Object.defineProperty && Object.getOwnPropertyDescriptor;
                    for (var u in e) {
                        if ("default" !== u && {}.hasOwnProperty.call(e, u)) {
                            var i = a ? Object.getOwnPropertyDescriptor(e, u) : null;
                            i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]
                        }
                    }
                    return n.default = e, t && t.set(e, n), n
                }(__webpack_require__( /*! ./scatter_series */ 24008));
                var _area_series = __webpack_require__( /*! ./area_series */ 46283);
                var _utils = __webpack_require__( /*! ../core/utils */ 28779);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 11528);

                function _getRequireWildcardCache(e) {
                    if ("function" != typeof WeakMap) {
                        return null
                    }
                    var r = new WeakMap,
                        t = new WeakMap;
                    return (_getRequireWildcardCache = function(e) {
                        return e ? t : r
                    })(e)
                }
                const areaSeries = _area_series.chart.area;
                const chartSeries = scatterSeries.chart;
                const polarSeries = scatterSeries.polar;
                const _extend = _extend2.extend;
                const _each = _iterator.each;
                const chart = exports.chart = {};
                const polar = exports.polar = {};
                const baseBarSeriesMethods = {
                    _createLegendState: function(styleOptions, defaultColor) {
                        return {
                            fill: (0, _utils.extractColor)(styleOptions.color) || defaultColor,
                            hatching: styleOptions.hatching,
                            filter: styleOptions.highlight
                        }
                    },
                    _getColorId: areaSeries._getColorId,
                    _parsePointStyle: function(style, defaultColor, defaultBorderColor) {
                        const color = (0, _utils.extractColor)(style.color) || defaultColor;
                        const base = chartSeries._parsePointStyle.call(this, style, color, defaultBorderColor);
                        base.fill = color;
                        base.hatching = style.hatching;
                        base.filter = style.highlight;
                        base.dashStyle = style.border && style.border.dashStyle || "solid";
                        delete base.r;
                        return base
                    },
                    _applyMarkerClipRect: function(settings) {
                        settings["clip-path"] = null
                    },
                    _setGroupsSettings: function(animationEnabled, firstDrawing) {
                        let settings = {};
                        chartSeries._setGroupsSettings.apply(this, arguments);
                        if (animationEnabled && firstDrawing) {
                            settings = this._getAffineCoordOptions()
                        } else if (!animationEnabled) {
                            settings = {
                                scaleX: 1,
                                scaleY: 1,
                                translateX: 0,
                                translateY: 0
                            }
                        }
                        this._markersGroup.attr(settings)
                    },
                    _drawPoint: function(options) {
                        options.hasAnimation = options.hasAnimation && !options.firstDrawing;
                        options.firstDrawing = false;
                        chartSeries._drawPoint.call(this, options)
                    },
                    _getMainColor: function() {
                        return this._options.mainSeriesColor
                    },
                    _createPointStyles: function(pointOptions) {
                        var _pointOptions$color;
                        const that = this;
                        const mainColor = (0, _utils.extractColor)(pointOptions.color, true) || that._getMainColor();
                        const colorId = null === (_pointOptions$color = pointOptions.color) || void 0 === _pointOptions$color ? void 0 : _pointOptions$color.fillId;
                        const hoverStyle = pointOptions.hoverStyle || {};
                        const selectionStyle = pointOptions.selectionStyle || {};
                        if (colorId) {
                            that._turnOffHatching(hoverStyle, selectionStyle)
                        }
                        return {
                            labelColor: mainColor,
                            normal: that._parsePointStyle(pointOptions, mainColor, mainColor),
                            hover: that._parsePointStyle(hoverStyle, colorId || mainColor, mainColor),
                            selection: that._parsePointStyle(selectionStyle, colorId || mainColor, mainColor)
                        }
                    },
                    _updatePointsVisibility: function() {
                        const visibility = this._options.visible;
                        (0, _iterator.each)(this._points, (function(_, point) {
                            point._options.visible = visibility
                        }))
                    },
                    _getOptionsForPoint: function() {
                        return this._options
                    },
                    _animate: function(firstDrawing) {
                        const that = this;
                        that._animatePoints(firstDrawing, (function() {
                            that._animateComplete()
                        }), (function(drawnPoints, complete) {
                            const lastPointIndex = drawnPoints.length - 1;
                            _each(drawnPoints || [], (function(i, point) {
                                point.animate(i === lastPointIndex ? complete : void 0, point.getMarkerCoords())
                            }))
                        }))
                    },
                    getValueRangeInitialValue: areaSeries.getValueRangeInitialValue,
                    _patchMarginOptions: function(options) {
                        var _this$getArgumentAxis;
                        options.checkInterval = !this.useAggregation() || (null === (_this$getArgumentAxis = this.getArgumentAxis()) || void 0 === _this$getArgumentAxis ? void 0 : _this$getArgumentAxis.aggregatedPointBetweenTicks());
                        return options
                    },
                    _defaultAggregator: "sum",
                    _defineDrawingState() {},
                    usePointsToDefineAutoHiding: () => false
                };
                chart.bar = _extend({}, chartSeries, baseBarSeriesMethods, {
                    _getAffineCoordOptions: function() {
                        const rotated = this._options.rotated;
                        const direction = rotated ? "X" : "Y";
                        const settings = {
                            scaleX: rotated ? .001 : 1,
                            scaleY: rotated ? 1 : .001
                        };
                        settings["translate" + direction] = this.getValueAxis().getTranslator().translate("canvas_position_default");
                        return settings
                    },
                    _animatePoints: function(firstDrawing, complete, animateFunc) {
                        const that = this;
                        that._markersGroup.animate({
                            scaleX: 1,
                            scaleY: 1,
                            translateY: 0,
                            translateX: 0
                        }, void 0, complete);
                        if (!firstDrawing) {
                            animateFunc(that._drawnPoints, complete)
                        }
                    },
                    checkSeriesViewportCoord(axis, coord) {
                        if (!chartSeries.checkSeriesViewportCoord.call(this)) {
                            return false
                        }
                        if (axis.isArgumentAxis) {
                            return true
                        }
                        const translator = axis.getTranslator();
                        const range = this.getViewport();
                        const min = translator.translate(range.categories ? range.categories[0] : range.min);
                        const max = translator.translate(range.categories ? range.categories[range.categories.length - 1] : range.max);
                        const rotated = this.getOptions().rotated;
                        const inverted = axis.getOptions().inverted;
                        return rotated && !inverted || !rotated && inverted ? coord >= min && coord <= max : coord >= max && coord <= min
                    },
                    getSeriesPairCoord(coord, isArgument) {
                        let oppositeCoord = null;
                        const {
                            rotated: rotated
                        } = this._options;
                        const isOpposite = !isArgument && !rotated || isArgument && rotated;
                        const coordName = isOpposite ? "vy" : "vx";
                        const oppositeCoordName = isOpposite ? "vx" : "vy";
                        const points = this.getPoints();
                        for (let i = 0; i < points.length; i++) {
                            const p = points[i];
                            let tmpCoord;
                            if (isArgument) {
                                tmpCoord = p.getCenterCoord()[coordName[1]] === coord ? p[oppositeCoordName] : void 0
                            } else {
                                tmpCoord = p[coordName] === coord ? p[oppositeCoordName] : void 0
                            }
                            if (this._checkAxisVisibleAreaCoord(!isArgument, tmpCoord)) {
                                oppositeCoord = tmpCoord;
                                break
                            }
                        }
                        return oppositeCoord
                    }
                });
                polar.bar = _extend({}, polarSeries, baseBarSeriesMethods, {
                    _animatePoints: function(firstDrawing, complete, animateFunc) {
                        animateFunc(this._drawnPoints, complete)
                    },
                    _setGroupsSettings: chartSeries._setGroupsSettings,
                    _drawPoint: function(point, groups, animationEnabled) {
                        chartSeries._drawPoint.call(this, point, groups, animationEnabled)
                    },
                    _parsePointStyle: function(style) {
                        const base = baseBarSeriesMethods._parsePointStyle.apply(this, arguments);
                        base.opacity = style.opacity;
                        return base
                    },
                    _createGroups: chartSeries._createGroups,
                    _setMarkerGroupSettings: function() {
                        const markersSettings = this._createPointStyles(this._getMarkerGroupOptions()).normal;
                        markersSettings.class = "dxc-markers";
                        this._applyMarkerClipRect(markersSettings);
                        const groupSettings = _extend({}, markersSettings);
                        delete groupSettings.opacity;
                        this._markersGroup.attr(groupSettings)
                    },
                    getSeriesPairCoord(params, isArgument) {
                        let coords = null;
                        const paramName = isArgument ? "argument" : "radius";
                        const points = this.getVisiblePoints();
                        const argAxis = this.getArgumentAxis();
                        const startAngle = argAxis.getAngles()[0];
                        for (let i = 0; i < points.length; i++) {
                            const p = points[i];
                            const tmpPoint = (0, _type.isDefined)(p[paramName]) && (0, _type.isDefined)(params[paramName]) && p[paramName].valueOf() === params[paramName].valueOf() ? (0, _utils.convertPolarToXY)(argAxis.getCenter(), startAngle, -argAxis.getTranslatedAngle(p.angle), p.radius) : void 0;
                            if ((0, _type.isDefined)(tmpPoint)) {
                                coords = tmpPoint;
                                break
                            }
                        }
                        return coords
                    },
                    _createLegendState: areaSeries._createLegendState
                })
            },
        66151:
            /*!***********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/series/base_series.js ***!
              \***********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.Series = Series;
                exports.mixins = void 0;
                var _type = __webpack_require__( /*! ../../core/utils/type */ 11528);
                var _extend2 = __webpack_require__( /*! ../../core/utils/extend */ 52576);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 21274);
                var _base_point = __webpack_require__( /*! ./points/base_point */ 31656);
                var _utils = __webpack_require__( /*! ../core/utils */ 28779);
                var _common = __webpack_require__( /*! ../../core/utils/common */ 17781);
                var _consts = _interopRequireDefault(__webpack_require__( /*! ../components/consts */ 7377));
                var _range_data_calculator = _interopRequireDefault(__webpack_require__( /*! ./helpers/range_data_calculator */ 34685));
                var scatterSeries = _interopRequireWildcard(__webpack_require__( /*! ./scatter_series */ 24008));
                var lineSeries = _interopRequireWildcard(__webpack_require__( /*! ./line_series */ 85854));
                var areaSeries = _interopRequireWildcard(__webpack_require__( /*! ./area_series */ 46283));
                var barSeries = _interopRequireWildcard(__webpack_require__( /*! ./bar_series */ 91449));
                var _range_series = __webpack_require__( /*! ./range_series */ 16665);
                var _bubble_series = __webpack_require__( /*! ./bubble_series */ 85526);
                var pieSeries = _interopRequireWildcard(__webpack_require__( /*! ./pie_series */ 64708));
                var financialSeries = _interopRequireWildcard(__webpack_require__( /*! ./financial_series */ 72259));
                var stackedSeries = _interopRequireWildcard(__webpack_require__( /*! ./stacked_series */ 33277));

                function _getRequireWildcardCache(e) {
                    if ("function" != typeof WeakMap) {
                        return null
                    }
                    var r = new WeakMap,
                        t = new WeakMap;
                    return (_getRequireWildcardCache = function(e) {
                        return e ? t : r
                    })(e)
                }

                function _interopRequireWildcard(e, r) {
                    if (!r && e && e.__esModule) {
                        return e
                    }
                    if (null === e || "object" != typeof e && "function" != typeof e) {
                        return {
                            default: e
                        }
                    }
                    var t = _getRequireWildcardCache(r);
                    if (t && t.has(e)) {
                        return t.get(e)
                    }
                    var n = {
                            __proto__: null
                        },
                        a = Object.defineProperty && Object.getOwnPropertyDescriptor;
                    for (var u in e) {
                        if ("default" !== u && {}.hasOwnProperty.call(e, u)) {
                            var i = a ? Object.getOwnPropertyDescriptor(e, u) : null;
                            i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]
                        }
                    }
                    return n.default = e, t && t.set(e, n), n
                }

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const seriesNS = {};
                const states = _consts.default.states;
                const SELECTED_STATE = states.selectedMark;
                const HOVER_STATE = states.hoverMark;
                const HOVER = states.hover;
                const NORMAL = states.normal;
                const SELECTION = states.selection;
                const APPLY_SELECTED = states.applySelected;
                const APPLY_HOVER = states.applyHover;
                const RESET_ITEM = states.resetItem;

                function triggerEvent(element, event, point) {
                    element && element.trigger(event, point)
                }
                seriesNS.mixins = {
                    chart: {},
                    pie: {},
                    polar: {}
                };
                seriesNS.mixins.chart.scatter = scatterSeries.chart;
                seriesNS.mixins.polar.scatter = scatterSeries.polar;
                (0, _extend2.extend)(seriesNS.mixins.pie, pieSeries);
                (0, _extend2.extend)(seriesNS.mixins.chart, lineSeries.chart, areaSeries.chart, barSeries.chart, _range_series.chart, _bubble_series.chart, financialSeries, stackedSeries.chart);
                (0, _extend2.extend)(seriesNS.mixins.polar, lineSeries.polar, areaSeries.polar, barSeries.polar, stackedSeries.polar);

                function includePointsMode(mode) {
                    mode = (0, _utils.normalizeEnum)(mode);
                    return "includepoints" === mode || "allseriespoints" === mode
                }

                function mergePointOptionsCore(base, extra) {
                    const options = (0, _extend2.extend)({}, base, extra);
                    options.border = (0, _extend2.extend)({}, base && base.border, extra && extra.border);
                    return options
                }

                function Series(settings, options) {
                    this.fullState = 0;
                    this._extGroups = settings;
                    this._renderer = settings.renderer;
                    this._group = settings.renderer.g().attr({
                        class: "dxc-series"
                    });
                    this._eventTrigger = settings.eventTrigger;
                    this._eventPipe = settings.eventPipe;
                    this._incidentOccurred = settings.incidentOccurred;
                    this._legendCallback = _common.noop;
                    this.updateOptions(options, settings)
                }

                function getData(pointData) {
                    return pointData.data
                }

                function getValueChecker(axisType, axis) {
                    if (!axis || "logarithmic" !== axisType || false !== axis.getOptions().allowNegatives) {
                        return () => true
                    } else {
                        return value => value > 0
                    }
                }
                Series.prototype = {
                    constructor: Series,
                    _createLegendState: _common.noop,
                    getLegendStyles: function() {
                        return this._styles.legendStyles
                    },
                    _createStyles: function(options) {
                        const that = this;
                        const mainSeriesColor = options.mainSeriesColor;
                        const colorId = this._getColorId(options);
                        const hoverStyle = options.hoverStyle || {};
                        const selectionStyle = options.selectionStyle || {};
                        if (colorId) {
                            that._turnOffHatching(hoverStyle, selectionStyle)
                        }
                        that._styles = {
                            labelColor: mainSeriesColor,
                            normal: that._parseStyle(options, mainSeriesColor, mainSeriesColor),
                            hover: that._parseStyle(hoverStyle, colorId || mainSeriesColor, mainSeriesColor),
                            selection: that._parseStyle(selectionStyle, colorId || mainSeriesColor, mainSeriesColor),
                            legendStyles: {
                                normal: that._createLegendState(options, colorId || mainSeriesColor),
                                hover: that._createLegendState(hoverStyle, colorId || mainSeriesColor),
                                selection: that._createLegendState(selectionStyle, colorId || mainSeriesColor)
                            }
                        }
                    },
                    setClippingParams(baseId, wideId, forceClipping) {
                        let clipLabels = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : true;
                        this._paneClipRectID = baseId;
                        this._widePaneClipRectID = wideId;
                        this._forceClipping = forceClipping;
                        this._clipLabels = clipLabels
                    },
                    applyClip: function() {
                        this._group.attr({
                            "clip-path": this._paneClipRectID
                        })
                    },
                    resetClip: function() {
                        this._group.attr({
                            "clip-path": null
                        })
                    },
                    getTagField: function() {
                        return this._options.tagField || "tag"
                    },
                    getValueFields: _common.noop,
                    getSizeField: _common.noop,
                    getArgumentField: _common.noop,
                    getPoints: function() {
                        return this._points
                    },
                    getPointsInViewPort: function() {
                        return _range_data_calculator.default.getPointsInViewPort(this)
                    },
                    _createPoint: function(data, index, oldPoint) {
                        data.index = index;
                        const that = this;
                        const pointsByArgument = that.pointsByArgument;
                        const options = that._getCreatingPointOptions(data);
                        const arg = data.argument.valueOf();
                        let point = oldPoint;
                        if (point) {
                            point.update(data, options)
                        } else {
                            point = new _base_point.Point(that, data, options);
                            if (that.isSelected() && includePointsMode(that.lastSelectionMode)) {
                                point.setView(SELECTION)
                            }
                        }
                        const pointByArgument = pointsByArgument[arg];
                        if (pointByArgument) {
                            pointByArgument.push(point)
                        } else {
                            pointsByArgument[arg] = [point]
                        }
                        if (point.hasValue()) {
                            that.customizePoint(point, data)
                        }
                        return point
                    },
                    getRangeData: function() {
                        return this._visible ? this._getRangeData() : {
                            arg: {},
                            val: {}
                        }
                    },
                    getArgumentRange: function() {
                        return this._visible ? _range_data_calculator.default.getArgumentRange(this) : {
                            arg: {},
                            val: {}
                        }
                    },
                    getViewport: function() {
                        return _range_data_calculator.default.getViewport(this)
                    },
                    _deleteGroup: function(groupName) {
                        const group = this[groupName];
                        if (group) {
                            group.dispose();
                            this[groupName] = null
                        }
                    },
                    updateOptions(newOptions, settings) {
                        const that = this;
                        const widgetType = newOptions.widgetType;
                        const oldType = that.type;
                        const newType = newOptions.type;
                        that.type = newType && (0, _utils.normalizeEnum)(newType.toString());
                        if (!that._checkType(widgetType) || that._checkPolarBarType(widgetType, newOptions)) {
                            that.dispose();
                            that.isUpdated = false;
                            return
                        }
                        if (oldType !== that.type) {
                            that._firstDrawing = true;
                            that._resetType(oldType, widgetType);
                            that._setType(that.type, widgetType)
                        } else {
                            that._defineDrawingState()
                        }
                        that._options = newOptions;
                        that._pointOptions = null;
                        that.name = newOptions.name;
                        that.pane = newOptions.pane;
                        that.tag = newOptions.tag;
                        if (settings) {
                            that._seriesModes = settings.commonSeriesModes || that._seriesModes;
                            that._valueAxis = settings.valueAxis || that._valueAxis;
                            that.axis = that._valueAxis && that._valueAxis.name;
                            that._argumentAxis = settings.argumentAxis || that._argumentAxis
                        }
                        that._createStyles(newOptions);
                        that._stackName = null;
                        that._updateOptions(newOptions);
                        that._visible = newOptions.visible;
                        that.isUpdated = true;
                        that.stack = newOptions.stack;
                        that.barOverlapGroup = newOptions.barOverlapGroup;
                        that._createGroups();
                        that._processEmptyValue = newOptions.ignoreEmptyPoints ? x => null === x ? void 0 : x : x => x
                    },
                    _defineDrawingState() {
                        this._firstDrawing = true
                    },
                    _disposePoints: function(points) {
                        (0, _iterator.each)(points || [], (function(_, p) {
                            p.dispose()
                        }))
                    },
                    updateDataType: function(settings) {
                        this.argumentType = settings.argumentType;
                        this.valueType = settings.valueType;
                        this.argumentAxisType = settings.argumentAxisType;
                        this.valueAxisType = settings.valueAxisType;
                        this.showZero = settings.showZero;
                        this._argumentChecker = getValueChecker(settings.argumentAxisType, this.getArgumentAxis());
                        this._valueChecker = getValueChecker(settings.valueAxisType, this.getValueAxis());
                        return this
                    },
                    _argumentChecker: function() {
                        return true
                    },
                    _valueChecker: function() {
                        return true
                    },
                    getOptions: function() {
                        return this._options
                    },
                    _getOldPoint: function(data, oldPointsByArgument, index) {
                        const arg = data.argument && data.argument.valueOf();
                        const point = (oldPointsByArgument[arg] || [])[0];
                        if (point) {
                            oldPointsByArgument[arg].splice(0, 1)
                        }
                        return point
                    },
                    updateData: function(data) {
                        const that = this;
                        const options = that._options;
                        const nameField = options.nameField;
                        data = data || [];
                        if (data.length) {
                            that._canRenderCompleteHandle = true
                        }
                        const dataSelector = this._getPointDataSelector();
                        let itemsWithoutArgument = 0;
                        that._data = data.reduce(((data, dataItem, index) => {
                            const pointDataItem = dataSelector(dataItem);
                            if ((0, _type.isDefined)(pointDataItem.argument)) {
                                if (!nameField || dataItem[nameField] === options.nameFieldValue) {
                                    pointDataItem.index = index;
                                    data.push(pointDataItem)
                                }
                            } else {
                                itemsWithoutArgument++
                            }
                            return data
                        }), []);
                        if (itemsWithoutArgument && itemsWithoutArgument === data.length) {
                            that._incidentOccurred("W2002", [that.name, that.getArgumentField()])
                        }
                        that._endUpdateData()
                    },
                    _getData() {
                        let data = this._data || [];
                        if (this.useAggregation()) {
                            const aggregateByCategory = "discrete" === this.argumentAxisType;
                            const argumentRange = aggregateByCategory ? {} : this.getArgumentRange();
                            const aggregationInfo = aggregateByCategory ? {} : this.getArgumentAxis().getAggregationInfo(this._useAllAggregatedPoints, argumentRange);
                            data = this._resample(aggregationInfo, data)
                        }
                        return data
                    },
                    useAggregation: function() {
                        const aggregation = this.getOptions().aggregation;
                        return aggregation && aggregation.enabled
                    },
                    autoHidePointMarkersEnabled: _common.noop,
                    usePointsToDefineAutoHiding: _common.noop,
                    createPoints(useAllAggregatedPoints) {
                        this._normalizeUsingAllAggregatedPoints(useAllAggregatedPoints);
                        this._createPoints()
                    },
                    _normalizeUsingAllAggregatedPoints: function(useAllAggregatedPoints) {
                        this._useAllAggregatedPoints = this.useAggregation() && ("discrete" === this.argumentAxisType || (this._data || []).length > 1 && !!useAllAggregatedPoints)
                    },
                    _createPoints: function() {
                        const that = this;
                        const oldPointsByArgument = that.pointsByArgument || {};
                        const data = that._getData();
                        that.pointsByArgument = {};
                        that._calculateErrorBars(data);
                        const skippedFields = {};
                        const points = data.reduce(((points, pointDataItem) => {
                            if (that._checkData(pointDataItem, skippedFields)) {
                                const pointIndex = points.length;
                                const oldPoint = that._getOldPoint(pointDataItem, oldPointsByArgument, pointIndex);
                                const point = that._createPoint(pointDataItem, pointIndex, oldPoint);
                                points.push(point)
                            }
                            return points
                        }), []);
                        for (const field in skippedFields) {
                            if (skippedFields[field] === data.length) {
                                that._incidentOccurred("W2002", [that.name, field])
                            }
                        }
                        Object.keys(oldPointsByArgument).forEach((key => that._disposePoints(oldPointsByArgument[key])));
                        that._points = points
                    },
                    _removeOldSegments: function() {
                        const that = this;
                        const startIndex = that._segments.length;
                        (0, _iterator.each)(that._graphics.splice(startIndex, that._graphics.length) || [], (function(_, elem) {
                            that._removeElement(elem)
                        }));
                        if (that._trackers) {
                            (0, _iterator.each)(that._trackers.splice(startIndex, that._trackers.length) || [], (function(_, elem) {
                                elem.remove()
                            }))
                        }
                    },
                    _prepareSegmentsPosition() {
                        const points = this._points || [];
                        const isCloseSegment = points[0] && points[0].hasValue() && this._options.closed;
                        const segments = points.reduce((function(segments, p) {
                            const segment = segments.at(-1);
                            if (!p.translated) {
                                p.setDefaultCoords()
                            }
                            if (p.hasValue() && p.hasCoords()) {
                                segment.push(p)
                            } else if (!p.hasValue() && segment.length) {
                                segments.push([])
                            }
                            return segments
                        }), [
                            []
                        ]);
                        this._drawSegments(segments, isCloseSegment, false)
                    },
                    _drawElements(animationEnabled, firstDrawing) {
                        const that = this;
                        const points = that._points || [];
                        const isCloseSegment = points[0] && points[0].hasValue() && that._options.closed;
                        const groupForPoint = {
                            markers: that._markersGroup,
                            errorBars: that._errorBarGroup
                        };
                        that._drawnPoints = [];
                        that._graphics = that._graphics || [];
                        that._segments = [];
                        const segments = points.reduce((function(segments, p) {
                            const segment = segments.at(-1);
                            if (p.hasValue() && p.hasCoords()) {
                                that._drawPoint({
                                    point: p,
                                    groups: groupForPoint,
                                    hasAnimation: animationEnabled,
                                    firstDrawing: firstDrawing
                                });
                                segment.push(p)
                            } else if (!p.hasValue()) {
                                segment.length && segments.push([])
                            } else {
                                p.setInvisibility()
                            }
                            return segments
                        }), [
                            []
                        ]);
                        that._drawSegments(segments, isCloseSegment, animationEnabled);
                        that._firstDrawing = !points.length;
                        that._removeOldSegments();
                        animationEnabled && that._animate(firstDrawing)
                    },
                    _drawSegments(segments, closeSegment, animationEnabled) {
                        segments.forEach(((segment, index) => {
                            if (segment.length) {
                                const lastSegment = closeSegment && index === segments.length - 1;
                                this._drawSegment(segment, animationEnabled, index, lastSegment)
                            }
                        }))
                    },
                    draw(animationEnabled, hideLayoutLabels, legendCallback) {
                        const that = this;
                        const firstDrawing = that._firstDrawing;
                        that._legendCallback = legendCallback || that._legendCallback;
                        if (!that._visible) {
                            that._group.remove();
                            return
                        }
                        that._appendInGroup();
                        if (!that._isAllPointsTranslated) {
                            that.prepareCoordinatesForPoints()
                        }
                        that._setGroupsSettings(animationEnabled, firstDrawing);
                        !firstDrawing && !that._resetApplyingAnimation && that._prepareSegmentsPosition();
                        that._drawElements(animationEnabled, firstDrawing);
                        hideLayoutLabels && that.hideLabels();
                        if (that.isSelected()) {
                            that._changeStyle(that.lastSelectionMode, void 0, true)
                        } else if (that.isHovered()) {
                            that._changeStyle(that.lastHoverMode, void 0, true)
                        } else {
                            that._applyStyle(that._styles.normal)
                        }
                        that._isAllPointsTranslated = false;
                        that._resetApplyingAnimation = false
                    },
                    _translatePoints() {
                        const points = this._points ?? [];
                        points.forEach((p => {
                            p.translate()
                        }))
                    },
                    prepareCoordinatesForPoints() {
                        this._applyVisibleArea();
                        this._translatePoints();
                        this._isAllPointsTranslated = true
                    },
                    _setLabelGroupSettings: function(animationEnabled) {
                        const settings = {
                            class: "dxc-labels",
                            "pointer-events": "none"
                        };
                        this._clipLabels && this._applyElementsClipRect(settings);
                        this._applyClearingSettings(settings);
                        animationEnabled && (settings.opacity = .001);
                        this._labelsGroup.attr(settings).append(this._extGroups.labelsGroup)
                    },
                    _checkType: function(widgetType) {
                        return !!seriesNS.mixins[widgetType][this.type]
                    },
                    _checkPolarBarType: function(widgetType, options) {
                        return "polar" === widgetType && options.spiderWidget && -1 !== this.type.indexOf("bar")
                    },
                    _resetType: function(seriesType, widgetType) {
                        let methodName;
                        let methods;
                        if (seriesType) {
                            methods = seriesNS.mixins[widgetType][seriesType];
                            for (methodName in methods) {
                                delete this[methodName]
                            }
                        }
                    },
                    _setType: function(seriesType, widgetType) {
                        let methodName;
                        const methods = seriesNS.mixins[widgetType][seriesType];
                        for (methodName in methods) {
                            this[methodName] = methods[methodName]
                        }
                    },
                    _setPointsView: function(view, target) {
                        this.getPoints().forEach((function(point) {
                            if (target !== point) {
                                point.setView(view)
                            }
                        }))
                    },
                    _resetPointsView: function(view, target) {
                        this.getPoints().forEach((function(point) {
                            if (target !== point) {
                                point.resetView(view)
                            }
                        }))
                    },
                    _resetNearestPoint: function() {
                        this._nearestPoint && null !== this._nearestPoint.series && this._nearestPoint.resetView(HOVER);
                        this._nearestPoint = null
                    },
                    _setSelectedState: function(mode) {
                        const that = this;
                        that.lastSelectionMode = (0, _utils.normalizeEnum)(mode || that._options.selectionMode);
                        that.fullState = that.fullState | SELECTED_STATE;
                        that._resetNearestPoint();
                        that._changeStyle(that.lastSelectionMode);
                        if ("none" !== that.lastSelectionMode && that.isHovered() && includePointsMode(that.lastHoverMode)) {
                            that._resetPointsView(HOVER)
                        }
                    },
                    _releaseSelectedState: function() {
                        const that = this;
                        that.fullState = that.fullState & ~SELECTED_STATE;
                        that._changeStyle(that.lastSelectionMode, SELECTION);
                        if ("none" !== that.lastSelectionMode && that.isHovered() && includePointsMode(that.lastHoverMode)) {
                            that._setPointsView(HOVER)
                        }
                    },
                    isFullStackedSeries: function() {
                        return 0 === this.type.indexOf("fullstacked")
                    },
                    isStackedSeries: function() {
                        return 0 === this.type.indexOf("stacked")
                    },
                    resetApplyingAnimation: function(isFirstDrawing) {
                        this._resetApplyingAnimation = true;
                        if (isFirstDrawing) {
                            this._firstDrawing = true
                        }
                    },
                    isFinancialSeries: function() {
                        return "stock" === this.type || "candlestick" === this.type
                    },
                    _canChangeView: function() {
                        return !this.isSelected() && "none" !== (0, _utils.normalizeEnum)(this._options.hoverMode)
                    },
                    _changeStyle: function(mode, resetView, skipPoints) {
                        const that = this;
                        let state = that.fullState;
                        const styles = [NORMAL, HOVER, SELECTION, SELECTION];
                        if ("none" === that.lastHoverMode) {
                            state &= ~HOVER_STATE
                        }
                        if ("none" === that.lastSelectionMode) {
                            state &= ~SELECTED_STATE
                        }
                        if (includePointsMode(mode) && !skipPoints) {
                            if (!resetView) {
                                that._setPointsView(styles[state])
                            } else {
                                that._resetPointsView(resetView)
                            }
                        }
                        that._legendCallback([RESET_ITEM, APPLY_HOVER, APPLY_SELECTED, APPLY_SELECTED][state]);
                        that._applyStyle(that._styles[styles[state]])
                    },
                    updateHover: function(x, y) {
                        const that = this;
                        const currentNearestPoint = that._nearestPoint;
                        const point = that.isHovered() && "nearestpoint" === that.lastHoverMode && that.getNeighborPoint(x, y);
                        if (point !== currentNearestPoint && !(that.isSelected() && "none" !== that.lastSelectionMode)) {
                            that._resetNearestPoint();
                            if (point) {
                                point.setView(HOVER);
                                that._nearestPoint = point
                            }
                        }
                    },
                    _getMainAxisName: function() {
                        return this._options.rotated ? "X" : "Y"
                    },
                    areLabelsVisible: function() {
                        return !(0, _type.isDefined)(this._options.maxLabelCount) || this._points.length <= this._options.maxLabelCount
                    },
                    getLabelVisibility: function() {
                        return this.areLabelsVisible() && this._options.label && this._options.label.visible
                    },
                    customizePoint: function(point, pointData) {
                        const that = this;
                        const options = that._options;
                        const customizePoint = options.customizePoint;
                        let customizeObject;
                        let pointOptions;
                        let customLabelOptions;
                        let customOptions;
                        const customizeLabel = options.customizeLabel;
                        let useLabelCustomOptions;
                        let usePointCustomOptions;
                        if (customizeLabel && customizeLabel.call) {
                            customizeObject = (0, _extend2.extend)({
                                seriesName: that.name
                            }, pointData);
                            customizeObject.series = that;
                            customLabelOptions = customizeLabel.call(customizeObject, customizeObject);
                            useLabelCustomOptions = customLabelOptions && !(0, _type.isEmptyObject)(customLabelOptions);
                            customLabelOptions = useLabelCustomOptions ? (0, _extend2.extend)(true, {}, options.label, customLabelOptions) : null
                        }
                        if (customizePoint && customizePoint.call) {
                            customizeObject = customizeObject || (0, _extend2.extend)({
                                seriesName: that.name
                            }, pointData);
                            customizeObject.series = that;
                            customOptions = customizePoint.call(customizeObject, customizeObject);
                            usePointCustomOptions = customOptions && !(0, _type.isEmptyObject)(customOptions)
                        }
                        if (useLabelCustomOptions || usePointCustomOptions) {
                            pointOptions = that._parsePointOptions(that._preparePointOptions(customOptions), customLabelOptions || options.label, pointData, point);
                            pointOptions.styles.useLabelCustomOptions = useLabelCustomOptions;
                            pointOptions.styles.usePointCustomOptions = usePointCustomOptions;
                            point.updateOptions(pointOptions)
                        }
                    },
                    show: function() {
                        if (!this._visible) {
                            this._changeVisibility(true)
                        }
                    },
                    hide: function() {
                        if (this._visible) {
                            this._changeVisibility(false)
                        }
                    },
                    _changeVisibility: function(visibility) {
                        this._visible = this._options.visible = visibility;
                        this._updatePointsVisibility();
                        this.hidePointTooltip();
                        this._options.visibilityChanged(this)
                    },
                    _updatePointsVisibility: _common.noop,
                    hideLabels: function() {
                        (0, _iterator.each)(this._points, (function(_, point) {
                            point._label.draw(false)
                        }))
                    },
                    _turnOffHatching(hoverStyle, selectionStyle) {
                        if (hoverStyle.hatching) {
                            hoverStyle.hatching.direction = "none"
                        }
                        if (selectionStyle.hatching) {
                            selectionStyle.hatching.direction = "none"
                        }
                    },
                    _parsePointOptions: function(pointOptions, labelOptions, data, point) {
                        const options = this._options;
                        const styles = this._createPointStyles(pointOptions, data, point);
                        const parsedOptions = (0, _extend2.extend)({}, pointOptions, {
                            type: options.type,
                            rotated: options.rotated,
                            styles: styles,
                            widgetType: options.widgetType,
                            visibilityChanged: options.visibilityChanged
                        });
                        parsedOptions.label = function(labelOptions, defaultColor) {
                            const opt = labelOptions || {};
                            const labelFont = (0, _extend2.extend)({}, opt.font) || {};
                            const labelBorder = opt.border || {};
                            const labelConnector = opt.connector || {};
                            const backgroundAttr = {
                                fill: opt.backgroundColor || defaultColor,
                                "stroke-width": labelBorder.visible ? labelBorder.width || 0 : 0,
                                stroke: labelBorder.visible && labelBorder.width ? labelBorder.color : "none",
                                dashStyle: labelBorder.dashStyle
                            };
                            const connectorAttr = {
                                stroke: labelConnector.visible && labelConnector.width ? labelConnector.color || defaultColor : "none",
                                "stroke-width": labelConnector.visible ? labelConnector.width || 0 : 0
                            };
                            labelFont.color = "none" === opt.backgroundColor && "#ffffff" === (0, _utils.normalizeEnum)(labelFont.color) && "inside" !== opt.position ? defaultColor : labelFont.color;
                            return {
                                alignment: opt.alignment,
                                format: opt.format,
                                argumentFormat: opt.argumentFormat,
                                customizeText: (0, _type.isFunction)(opt.customizeText) ? opt.customizeText : void 0,
                                attributes: {
                                    font: labelFont
                                },
                                visible: 0 !== labelFont.size ? opt.visible : false,
                                showForZeroValues: opt.showForZeroValues,
                                horizontalOffset: opt.horizontalOffset,
                                verticalOffset: opt.verticalOffset,
                                radialOffset: opt.radialOffset,
                                background: backgroundAttr,
                                position: opt.position,
                                connector: connectorAttr,
                                rotationAngle: opt.rotationAngle,
                                wordWrap: opt.wordWrap,
                                textOverflow: opt.textOverflow,
                                cssClass: opt.cssClass,
                                displayFormat: opt.displayFormat
                            }
                        }(labelOptions, styles.labelColor);
                        if (this.areErrorBarsVisible()) {
                            parsedOptions.errorBars = options.valueErrorBar
                        }
                        return parsedOptions
                    },
                    _preparePointOptions: function(customOptions) {
                        const pointOptions = this._getOptionsForPoint();
                        return customOptions ? function(base, extra) {
                            const options = mergePointOptionsCore(base, extra);
                            options.image = (0, _extend2.extend)(true, {}, base.image, extra.image);
                            options.selectionStyle = mergePointOptionsCore(base.selectionStyle, extra.selectionStyle);
                            options.hoverStyle = mergePointOptionsCore(base.hoverStyle, extra.hoverStyle);
                            return options
                        }(pointOptions, customOptions) : pointOptions
                    },
                    _getMarkerGroupOptions: function() {
                        return (0, _extend2.extend)(false, {}, this._getOptionsForPoint(), {
                            hoverStyle: {},
                            selectionStyle: {}
                        })
                    },
                    _getAggregationMethod: function(isValueAxisDiscrete) {
                        const options = this.getOptions().aggregation;
                        const method = (0, _utils.normalizeEnum)(options.method);
                        const customAggregator = "custom" === method && options.calculate;
                        if (customAggregator) {
                            return customAggregator
                        }
                        if (isValueAxisDiscrete) {
                            return _ref => {
                                let {
                                    data: data
                                } = _ref;
                                return data[0]
                            }
                        }
                        return this._aggregators[method] || this._aggregators[this._defaultAggregator]
                    },
                    _resample(_ref2, data) {
                        let {
                            interval: interval,
                            ticks: ticks
                        } = _ref2;
                        const that = this;
                        const options = that.getOptions();
                        const dataSelector = this._getPointDataSelector();
                        const addAggregatedData = (target, data, aggregationInfo) => {
                            if (!data) {
                                return
                            }
                            const processData = d => {
                                const pointData = d && dataSelector(d, options);
                                if (pointData && that._checkData(pointData)) {
                                    pointData.aggregationInfo = aggregationInfo;
                                    target.push(pointData)
                                }
                            };
                            if (Array.isArray(data)) {
                                data.forEach(processData)
                            } else {
                                processData(data)
                            }
                        };
                        const isValueAxisDiscrete = "discrete" === that.valueAxisType;
                        const aggregateByCategory = "discrete" === that.argumentAxisType;
                        const aggregationMethod = this._getAggregationMethod(isValueAxisDiscrete);
                        if (aggregateByCategory) {
                            const categories = this.getArgumentAxis().getTranslator().getBusinessRange().categories;
                            const groups = categories.reduce(((g, category) => {
                                g[category.valueOf()] = [];
                                return g
                            }), {});
                            data.forEach((dataItem => {
                                groups[dataItem.argument.valueOf()].push(dataItem)
                            }));
                            return categories.reduce(((result, c) => {
                                addAggregatedData(result, aggregationMethod({
                                    aggregationInterval: null,
                                    intervalStart: c,
                                    intervalEnd: c,
                                    data: groups[c.valueOf()].map(getData)
                                }, that));
                                return result
                            }), [])
                        }
                        if (isValueAxisDiscrete) {
                            return data.reduce(((result, dataItem, index, data) => {
                                result[1].push(dataItem);
                                if (index === data.length - 1 || (index + 1) % interval === 0) {
                                    const dataInInterval = result[1];
                                    const aggregationInfo = {
                                        aggregationInterval: interval,
                                        data: dataInInterval.map(getData)
                                    };
                                    addAggregatedData(result[0], aggregationMethod(aggregationInfo, that));
                                    result[1] = []
                                }
                                return result
                            }), [
                                [],
                                []
                            ])[0]
                        }
                        const aggregatedData = [];
                        if (1 === ticks.length) {
                            const aggregationInfo = {
                                intervalStart: ticks[0],
                                intervalEnd: ticks[0],
                                aggregationInterval: null,
                                data: data.map(getData)
                            };
                            addAggregatedData(aggregatedData, aggregationMethod(aggregationInfo, that), aggregationInfo)
                        } else {
                            let dataIndex = 0;
                            for (let i = 1; i < ticks.length; i++) {
                                const intervalEnd = ticks[i];
                                const intervalStart = ticks[i - 1];
                                const dataInInterval = [];
                                while (data[dataIndex] && data[dataIndex].argument < intervalEnd) {
                                    if (data[dataIndex].argument >= intervalStart) {
                                        dataInInterval.push(data[dataIndex])
                                    }
                                    dataIndex++
                                }
                                const aggregationInfo = {
                                    intervalStart: intervalStart,
                                    intervalEnd: intervalEnd,
                                    aggregationInterval: interval,
                                    data: dataInInterval.map(getData)
                                };
                                addAggregatedData(aggregatedData, aggregationMethod(aggregationInfo, that), aggregationInfo)
                            }
                        }
                        that._endUpdateData();
                        return aggregatedData
                    },
                    canRenderCompleteHandle: function() {
                        const result = this._canRenderCompleteHandle;
                        delete this._canRenderCompleteHandle;
                        return !!result
                    },
                    isHovered: function() {
                        return !!(1 & this.fullState)
                    },
                    isSelected: function() {
                        return !!(2 & this.fullState)
                    },
                    isVisible: function() {
                        return this._visible
                    },
                    getAllPoints: function() {
                        this._createAllAggregatedPoints();
                        return (this._points || []).slice()
                    },
                    getPointByPos: function(pos) {
                        this._createAllAggregatedPoints();
                        return (this._points || [])[pos]
                    },
                    getVisiblePoints: function() {
                        return (this._drawnPoints || []).slice()
                    },
                    selectPoint: function(point) {
                        if (!point.isSelected()) {
                            ! function(point, legendCallback) {
                                point.fullState |= SELECTED_STATE;
                                point.applyView(legendCallback)
                            }(point, this._legendCallback);
                            this._eventPipe({
                                action: "pointSelect",
                                target: point
                            });
                            this._eventTrigger("pointSelectionChanged", {
                                target: point
                            })
                        }
                    },
                    deselectPoint: function(point) {
                        if (point.isSelected()) {
                            ! function(point, legendCallback) {
                                point.fullState &= ~SELECTED_STATE;
                                point.applyView(legendCallback)
                            }(point, this._legendCallback);
                            this._eventPipe({
                                action: "pointDeselect",
                                target: point
                            });
                            this._eventTrigger("pointSelectionChanged", {
                                target: point
                            })
                        }
                    },
                    hover: function(mode) {
                        const eventTrigger = this._eventTrigger;
                        if (this.isHovered()) {
                            return
                        }
                        this.lastHoverMode = (0, _utils.normalizeEnum)(mode || this._options.hoverMode);
                        this.fullState = this.fullState | HOVER_STATE;
                        this._changeStyle(this.lastHoverMode, void 0, this.isSelected() && "none" !== this.lastSelectionMode);
                        eventTrigger("seriesHoverChanged", {
                            target: this
                        })
                    },
                    clearHover: function() {
                        const eventTrigger = this._eventTrigger;
                        if (!this.isHovered()) {
                            return
                        }
                        this._resetNearestPoint();
                        this.fullState = this.fullState & ~HOVER_STATE;
                        this._changeStyle(this.lastHoverMode, HOVER, this.isSelected() && "none" !== this.lastSelectionMode);
                        eventTrigger("seriesHoverChanged", {
                            target: this
                        })
                    },
                    hoverPoint: function(point) {
                        const that = this;
                        if (!point.isHovered()) {
                            point.clearHover();
                            ! function(point, legendCallback) {
                                point.fullState |= HOVER_STATE;
                                point.applyView(legendCallback)
                            }(point, that._legendCallback);
                            that._canChangeView() && that._applyStyle(that._styles.hover);
                            that._eventPipe({
                                action: "pointHover",
                                target: point
                            });
                            that._eventTrigger("pointHoverChanged", {
                                target: point
                            })
                        }
                    },
                    clearPointHover: function() {
                        const that = this;
                        that.getPoints().some((function(currentPoint) {
                            if (currentPoint.isHovered()) {
                                ! function(point, legendCallback) {
                                    point.fullState &= ~HOVER_STATE;
                                    point.applyView(legendCallback);
                                    point.releaseHoverState()
                                }(currentPoint, that._legendCallback);
                                that._canChangeView() && that._applyStyle(that._styles.normal);
                                that._eventPipe({
                                    action: "clearPointHover",
                                    target: currentPoint
                                });
                                that._eventTrigger("pointHoverChanged", {
                                    target: currentPoint
                                });
                                return true
                            }
                            return false
                        }))
                    },
                    showPointTooltip: function(point) {
                        triggerEvent(this._extGroups.seriesGroup, "showpointtooltip", point)
                    },
                    hidePointTooltip: function(point) {
                        triggerEvent(this._extGroups.seriesGroup, "hidepointtooltip", point)
                    },
                    select: function() {
                        const that = this;
                        if (!that.isSelected()) {
                            that._setSelectedState(that._options.selectionMode);
                            that._eventPipe({
                                action: "seriesSelect",
                                target: that
                            });
                            that._group.toForeground();
                            that._eventTrigger("seriesSelectionChanged", {
                                target: that
                            })
                        }
                    },
                    clearSelection: function() {
                        const that = this;
                        if (that.isSelected()) {
                            that._releaseSelectedState();
                            that._eventTrigger("seriesSelectionChanged", {
                                target: that
                            })
                        }
                    },
                    getPointsByArg: function(arg, skipPointsCreation) {
                        const that = this;
                        const argValue = arg.valueOf();
                        let points = that.pointsByArgument[argValue];
                        if (!points && !skipPointsCreation && that._createAllAggregatedPoints()) {
                            points = that.pointsByArgument[argValue]
                        }
                        return points || []
                    },
                    _createAllAggregatedPoints: function() {
                        if (this.useAggregation() && !this._useAllAggregatedPoints) {
                            this.createPoints(true);
                            return true
                        }
                        return false
                    },
                    getPointsByKeys: function(arg) {
                        return this.getPointsByArg(arg)
                    },
                    notify: function(data) {
                        const that = this;
                        const action = data.action;
                        const seriesModes = that._seriesModes;
                        const target = data.target;
                        const targetOptions = target.getOptions();
                        const pointHoverMode = (0, _utils.normalizeEnum)(targetOptions.hoverMode);
                        const selectionModeOfPoint = (0, _utils.normalizeEnum)(targetOptions.selectionMode);
                        if ("pointHover" === action) {
                            that._hoverPointHandler(target, pointHoverMode, data.notifyLegend)
                        } else if ("clearPointHover" === action) {
                            that._clearPointHoverHandler(target, pointHoverMode, data.notifyLegend)
                        } else if ("seriesSelect" === action) {
                            target !== that && "single" === seriesModes.seriesSelectionMode && that.clearSelection()
                        } else if ("pointSelect" === action) {
                            if ("single" === seriesModes.pointSelectionMode) {
                                that.getPoints().some((function(currentPoint) {
                                    if (currentPoint !== target && currentPoint.isSelected()) {
                                        that.deselectPoint(currentPoint);
                                        return true
                                    }
                                    return false
                                }))
                            }
                            that._selectPointHandler(target, selectionModeOfPoint)
                        } else if ("pointDeselect" === action) {
                            that._deselectPointHandler(target, selectionModeOfPoint)
                        }
                    },
                    _selectPointHandler: function(target, mode) {
                        const that = this;
                        if ("allseriespoints" === mode) {
                            target.series === that && that._setPointsView(SELECTION, target)
                        } else if ("allargumentpoints" === mode) {
                            that.getPointsByKeys(target.argument, target.argumentIndex).forEach((function(currentPoint) {
                                currentPoint !== target && currentPoint.setView(SELECTION)
                            }))
                        }
                    },
                    _deselectPointHandler: function(target, mode) {
                        if ("allseriespoints" === mode) {
                            target.series === this && this._resetPointsView(SELECTION, target)
                        } else if ("allargumentpoints" === mode) {
                            this.getPointsByKeys(target.argument, target.argumentIndex).forEach((function(currentPoint) {
                                currentPoint !== target && currentPoint.resetView(SELECTION)
                            }))
                        }
                    },
                    _hoverPointHandler: function(target, mode, notifyLegend) {
                        const that = this;
                        if (target.series !== that && "allargumentpoints" === mode) {
                            that.getPointsByKeys(target.argument, target.argumentIndex).forEach((function(currentPoint) {
                                currentPoint.setView(HOVER)
                            }));
                            notifyLegend && that._legendCallback(target)
                        } else if ("allseriespoints" === mode && target.series === that) {
                            that._setPointsView(HOVER, target)
                        }
                    },
                    _clearPointHoverHandler: function(target, mode, notifyLegend) {
                        const that = this;
                        if ("allargumentpoints" === mode) {
                            target.series !== that && that.getPointsByKeys(target.argument, target.argumentIndex).forEach((function(currentPoint) {
                                currentPoint.resetView(HOVER)
                            }));
                            notifyLegend && that._legendCallback(target)
                        } else if ("allseriespoints" === mode && target.series === that) {
                            that._resetPointsView(HOVER, target)
                        }
                    },
                    _deletePoints: function() {
                        this._disposePoints(this._points);
                        this._points = this._drawnPoints = null
                    },
                    _deleteTrackers: function() {
                        (0, _iterator.each)(this._trackers || [], (function(_, tracker) {
                            tracker.remove()
                        }));
                        this._trackersGroup && this._trackersGroup.dispose();
                        this._trackers = this._trackersGroup = null
                    },
                    dispose: function() {
                        this._deletePoints();
                        this._group.dispose();
                        this._labelsGroup && this._labelsGroup.dispose();
                        this._errorBarGroup && this._errorBarGroup.dispose();
                        this._deleteTrackers();
                        this._group = this._extGroups = this._markersGroup = this._elementsGroup = this._bordersGroup = this._labelsGroup = this._errorBarGroup = this._graphics = this._rangeData = this._renderer = this._styles = this._options = this._pointOptions = this._drawnPoints = this.pointsByArgument = this._segments = this._prevSeries = null
                    },
                    correctPosition: _common.noop,
                    drawTrackers: _common.noop,
                    getNeighborPoint: _common.noop,
                    areErrorBarsVisible: _common.noop,
                    _getColorId: _common.noop,
                    getMarginOptions: function() {
                        return this._patchMarginOptions({
                            percentStick: this.isFullStackedSeries()
                        })
                    },
                    getColor: function() {
                        return this.getLegendStyles().normal.fill
                    },
                    getOpacity: function() {
                        return this._options.opacity
                    },
                    getStackName: function() {
                        return this._stackName
                    },
                    getBarOverlapGroup: function() {
                        return this._options.barOverlapGroup
                    },
                    getPointByCoord: function(x, y) {
                        const point = this.getNeighborPoint(x, y);
                        return null !== point && void 0 !== point && point.coordsIn(x, y) ? point : null
                    },
                    getValueAxis: function() {
                        return this._valueAxis
                    },
                    getArgumentAxis: function() {
                        return this._argumentAxis
                    },
                    getMarkersGroup() {
                        return this._markersGroup
                    },
                    getRenderer() {
                        return this._renderer
                    },
                    removePointElements() {
                        if (this._markersGroup) {
                            (0, _iterator.each)(this._points, ((_, p) => p.deleteMarker()));
                            this._markersGroup.dispose();
                            this._markersGroup = null
                        }
                    },
                    removeGraphicElements() {
                        const that = this;
                        if (that._elementsGroup) {
                            that._elementsGroup.dispose();
                            that._elementsGroup = null
                        }(0, _iterator.each)(that._graphics || [], ((_, elem) => {
                            that._removeElement(elem)
                        }));
                        that._graphics = null
                    },
                    removeBordersGroup() {
                        if (this._bordersGroup) {
                            this._bordersGroup.dispose();
                            this._bordersGroup = null
                        }
                    }
                };
                exports.mixins = seriesNS.mixins
            },
        85526:
            /*!*************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/series/bubble_series.js ***!
              \*************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.chart = void 0;
                var _line_series = __webpack_require__( /*! ./line_series */ 85854);
                var _scatter_series = __webpack_require__( /*! ./scatter_series */ 24008);
                var _area_series = __webpack_require__( /*! ./area_series */ 46283);
                var _bar_series = __webpack_require__( /*! ./bar_series */ 91449);
                var _extend2 = __webpack_require__( /*! ../../core/utils/extend */ 52576);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 21274);
                var _common = __webpack_require__( /*! ../../core/utils/common */ 17781);
                const lineSeries = _line_series.chart.line;
                const areaSeries = _area_series.chart.area;
                const chartBarSeries = _bar_series.chart.bar;
                const polarBarSeries = _bar_series.polar.bar;
                const _extend = _extend2.extend;
                const _each = _iterator.each;
                const _noop = _common.noop;
                const chart = exports.chart = {};
                chart.bubble = _extend({}, _scatter_series.chart, {
                    _calculateErrorBars: _noop,
                    _getMainColor: chartBarSeries._getMainColor,
                    _createPointStyles: chartBarSeries._createPointStyles,
                    _updatePointsVisibility: chartBarSeries._updatePointsVisibility,
                    _getOptionsForPoint: chartBarSeries._getOptionsForPoint,
                    _applyMarkerClipRect: lineSeries._applyElementsClipRect,
                    _parsePointStyle: polarBarSeries._parsePointStyle,
                    _createLegendState: areaSeries._createLegendState,
                    _getColorId: areaSeries._getColorId,
                    _setMarkerGroupSettings: polarBarSeries._setMarkerGroupSettings,
                    areErrorBarsVisible: _noop,
                    _createErrorBarGroup: _noop,
                    _checkData: function(data, skippedFields) {
                        return _scatter_series.chart._checkData.call(this, data, skippedFields, {
                            value: this.getValueFields()[0],
                            size: this.getSizeField()
                        })
                    },
                    _getPointDataSelector: function(data, options) {
                        const sizeField = this.getSizeField();
                        const baseGetter = _scatter_series.chart._getPointDataSelector.call(this);
                        return data => {
                            const pointData = baseGetter(data);
                            pointData.size = data[sizeField];
                            return pointData
                        }
                    },
                    _aggregators: {
                        avg(_ref, series) {
                            let {
                                data: data,
                                intervalStart: intervalStart,
                                intervalEnd: intervalEnd
                            } = _ref;
                            if (!data.length) {
                                return
                            }
                            const valueField = series.getValueFields()[0];
                            const sizeField = series.getSizeField();
                            const aggregate = data.reduce(((result, item) => {
                                result[0] += item[valueField];
                                result[1] += item[sizeField];
                                result[2]++;
                                return result
                            }), [0, 0, 0]);
                            return {
                                [valueField]: aggregate[0] / aggregate[2],
                                [sizeField]: aggregate[1] / aggregate[2],
                                [series.getArgumentField()]: series._getIntervalCenter(intervalStart, intervalEnd)
                            }
                        }
                    },
                    getValueFields: function() {
                        return [this._options.valueField || "val"]
                    },
                    getSizeField: function() {
                        return this._options.sizeField || "size"
                    },
                    _animate: function() {
                        const that = this;
                        const lastPointIndex = that._drawnPoints.length - 1;
                        const labelsGroup = that._labelsGroup;
                        const labelAnimFunc = function() {
                            labelsGroup && labelsGroup.animate({
                                opacity: 1
                            }, {
                                duration: that._defaultDuration
                            })
                        };
                        _each(that._drawnPoints || [], (function(i, p) {
                            p.animate(i === lastPointIndex ? labelAnimFunc : void 0, {
                                r: p.bubbleSize,
                                translateX: p.x,
                                translateY: p.y
                            })
                        }))
                    },
                    _patchMarginOptions: function(options) {
                        options.processBubbleSize = true;
                        return options
                    }
                })
            },
        72259:
            /*!****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/series/financial_series.js ***!
              \****************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.stock = exports.candlestick = void 0;
                var _scatter_series = __webpack_require__( /*! ./scatter_series */ 24008);
                var _bar_series = __webpack_require__( /*! ./bar_series */ 91449);
                var _extend2 = __webpack_require__( /*! ../../core/utils/extend */ 52576);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 11528);
                var _utils = __webpack_require__( /*! ../core/utils */ 28779);
                var _common = __webpack_require__( /*! ../../core/utils/common */ 17781);
                const barSeries = _bar_series.chart.bar;
                const stock = exports.stock = (0, _extend2.extend)({}, _scatter_series.chart, {
                    _animate: _common.noop,
                    _applyMarkerClipRect: function(settings) {
                        settings["clip-path"] = this._forceClipping ? this._paneClipRectID : this._widePaneClipRectID
                    },
                    _updatePointsVisibility: barSeries._updatePointsVisibility,
                    _getOptionsForPoint: barSeries._getOptionsForPoint,
                    _createErrorBarGroup: _common.noop,
                    areErrorBarsVisible: _common.noop,
                    _createGroups: _scatter_series.chart._createGroups,
                    _setMarkerGroupSettings: function() {
                        const markersGroup = this._markersGroup;
                        const styles = this._createPointStyles(this._getMarkerGroupOptions());
                        const defaultStyle = (0, _extend2.extend)(styles.normal, {
                            class: "default-markers"
                        });
                        const defaultPositiveStyle = (0, _extend2.extend)(styles.positive.normal, {
                            class: "default-positive-markers"
                        });
                        const reductionStyle = (0, _extend2.extend)(styles.reduction.normal, {
                            class: "reduction-markers"
                        });
                        const reductionPositiveStyle = (0, _extend2.extend)(styles.reductionPositive.normal, {
                            class: "reduction-positive-markers"
                        });
                        const markerSettings = {
                            class: "dxc-markers"
                        };
                        this._applyMarkerClipRect(markerSettings);
                        markersGroup.attr(markerSettings);
                        this._createGroup("defaultMarkersGroup", markersGroup, markersGroup, defaultStyle);
                        this._createGroup("reductionMarkersGroup", markersGroup, markersGroup, reductionStyle);
                        this._createGroup("defaultPositiveMarkersGroup", markersGroup, markersGroup, defaultPositiveStyle);
                        this._createGroup("reductionPositiveMarkersGroup", markersGroup, markersGroup, reductionPositiveStyle)
                    },
                    _setGroupsSettings: function() {
                        _scatter_series.chart._setGroupsSettings.call(this, false)
                    },
                    _getCreatingPointOptions: function() {
                        const that = this;
                        let defaultPointOptions;
                        let creatingPointOptions = that._predefinedPointOptions;
                        if (!creatingPointOptions) {
                            defaultPointOptions = this._getPointOptions();
                            that._predefinedPointOptions = creatingPointOptions = (0, _extend2.extend)(true, {
                                styles: {}
                            }, defaultPointOptions);
                            creatingPointOptions.styles.normal = creatingPointOptions.styles.positive.normal = creatingPointOptions.styles.reduction.normal = creatingPointOptions.styles.reductionPositive.normal = {
                                "stroke-width": defaultPointOptions.styles && defaultPointOptions.styles.normal && defaultPointOptions.styles.normal["stroke-width"]
                            }
                        }
                        return creatingPointOptions
                    },
                    _checkData: function(data, skippedFields) {
                        const valueFields = this.getValueFields();
                        return _scatter_series.chart._checkData.call(this, data, skippedFields, {
                            openValue: valueFields[0],
                            highValue: valueFields[1],
                            lowValue: valueFields[2],
                            closeValue: valueFields[3]
                        }) && data.highValue === data.highValue && data.lowValue === data.lowValue
                    },
                    _getPointDataSelector: function(data, options) {
                        const that = this;
                        let level;
                        const valueFields = that.getValueFields();
                        const argumentField = that.getArgumentField();
                        const openValueField = valueFields[0];
                        const highValueField = valueFields[1];
                        const lowValueField = valueFields[2];
                        const closeValueField = valueFields[3];
                        that.level = that._options.reduction.level;
                        switch ((0, _utils.normalizeEnum)(that.level)) {
                            case "open":
                                level = openValueField;
                                break;
                            case "high":
                                level = highValueField;
                                break;
                            case "low":
                                level = lowValueField;
                                break;
                            default:
                                level = closeValueField;
                                that.level = "close"
                        }
                        let prevLevelValue;
                        return data => {
                            const reductionValue = data[level];
                            let isReduction = false;
                            if ((0, _type.isDefined)(reductionValue)) {
                                if ((0, _type.isDefined)(prevLevelValue)) {
                                    isReduction = reductionValue < prevLevelValue
                                }
                                prevLevelValue = reductionValue
                            }
                            return {
                                argument: data[argumentField],
                                highValue: this._processEmptyValue(data[highValueField]),
                                lowValue: this._processEmptyValue(data[lowValueField]),
                                closeValue: this._processEmptyValue(data[closeValueField]),
                                openValue: this._processEmptyValue(data[openValueField]),
                                reductionValue: reductionValue,
                                tag: data[that.getTagField()],
                                isReduction: isReduction,
                                data: data
                            }
                        }
                    },
                    _parsePointStyle: function(style, defaultColor, innerColor) {
                        const color = (0, _utils.extractColor)(style.color, true);
                        return {
                            stroke: color || defaultColor,
                            "stroke-width": style.width,
                            fill: color || innerColor
                        }
                    },
                    _getDefaultStyle: function(options) {
                        const mainPointColor = (0, _utils.extractColor)(options.color, true) || this._options.mainSeriesColor;
                        return {
                            normal: this._parsePointStyle(options, mainPointColor, mainPointColor),
                            hover: this._parsePointStyle(options.hoverStyle, mainPointColor, mainPointColor),
                            selection: this._parsePointStyle(options.selectionStyle, mainPointColor, mainPointColor)
                        }
                    },
                    _getReductionStyle: function(options) {
                        const reductionColor = options.reduction.color;
                        return {
                            normal: this._parsePointStyle({
                                color: reductionColor,
                                width: options.width,
                                hatching: options.hatching
                            }, reductionColor, reductionColor),
                            hover: this._parsePointStyle(options.hoverStyle, reductionColor, reductionColor),
                            selection: this._parsePointStyle(options.selectionStyle, reductionColor, reductionColor)
                        }
                    },
                    _createPointStyles: function(pointOptions) {
                        const innerColor = this._options.innerColor;
                        const styles = this._getDefaultStyle(pointOptions);
                        const positiveStyle = (0, _extend2.extend)(true, {}, styles);
                        const reductionStyle = this._getReductionStyle(pointOptions);
                        const reductionPositiveStyle = (0, _extend2.extend)(true, {}, reductionStyle);
                        positiveStyle.normal.fill = positiveStyle.hover.fill = positiveStyle.selection.fill = innerColor;
                        reductionPositiveStyle.normal.fill = reductionPositiveStyle.hover.fill = reductionPositiveStyle.selection.fill = innerColor;
                        styles.positive = positiveStyle;
                        styles.reduction = reductionStyle;
                        styles.reductionPositive = reductionPositiveStyle;
                        styles.labelColor = this._options.mainSeriesColor;
                        return styles
                    },
                    _endUpdateData: function() {
                        delete this._predefinedPointOptions
                    },
                    _defaultAggregator: "ohlc",
                    _aggregators: {
                        ohlc: (_ref, series) => {
                            let {
                                intervalStart: intervalStart,
                                intervalEnd: intervalEnd,
                                data: data
                            } = _ref;
                            if (!data.length) {
                                return
                            }
                            let result = {};
                            const valueFields = series.getValueFields();
                            const highValueField = valueFields[1];
                            const lowValueField = valueFields[2];
                            result[highValueField] = -1 / 0;
                            result[lowValueField] = 1 / 0;
                            result = data.reduce((function(result, item) {
                                if (null !== item[highValueField]) {
                                    result[highValueField] = Math.max(result[highValueField], item[highValueField])
                                }
                                if (null !== item[lowValueField]) {
                                    result[lowValueField] = Math.min(result[lowValueField], item[lowValueField])
                                }
                                return result
                            }), result);
                            result[valueFields[0]] = data[0][valueFields[0]];
                            result[valueFields[3]] = data[data.length - 1][valueFields[3]];
                            if (!isFinite(result[highValueField])) {
                                result[highValueField] = null
                            }
                            if (!isFinite(result[lowValueField])) {
                                result[lowValueField] = null
                            }
                            result[series.getArgumentField()] = series._getIntervalCenter(intervalStart, intervalEnd);
                            return result
                        }
                    },
                    getValueFields: function() {
                        const options = this._options;
                        return [options.openValueField || "open", options.highValueField || "high", options.lowValueField || "low", options.closeValueField || "close"]
                    },
                    getArgumentField: function() {
                        return this._options.argumentField || "date"
                    },
                    _patchMarginOptions: function(options) {
                        const pointOptions = this._getCreatingPointOptions();
                        const styles = pointOptions.styles;
                        const border = [styles.normal, styles.hover, styles.selection].reduce((function(max, style) {
                            return Math.max(max, style["stroke-width"])
                        }), 0);
                        options.size = 10 + border;
                        options.sizePointNormalState = 10;
                        return options
                    },
                    getSeriesPairCoord(coord, isArgument) {
                        let oppositeCoord = null;
                        const points = this.getVisiblePoints();
                        for (let i = 0; i < points.length; i++) {
                            const p = points[i];
                            let tmpCoord;
                            if (isArgument) {
                                tmpCoord = p.vx === coord ? (p.openY + p.closeY) / 2 : void 0
                            } else {
                                const coords = [Math.min(p.lowY, p.highY), Math.max(p.lowY, p.highY)];
                                tmpCoord = coord >= coords[0] && coord <= coords[1] ? p.vx : void 0
                            }
                            if (this._checkAxisVisibleAreaCoord(!isArgument, tmpCoord)) {
                                oppositeCoord = tmpCoord;
                                break
                            }
                        }
                        return oppositeCoord
                    },
                    usePointsToDefineAutoHiding: () => false
                });
                exports.candlestick = (0, _extend2.extend)({}, stock, {
                    _parsePointStyle: function(style, defaultColor, innerColor) {
                        const color = (0, _utils.extractColor)(style.color, true) || innerColor;
                        const base = stock._parsePointStyle.call(this, style, defaultColor, color);
                        base.fill = color;
                        base.hatching = style.hatching;
                        return base
                    }
                })
            },
        82e3:
            /*!*****************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/series/helpers/display_format_parser.js ***!
              \*****************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.processDisplayFormat = function(displayFormat, pointInfo) {
                    let actualText = displayFormat;
                    let continueProcess = true;
                    while (continueProcess) {
                        const startBracketIndex = actualText.indexOf(startPlaceHolderChar);
                        const endBracketIndex = actualText.indexOf(endPlaceHolderChar);
                        if (startBracketIndex >= 0 && endBracketIndex > 0) {
                            const placeHolder = actualText.substring(startBracketIndex + 1, endBracketIndex);
                            const value = getValueByPlaceHolder(placeHolder, pointInfo);
                            actualText = actualText.substr(0, startBracketIndex) + value + actualText.substr(endBracketIndex + 1)
                        } else {
                            continueProcess = false
                        }
                    }
                    return actualText
                };
                var _localization = __webpack_require__( /*! ../../../localization */ 49077);
                const startPlaceHolderChar = "{";
                const endPlaceHolderChar = "}";
                const placeholderFormatDelimiter = ":";

                function getValueByPlaceHolder(placeHolder, pointInfo) {
                    let customFormat = "";
                    const customFormatIndex = placeHolder.indexOf(placeholderFormatDelimiter);
                    if (customFormatIndex > 0) {
                        customFormat = placeHolder.substr(customFormatIndex + 1);
                        placeHolder = placeHolder.substr(0, customFormatIndex)
                    }
                    return function(value, format) {
                        if (format) {
                            if (value instanceof Date) {
                                return (0, _localization.formatDate)(value, format)
                            }
                            if ("number" === typeof value) {
                                return (0, _localization.formatNumber)(value, format)
                            }
                        }
                        return value
                    }(pointInfo[placeHolder], customFormat)
                }
            },
        34685:
            /*!*****************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/series/helpers/range_data_calculator.js ***!
              \*****************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _utils = __webpack_require__( /*! ../../core/utils */ 28779);
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528);
                var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781);
                const {
                    abs: abs,
                    floor: floor,
                    ceil: ceil,
                    min: min
                } = Math;

                function continuousRangeCalculator(range, minValue, maxValue) {
                    range.min = range.min < minValue ? range.min : minValue;
                    range.max = range.max > maxValue ? range.max : maxValue
                }

                function createGetLogFunction(axisType, axis) {
                    if ("logarithmic" !== axisType) {
                        return null
                    }
                    const base = axis.getOptions().logarithmBase;
                    return value => {
                        const log = (0, _utils.getLog)(abs(value), base);
                        const round = log < 0 ? floor : ceil;
                        return round(log)
                    }
                }

                function getRangeCalculator(axisType, axis, getLog) {
                    let rangeCalculator = continuousRangeCalculator;
                    if ("discrete" === axisType) {
                        rangeCalculator = function(range, minValue, maxValue) {
                            if (minValue !== maxValue) {
                                range.categories.push(maxValue)
                            }
                            range.categories.push(minValue)
                        }
                    } else if (axis) {
                        rangeCalculator = function(range, value) {
                            const interval = axis.calculateInterval(value, range.prevValue);
                            const minInterval = range.interval;
                            range.interval = (minInterval < interval ? minInterval : interval) || minInterval;
                            range.prevValue = value;
                            continuousRangeCalculator(range, value, value)
                        }
                    }
                    if (getLog) {
                        return (range, minValue, maxValue) => {
                            const minArgs = [];
                            rangeCalculator(range, minValue, maxValue);
                            0 !== minValue && minArgs.push(getLog(minValue));
                            0 !== maxValue && minArgs.push(getLog(maxValue));
                            const linearThreshold = min.apply(null, minArgs);
                            range.linearThreshold = range.linearThreshold < linearThreshold ? range.linearThreshold : linearThreshold
                        }
                    }
                    return rangeCalculator
                }

                function getInitialRange(axisType, dataType, firstValue) {
                    const range = {
                        axisType: axisType,
                        dataType: dataType
                    };
                    if ("discrete" === axisType) {
                        range.categories = []
                    } else {
                        range.min = (0, _type.isObject)(firstValue) ? firstValue.min : firstValue;
                        range.max = (0, _type.isObject)(firstValue) ? firstValue.max : firstValue
                    }
                    return range
                }

                function processCategories(range) {
                    if (range.categories) {
                        range.categories = (0, _utils.unique)(range.categories)
                    }
                    return range
                }

                function calculateRangeBetweenPoints(rangeCalculator, range, point, prevPoint, bound) {
                    const value = function(point, extraPoint, x, range) {
                        if (extraPoint && (0, _type.isDefined)(extraPoint.value)) {
                            const y1 = point.value;
                            const y2 = extraPoint.value;
                            const x1 = point.argument;
                            const x2 = extraPoint.argument;
                            const r = (x - x1) * (y2 - y1) / (x2 - x1) + y1.valueOf();
                            return "datetime" === range.dataType ? new Date(r) : r
                        } else {
                            return point.value
                        }
                    }(point, prevPoint, bound, range);
                    rangeCalculator(range, value, value)
                }

                function isLineSeries(series) {
                    return series.type.toLowerCase().indexOf("line") >= 0 || series.type.toLowerCase().indexOf("area") >= 0
                }

                function getViewportReducer(series) {
                    const rangeCalculator = getRangeCalculator(series.valueAxisType);
                    const argumentAxis = series.getArgumentAxis();
                    const viewport = argumentAxis && series.getArgumentAxis().visualRange() || {};
                    const calculatePointBetweenPoints = isLineSeries(series) ? calculateRangeBetweenPoints : _common.noop;
                    if (argumentAxis && argumentAxis.getMarginOptions().checkInterval) {
                        const range = series.getArgumentAxis().getTranslator().getBusinessRange();
                        const add = (0, _utils.getAddFunction)(range, false);
                        const interval = range.interval;
                        if (isFinite(interval) && (0, _type.isDefined)(viewport.startValue) && (0, _type.isDefined)(viewport.endValue)) {
                            viewport.startValue = add(viewport.startValue, interval, -1);
                            viewport.endValue = add(viewport.endValue, interval)
                        }
                    }
                    const viewportFilter = getViewPortFilter(viewport);
                    return function(range, point, index, points) {
                        const argument = point.argument;
                        if (!point.hasValue()) {
                            return range
                        }
                        if (viewportFilter(argument)) {
                            if (!range.startCalc) {
                                range.startCalc = true;
                                calculatePointBetweenPoints(rangeCalculator, range, point, points[index - 1], viewport.startValue)
                            }
                            rangeCalculator(range, point.getMinValue(), point.getMaxValue())
                        } else if (!viewport.categories && (0, _type.isDefined)(viewport.startValue) && argument > viewport.startValue) {
                            if (!range.startCalc) {
                                calculatePointBetweenPoints(rangeCalculator, range, point, points[index - 1], viewport.startValue)
                            }
                            range.endCalc = true;
                            calculatePointBetweenPoints(rangeCalculator, range, point, points[index - 1], viewport.endValue)
                        }
                        return range
                    }
                }

                function getViewPortFilter(viewport) {
                    if (viewport.categories) {
                        const dictionary = viewport.categories.reduce(((result, category) => {
                            result[category.valueOf()] = true;
                            return result
                        }), {});
                        return argument => (0, _type.isDefined)(argument) && dictionary[argument.valueOf()]
                    }
                    if (!(0, _type.isDefined)(viewport.startValue) && !(0, _type.isDefined)(viewport.endValue)) {
                        return () => true
                    }
                    if (!(0, _type.isDefined)(viewport.endValue)) {
                        return argument => argument >= viewport.startValue
                    }
                    if (!(0, _type.isDefined)(viewport.startValue)) {
                        return argument => argument <= viewport.endValue
                    }
                    return argument => argument >= viewport.startValue && argument <= viewport.endValue
                }
                exports.default = {
                    getViewPortFilter: getViewPortFilter,
                    getArgumentRange: function(series) {
                        const data = series._data || [];
                        let range = {};
                        if (data.length) {
                            if ("discrete" === series.argumentAxisType) {
                                range = {
                                    categories: data.map((item => item.argument))
                                }
                            } else {
                                let interval;
                                if (data.length > 1) {
                                    const i1 = series.getArgumentAxis().calculateInterval(data[0].argument, data[1].argument);
                                    const i2 = series.getArgumentAxis().calculateInterval(data[data.length - 1].argument, data[data.length - 2].argument);
                                    interval = min(i1, i2)
                                }
                                range = {
                                    min: data[0].argument,
                                    max: data[data.length - 1].argument,
                                    interval: interval
                                }
                            }
                        }
                        return processCategories(range)
                    },
                    getRangeData: function(series) {
                        const points = series.getPoints();
                        const useAggregation = series.useAggregation();
                        const argumentAxis = series.getArgumentAxis();
                        const argumentCalculator = getRangeCalculator(series.argumentAxisType, points.length > 1 && argumentAxis, createGetLogFunction(series.argumentAxisType, argumentAxis));
                        const valueRangeCalculator = getRangeCalculator(series.valueAxisType, null, createGetLogFunction(series.valueAxisType, series.getValueAxis()));
                        const viewportReducer = getViewportReducer(series);
                        const range = points.reduce((function(range, point, index, points) {
                            const argument = point.argument;
                            if (!point.isArgumentCorrect()) {
                                return range
                            }
                            argumentCalculator(range.arg, argument, argument);
                            if (point.hasValue()) {
                                valueRangeCalculator(range.val, point.getMinValue(), point.getMaxValue());
                                viewportReducer(range.viewport, point, index, points)
                            }
                            return range
                        }), {
                            arg: getInitialRange(series.argumentAxisType, series.argumentType, null !== argumentAxis && void 0 !== argumentAxis && argumentAxis.aggregatedPointBetweenTicks() ? void 0 : series.getArgumentRangeInitialValue()),
                            val: getInitialRange(series.valueAxisType, series.valueType, points.length ? series.getValueRangeInitialValue() : void 0),
                            viewport: getInitialRange(series.valueAxisType, series.valueType, points.length ? series.getValueRangeInitialValue() : void 0)
                        });
                        if (useAggregation) {
                            const argumentRange = this.getArgumentRange(series);
                            if ("discrete" === series.argumentAxisType) {
                                range.arg = argumentRange
                            } else {
                                const viewport = argumentAxis.getViewport();
                                if ((0, _type.isDefined)(viewport.startValue) || (0, _type.isDefined)(viewport.length)) {
                                    argumentCalculator(range.arg, argumentRange.min, argumentRange.min)
                                }
                                if ((0, _type.isDefined)(viewport.endValue) || (0, _type.isDefined)(viewport.length) && (0, _type.isDefined)(viewport.startValue)) {
                                    argumentCalculator(range.arg, argumentRange.max, argumentRange.max)
                                }
                            }
                        }
                        processCategories(range.arg);
                        processCategories(range.val);
                        return range
                    },
                    getViewport: function(series) {
                        const points = series.getPoints();
                        let range = {};
                        const reducer = getViewportReducer(series);
                        range = getInitialRange(series.valueAxisType, series.valueType, points.length ? series.getValueRangeInitialValue() : void 0);
                        points.some((function(point, index) {
                            reducer(range, point, index, points);
                            return range.endCalc
                        }));
                        return range
                    },
                    getPointsInViewPort: function(series) {
                        const argumentViewPortFilter = getViewPortFilter(series.getArgumentAxis().visualRange() || {});
                        const valueViewPort = series.getValueAxis().visualRange() || {};
                        const valueViewPortFilter = getViewPortFilter(valueViewPort);
                        const points = series.getPoints();
                        const addValue = function(values, point, isEdge) {
                            const minValue = point.getMinValue();
                            const maxValue = point.getMaxValue();
                            const isMinValueInViewPort = valueViewPortFilter(minValue);
                            const isMaxValueInViewPort = valueViewPortFilter(maxValue);
                            if (isMinValueInViewPort) {
                                values.push(minValue)
                            }
                            if (maxValue !== minValue && isMaxValueInViewPort) {
                                values.push(maxValue)
                            }
                            if (isEdge && !isMinValueInViewPort && !isMaxValueInViewPort) {
                                if (!values.length) {
                                    values.push(valueViewPort.startValue)
                                } else {
                                    values.push(valueViewPort.endValue)
                                }
                            }
                        };
                        const addEdgePoints = isLineSeries(series) ? function(result, points, index) {
                            const point = points[index];
                            const prevPoint = points[index - 1];
                            const nextPoint = points[index + 1];
                            if (nextPoint && argumentViewPortFilter(nextPoint.argument)) {
                                addValue(result[1], point, true)
                            }
                            if (prevPoint && argumentViewPortFilter(prevPoint.argument)) {
                                addValue(result[1], point, true)
                            }
                        } : _common.noop;
                        return points.reduce((function(result, point, index) {
                            if (argumentViewPortFilter(point.argument)) {
                                addValue(result[0], point)
                            } else {
                                addEdgePoints(result, points, index)
                            }
                            return result
                        }), [
                            [],
                            []
                        ])
                    }
                };
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        85854:
            /*!***********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/series/line_series.js ***!
              \***********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.polar = exports.chart = void 0;
                var _scatter_series = __webpack_require__( /*! ./scatter_series */ 24008);
                var _object = __webpack_require__( /*! ../../core/utils/object */ 22263);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 21274);
                var _utils = __webpack_require__( /*! ../core/utils */ 28779);
                var _math = __webpack_require__( /*! ../../core/utils/math */ 50254);
                const {
                    round: round,
                    sqrt: sqrt,
                    pow: pow,
                    min: min,
                    max: max,
                    abs: abs
                } = Math;
                const chart = exports.chart = {};
                const polar = exports.polar = {};

                function clonePoint(point, newX, newY, newAngle) {
                    const p = (0, _object.clone)(point);
                    p.x = newX;
                    p.y = newY;
                    p.angle = newAngle;
                    return p
                }

                function getTangentPoint(point, prevPoint, centerPoint, tan, nextStepAngle) {
                    const correctAngle = point.angle + nextStepAngle;
                    const cosSin = (0, _utils.getCosAndSin)(correctAngle);
                    const x = centerPoint.x + (point.radius + tan * nextStepAngle) * cosSin.cos;
                    const y = centerPoint.y - (point.radius + tan * nextStepAngle) * cosSin.sin;
                    return clonePoint(prevPoint, x, y, correctAngle)
                }

                function obtainCubicBezierTCoef(p, p0, p1, p2, p3) {
                    const d = p0 - p;
                    const c = 3 * p1 - 3 * p0;
                    const b = 3 * p2 - 6 * p1 + 3 * p0;
                    const a = p3 - 3 * p2 + 3 * p1 - p0;
                    return (0, _math.solveCubicEquation)(a, b, c, d)
                }
                const lineMethods = {
                    autoHidePointMarkersEnabled: () => true,
                    _applyGroupSettings: function(style, settings, group) {
                        settings = (0, _extend.extend)(settings, style);
                        this._applyElementsClipRect(settings);
                        group.attr(settings)
                    },
                    _setGroupsSettings: function(animationEnabled) {
                        const style = this._styles.normal;
                        this._applyGroupSettings(style.elements, {
                            class: "dxc-elements"
                        }, this._elementsGroup);
                        this._bordersGroup && this._applyGroupSettings(style.border, {
                            class: "dxc-borders"
                        }, this._bordersGroup);
                        _scatter_series.chart._setGroupsSettings.call(this, animationEnabled);
                        animationEnabled && this._markersGroup && this._markersGroup.attr({
                            opacity: .001
                        })
                    },
                    _createGroups: function() {
                        this._createGroup("_elementsGroup", this, this._group);
                        this._areBordersVisible() && this._createGroup("_bordersGroup", this, this._group);
                        _scatter_series.chart._createGroups.call(this)
                    },
                    _areBordersVisible: function() {
                        return false
                    },
                    _getDefaultSegment: function(segment) {
                        return {
                            line: (0, _utils.map)(segment.line || [], (function(pt) {
                                return pt.getDefaultCoords()
                            }))
                        }
                    },
                    _prepareSegment: function(points) {
                        return {
                            line: points
                        }
                    },
                    _parseLineOptions: function(options, defaultColor) {
                        return {
                            stroke: (0, _utils.extractColor)(options.color, true) || defaultColor,
                            "stroke-width": options.width,
                            dashStyle: options.dashStyle || "solid"
                        }
                    },
                    _parseStyle: function(options, defaultColor) {
                        return {
                            elements: this._parseLineOptions(options, defaultColor)
                        }
                    },
                    _applyStyle: function(style) {
                        this._elementsGroup && this._elementsGroup.attr(style.elements);
                        (0, _iterator.each)(this._graphics || [], (function(_, graphic) {
                            graphic.line && graphic.line.attr({
                                "stroke-width": style.elements["stroke-width"]
                            }).sharp()
                        }))
                    },
                    _drawElement: function(segment, group) {
                        return {
                            line: this._createMainElement(segment.line, {
                                "stroke-width": this._styles.normal.elements["stroke-width"]
                            }).append(group)
                        }
                    },
                    _removeElement: function(element) {
                        element.line.remove()
                    },
                    _updateElement: function(element, segment, animate, animationComplete) {
                        const params = {
                            points: segment.line
                        };
                        const lineElement = element.line;
                        animate ? lineElement.animate(params, {}, animationComplete) : lineElement.attr(params)
                    },
                    _animateComplete: function() {
                        _scatter_series.chart._animateComplete.call(this);
                        this._markersGroup && this._markersGroup.animate({
                            opacity: 1
                        }, {
                            duration: this._defaultDuration
                        })
                    },
                    _animate: function() {
                        const that = this;
                        const lastIndex = that._graphics.length - 1;
                        (0, _iterator.each)(that._graphics || [], (function(i, elem) {
                            let complete;
                            if (i === lastIndex) {
                                complete = function() {
                                    that._animateComplete()
                                }
                            }
                            that._updateElement(elem, that._segments[i], true, complete)
                        }))
                    },
                    _drawPoint: function(options) {
                        _scatter_series.chart._drawPoint.call(this, {
                            point: options.point,
                            groups: options.groups
                        })
                    },
                    _createMainElement: function(points, settings) {
                        return this._renderer.path(points, "line").attr(settings)
                    },
                    _sortPoints: function(points, rotated) {
                        return rotated ? points.sort((function(p1, p2) {
                            return p2.y - p1.y
                        })) : points.sort((function(p1, p2) {
                            return p1.x - p2.x
                        }))
                    },
                    _drawSegment: function(points, animationEnabled, segmentCount, lastSegment) {
                        const that = this;
                        const rotated = that._options.rotated;
                        const segment = that._prepareSegment(points, rotated, lastSegment);
                        that._segments.push(segment);
                        if (!that._graphics[segmentCount]) {
                            that._graphics[segmentCount] = that._drawElement(animationEnabled ? that._getDefaultSegment(segment) : segment, that._elementsGroup)
                        } else if (!animationEnabled) {
                            that._updateElement(that._graphics[segmentCount], segment)
                        }
                    },
                    _getTrackerSettings: function() {
                        const defaultTrackerWidth = this._defaultTrackerWidth;
                        const strokeWidthFromElements = this._styles.normal.elements["stroke-width"];
                        return {
                            "stroke-width": strokeWidthFromElements > defaultTrackerWidth ? strokeWidthFromElements : defaultTrackerWidth,
                            fill: "none"
                        }
                    },
                    _getMainPointsFromSegment: function(segment) {
                        return segment.line
                    },
                    _drawTrackerElement: function(segment) {
                        return this._createMainElement(this._getMainPointsFromSegment(segment), this._getTrackerSettings(segment))
                    },
                    _updateTrackerElement: function(segment, element) {
                        const settings = this._getTrackerSettings(segment);
                        settings.points = this._getMainPointsFromSegment(segment);
                        element.attr(settings)
                    },
                    checkSeriesViewportCoord(axis, coord) {
                        if (!_scatter_series.chart.checkSeriesViewportCoord.call(this)) {
                            return false
                        }
                        const range = axis.isArgumentAxis ? this.getArgumentRange() : this.getViewport();
                        const min = axis.getTranslator().translate(range.categories ? range.categories[0] : range.min);
                        const max = axis.getTranslator().translate(range.categories ? range.categories[range.categories.length - 1] : range.max);
                        const rotated = this.getOptions().rotated;
                        const inverted = axis.getOptions().inverted;
                        return axis.isArgumentAxis && (!rotated && !inverted || rotated && inverted) || !axis.isArgumentAxis && (rotated && !inverted || !rotated && inverted) ? coord >= min && coord <= max : coord >= max && coord <= min
                    }
                };
                const lineSeries = chart.line = (0, _extend.extend)({}, _scatter_series.chart, lineMethods, {
                    getPointCenterByArg(arg) {
                        const value = this.getArgumentAxis().getTranslator().translate(arg);
                        return {
                            x: value,
                            y: value
                        }
                    },
                    getSeriesPairCoord(coord, isArgument) {
                        let oppositeCoord = null;
                        const nearestPoints = this._getNearestPointsByCoord(coord, isArgument);
                        const needValueCoord = isArgument && !this._options.rotated || !isArgument && this._options.rotated;
                        for (let i = 0; i < nearestPoints.length; i++) {
                            const p = nearestPoints[i];
                            const k = (p[1].vy - p[0].vy) / (p[1].vx - p[0].vx);
                            const b = p[0].vy - p[0].vx * k;
                            let tmpCoord;
                            if (p[1].vx - p[0].vx === 0) {
                                tmpCoord = needValueCoord ? p[0].vy : p[0].vx
                            } else {
                                tmpCoord = needValueCoord ? k * coord + b : (coord - b) / k
                            }
                            if (this._checkAxisVisibleAreaCoord(!isArgument, tmpCoord)) {
                                oppositeCoord = tmpCoord;
                                break
                            }
                        }
                        return oppositeCoord
                    }
                });
                chart.stepline = (0, _extend.extend)({}, lineSeries, {
                    _calculateStepLinePoints(points) {
                        const segment = [];
                        const coordName = this._options.rotated ? "x" : "y";
                        (0, _iterator.each)(points, (function(i, pt) {
                            let point;
                            if (!i) {
                                segment.push(pt);
                                return
                            }
                            const step = segment[segment.length - 1][coordName];
                            if (step !== pt[coordName]) {
                                point = (0, _object.clone)(pt);
                                point[coordName] = step;
                                segment.push(point)
                            }
                            segment.push(pt)
                        }));
                        return segment
                    },
                    _prepareSegment: function(points) {
                        return lineSeries._prepareSegment(this._calculateStepLinePoints(points))
                    },
                    getSeriesPairCoord(coord, isArgument) {
                        let oppositeCoord;
                        const rotated = this._options.rotated;
                        const isOpposite = !isArgument && !rotated || isArgument && rotated;
                        const coordName = !isOpposite ? "vx" : "vy";
                        const oppositeCoordName = !isOpposite ? "vy" : "vx";
                        const nearestPoints = this._getNearestPointsByCoord(coord, isArgument);
                        for (let i = 0; i < nearestPoints.length; i++) {
                            const p = nearestPoints[i];
                            let tmpCoord;
                            if (isArgument) {
                                tmpCoord = coord !== p[1][coordName] ? p[0][oppositeCoordName] : p[1][oppositeCoordName]
                            } else {
                                tmpCoord = coord === p[0][coordName] ? p[0][oppositeCoordName] : p[1][oppositeCoordName]
                            }
                            if (this._checkAxisVisibleAreaCoord(!isArgument, tmpCoord)) {
                                oppositeCoord = tmpCoord;
                                break
                            }
                        }
                        return oppositeCoord
                    }
                });
                chart.spline = (0, _extend.extend)({}, lineSeries, {
                    _calculateBezierPoints: function(src, rotated) {
                        const bezierPoints = [];
                        const pointsCopy = src;
                        const checkExtremum = function(otherPointCoord, pointCoord, controlCoord) {
                            return otherPointCoord > pointCoord && controlCoord > otherPointCoord || otherPointCoord < pointCoord && controlCoord < otherPointCoord ? otherPointCoord : controlCoord
                        };
                        if (1 !== pointsCopy.length) {
                            pointsCopy.forEach((function(curPoint, i) {
                                let leftControlX;
                                let leftControlY;
                                let rightControlX;
                                let rightControlY;
                                const prevPoint = pointsCopy[i - 1];
                                const nextPoint = pointsCopy[i + 1];
                                let x1;
                                let x2;
                                let y1;
                                let y2;
                                let a;
                                let b;
                                let c;
                                let xc;
                                let yc;
                                let shift;
                                if (!i || i === pointsCopy.length - 1) {
                                    bezierPoints.push(curPoint, curPoint);
                                    return
                                }
                                const xCur = curPoint.x;
                                const yCur = curPoint.y;
                                x1 = prevPoint.x;
                                x2 = nextPoint.x;
                                y1 = prevPoint.y;
                                y2 = nextPoint.y;
                                const curIsExtremum = !!(!rotated && (yCur <= prevPoint.y && yCur <= nextPoint.y || yCur >= prevPoint.y && yCur >= nextPoint.y) || rotated && (xCur <= prevPoint.x && xCur <= nextPoint.x || xCur >= prevPoint.x && xCur >= nextPoint.x));
                                if (curIsExtremum) {
                                    if (!rotated) {
                                        rightControlY = leftControlY = yCur;
                                        rightControlX = (xCur + nextPoint.x) / 2;
                                        leftControlX = (xCur + prevPoint.x) / 2
                                    } else {
                                        rightControlX = leftControlX = xCur;
                                        rightControlY = (yCur + nextPoint.y) / 2;
                                        leftControlY = (yCur + prevPoint.y) / 2
                                    }
                                } else {
                                    a = y2 - y1;
                                    b = x1 - x2;
                                    c = y1 * x2 - x1 * y2;
                                    if (!rotated) {
                                        if (!b) {
                                            bezierPoints.push(curPoint, curPoint, curPoint);
                                            return
                                        }
                                        xc = xCur;
                                        yc = -1 * (a * xc + c) / b;
                                        shift = yc - yCur;
                                        y1 -= shift;
                                        y2 -= shift
                                    } else {
                                        if (!a) {
                                            bezierPoints.push(curPoint, curPoint, curPoint);
                                            return
                                        }
                                        yc = yCur;
                                        xc = -1 * (b * yc + c) / a;
                                        shift = xc - xCur;
                                        x1 -= shift;
                                        x2 -= shift
                                    }
                                    rightControlX = (xCur + .5 * x2) / 1.5;
                                    rightControlY = (yCur + .5 * y2) / 1.5;
                                    leftControlX = (xCur + .5 * x1) / 1.5;
                                    leftControlY = (yCur + .5 * y1) / 1.5
                                }
                                if (!rotated) {
                                    leftControlY = checkExtremum(prevPoint.y, yCur, leftControlY);
                                    rightControlY = checkExtremum(nextPoint.y, yCur, rightControlY)
                                } else {
                                    leftControlX = checkExtremum(prevPoint.x, xCur, leftControlX);
                                    rightControlX = checkExtremum(nextPoint.x, xCur, rightControlX)
                                }
                                const leftPoint = clonePoint(curPoint, leftControlX, leftControlY);
                                const rightPoint = clonePoint(curPoint, rightControlX, rightControlY);
                                bezierPoints.push(leftPoint, curPoint, rightPoint)
                            }))
                        } else {
                            bezierPoints.push(pointsCopy[0])
                        }
                        return bezierPoints
                    },
                    _prepareSegment: function(points, rotated) {
                        return lineSeries._prepareSegment(this._calculateBezierPoints(points, rotated))
                    },
                    _createMainElement: function(points, settings) {
                        return this._renderer.path(points, "bezier").attr(settings)
                    },
                    getSeriesPairCoord(coord, isArgument) {
                        let oppositeCoord = null;
                        const isOpposite = !isArgument && !this._options.rotated || isArgument && this._options.rotated;
                        const coordName = !isOpposite ? "vx" : "vy";
                        const bezierCoordName = !isOpposite ? "x" : "y";
                        const oppositeCoordName = !isOpposite ? "vy" : "vx";
                        const bezierOppositeCoordName = !isOpposite ? "y" : "x";
                        const axis = !isArgument ? this.getArgumentAxis() : this.getValueAxis();
                        const visibleArea = axis.getVisibleArea();
                        const nearestPoints = this._getNearestPointsByCoord(coord, isArgument);
                        for (let i = 0; i < nearestPoints.length; i++) {
                            const p = nearestPoints[i];
                            if (1 === p.length) {
                                visibleArea[0] <= p[0][oppositeCoordName] && visibleArea[1] >= p[0][oppositeCoordName] && (oppositeCoord = p[0][oppositeCoordName])
                            } else {
                                const ts = obtainCubicBezierTCoef(coord, p[0][coordName], p[1][bezierCoordName], p[2][bezierCoordName], p[3][coordName]);
                                ts.forEach((t => {
                                    if (t >= 0 && t <= 1) {
                                        const tmpCoord = Math.pow(1 - t, 3) * p[0][oppositeCoordName] + 3 * Math.pow(1 - t, 2) * t * p[1][bezierOppositeCoordName] + 3 * (1 - t) * t * t * p[2][bezierOppositeCoordName] + t * t * t * p[3][oppositeCoordName];
                                        if (visibleArea[0] <= tmpCoord && visibleArea[1] >= tmpCoord) {
                                            oppositeCoord = tmpCoord
                                        }
                                    }
                                }))
                            }
                            if (null !== oppositeCoord) {
                                break
                            }
                        }
                        return oppositeCoord
                    },
                    _getNearestPoints(point, nextPoint, bezierPoints) {
                        const index = bezierPoints.indexOf(point);
                        return [point, bezierPoints[index + 1], bezierPoints[index + 2], nextPoint]
                    },
                    _getBezierPoints() {
                        return this._segments.length > 0 ? this._segments.reduce(((a, seg) => a.concat(seg.line)), []) : []
                    }
                });
                polar.line = (0, _extend.extend)({}, _scatter_series.polar, lineMethods, {
                    _sortPoints: function(points) {
                        return points
                    },
                    _prepareSegment: function(points, rotated, lastSegment) {
                        let preparedPoints = [];
                        const centerPoint = this.getValueAxis().getCenter();
                        let i;
                        lastSegment && this._closeSegment(points);
                        if ("discrete" !== this.argumentAxisType && "discrete" !== this.valueAxisType) {
                            for (i = 1; i < points.length; i++) {
                                preparedPoints = preparedPoints.concat(this._getTangentPoints(points[i], points[i - 1], centerPoint, i === points.length - 1))
                            }
                            if (!preparedPoints.length) {
                                preparedPoints = points
                            }
                        } else {
                            return lineSeries._prepareSegment.call(this, points)
                        }
                        return {
                            line: preparedPoints
                        }
                    },
                    _getRemainingAngle: function(angle) {
                        const normAngle = (0, _utils.normalizeAngle)(angle);
                        return angle >= 0 ? 360 - normAngle : -normAngle
                    },
                    _closeSegment(points) {
                        const point = this._segments.length ? this._segments[0].line[0] : points[0];
                        let newPoint = clonePoint(point, point.x, point.y, point.angle);
                        newPoint = this._modifyReflectedPoint(newPoint, points.at(-1));
                        if (newPoint) {
                            points.push(newPoint)
                        }
                    },
                    _modifyReflectedPoint(point, lastPoint) {
                        if (lastPoint.angle === point.angle) {
                            return
                        }
                        if ((0, _utils.normalizeAngle)(round(lastPoint.angle)) === (0, _utils.normalizeAngle)(round(point.angle))) {
                            point.angle = lastPoint.angle
                        } else {
                            const differenceAngle = lastPoint.angle - point.angle;
                            point.angle = lastPoint.angle + this._getRemainingAngle(differenceAngle)
                        }
                        return point
                    },
                    _getTangentPoints: function(point, prevPoint, centerPoint, isLastSegment) {
                        let tangentPoints = [];
                        const betweenAngle = Math.round(prevPoint.angle - point.angle);
                        const tan = (prevPoint.radius - point.radius) / betweenAngle;
                        let i;
                        if (0 === betweenAngle) {
                            tangentPoints = [prevPoint, point]
                        } else if (betweenAngle > 0) {
                            const angle = isLastSegment ? betweenAngle : betweenAngle - 1;
                            for (i = angle; i >= 0; i--) {
                                tangentPoints.push(getTangentPoint(point, prevPoint, centerPoint, tan, i))
                            }
                        } else {
                            const angle = isLastSegment ? betweenAngle : betweenAngle + 1;
                            for (i = 0; i >= angle; i--) {
                                tangentPoints.push(getTangentPoint(point, prevPoint, centerPoint, tan, betweenAngle - i))
                            }
                        }
                        return tangentPoints
                    },
                    getSeriesPairCoord(params, isArgument) {
                        const that = this;
                        const argAxis = that.getArgumentAxis();
                        const paramName = isArgument ? "angle" : "radius";
                        const coordParam = params[paramName];
                        const centerPoint = argAxis.getCenter();
                        const isInsideInterval = (prevPoint, point, _ref) => {
                            let {
                                x: x,
                                y: y
                            } = _ref;
                            return (p1 = {
                                x: x,
                                y: y
                            }, p2 = centerPoint, sqrt(pow(p1.x - p2.x, 2) + pow(p1.y - p2.y, 2))) <= argAxis.getRadius() && min(prevPoint.x, point.x) <= x && max(prevPoint.x, point.x) >= x && min(prevPoint.y, point.y) <= y && max(prevPoint.y, point.y) >= y;
                            var p1, p2
                        };
                        let coords;
                        const neighborPoints = that.getNeighborPoints(coordParam, paramName);
                        if (1 === neighborPoints.length) {
                            coords = neighborPoints[0]
                        } else if (neighborPoints.length > 1) {
                            const prevPoint = neighborPoints[0];
                            const point = neighborPoints[1];
                            if ("discrete" !== that.argumentAxisType && "discrete" !== that.valueAxisType) {
                                let tan;
                                let stepAngle;
                                if (isArgument) {
                                    tan = (prevPoint.radius - point.radius) / (prevPoint.angle - point.angle);
                                    stepAngle = coordParam - point.angle
                                } else {
                                    tan = (prevPoint.radius - point.radius) / (prevPoint.angle - point.angle);
                                    stepAngle = (coordParam - point.radius) / tan
                                }
                                coords = getTangentPoint(point, prevPoint, centerPoint, tan, stepAngle)
                            } else if (isArgument) {
                                const cosSin = (0, _utils.getCosAndSin)(-coordParam);
                                const k1 = (point.y - prevPoint.y) / (point.x - prevPoint.x);
                                const b1 = prevPoint.y - prevPoint.x * k1;
                                const k2 = cosSin.sin / cosSin.cos;
                                const b2 = centerPoint.y - k2 * centerPoint.x;
                                const x = (b2 - b1) / (k1 - k2);
                                const y = k1 * x + b1;
                                if (isInsideInterval(prevPoint, point, {
                                        x: x,
                                        y: y
                                    })) {
                                    const quarter = abs((0, _math.trunc)((360 + coordParam) / 90) % 4);
                                    if (0 === quarter && x >= centerPoint.x && y <= centerPoint.y || 1 === quarter && x <= centerPoint.x && y <= centerPoint.y || 2 === quarter && x <= centerPoint.x && y >= centerPoint.y || 3 === quarter && x >= centerPoint.x && y >= centerPoint.y) {
                                        coords = {
                                            x: x,
                                            y: y
                                        }
                                    }
                                }
                            } else {
                                const k = (point.y - prevPoint.y) / (point.x - prevPoint.x);
                                const y0 = prevPoint.y - prevPoint.x * k;
                                const a = 1 + k * k;
                                const b = -2 * centerPoint.x + 2 * k * y0 - 2 * k * centerPoint.y;
                                const c = -pow(coordParam, 2) + pow(y0 - centerPoint.y, 2) + pow(centerPoint.x, 2);
                                const d = b * b - 4 * a * c;
                                if (d >= 0) {
                                    const x1 = (-b - sqrt(d)) / (2 * a);
                                    const x2 = (-b + sqrt(d)) / (2 * a);
                                    const y1 = k * x1 + y0;
                                    const y2 = k * x2 + y0;
                                    coords = isInsideInterval(prevPoint, point, {
                                        x: x1,
                                        y: y1
                                    }) ? {
                                        x: x1,
                                        y: y1
                                    } : isInsideInterval(prevPoint, point, {
                                        x: x2,
                                        y: y2
                                    }) ? {
                                        x: x2,
                                        y: y2
                                    } : void 0
                                }
                            }
                        }
                        return coords
                    },
                    getNeighborPoints(param, paramName) {
                        let points = this.getPoints();
                        const neighborPoints = [];
                        if (this.getOptions().closed) {
                            points = (0, _extend.extend)(true, [], points);
                            const lastPoint = points[points.length - 1];
                            const firstPointCopy = clonePoint(points[0], points[0].x, points[0].y, points[0].angle);
                            const lastPointCopy = clonePoint(lastPoint, lastPoint.x, lastPoint.y, lastPoint.angle);
                            const rearwardRefPoint = this._modifyReflectedPoint(firstPointCopy, lastPoint);
                            const forwardRefPoint = this._modifyReflectedPoint(lastPointCopy, points[0]);
                            if (forwardRefPoint) {
                                points.unshift(forwardRefPoint)
                            }
                            if (rearwardRefPoint) {
                                points.push(rearwardRefPoint)
                            }
                        }
                        for (let i = 1; i < points.length; i++) {
                            if (points[i - 1][paramName] === param) {
                                neighborPoints.push(points[i - 1])
                            } else if (points[i][paramName] === param) {
                                neighborPoints.push(points[i])
                            } else if (points[i][paramName] > param && points[i - 1][paramName] < param || points[i - 1][paramName] > param && points[i][paramName] < param) {
                                neighborPoints.push(points[i - 1]);
                                neighborPoints.push(points[i])
                            }
                            if (neighborPoints.length > 0) {
                                break
                            }
                        }
                        return neighborPoints
                    }
                })
            },
        64708:
            /*!**********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/series/pie_series.js ***!
              \**********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.pie = exports.doughnut = exports.donut = void 0;
                var _common = __webpack_require__( /*! ../../core/utils/common */ 17781);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 21274);
                var _scatter_series = __webpack_require__( /*! ./scatter_series */ 24008);
                var _utils = __webpack_require__( /*! ../core/utils */ 28779);
                var _extend2 = __webpack_require__( /*! ../../core/utils/extend */ 52576);
                var _bar_series = __webpack_require__( /*! ./bar_series */ 91449);
                const chartScatterSeries = _scatter_series.chart;
                const barSeries = _bar_series.chart.bar;
                const _extend = _extend2.extend;
                const _each = _iterator.each;
                const _noop = _common.noop;
                const _map = _utils.map;
                const _isFinite = isFinite;
                const _max = Math.max;
                const pie = exports.pie = _extend({}, barSeries, {
                    _setGroupsSettings: function() {
                        chartScatterSeries._setGroupsSettings.apply(this, arguments);
                        this._labelsGroup.attr({
                            "pointer-events": null
                        })
                    },
                    _createErrorBarGroup: _noop,
                    _drawPoint: function(options) {
                        const point = options.point;
                        const legendCallback = this._legendCallback;
                        chartScatterSeries._drawPoint.call(this, options);
                        !point.isVisible() && point.setInvisibility();
                        point.isSelected() && legendCallback()
                    },
                    _getOldPoint: function(data, oldPointsByArgument, index) {
                        const point = (this._points || [])[index];
                        if (point) {
                            oldPointsByArgument[point.argument.valueOf()] = oldPointsByArgument[point.argument.valueOf()].filter((p => p !== point))
                        }
                        return point
                    },
                    adjustLabels: function(moveLabelsFromCenter) {
                        return (this._points || []).reduce(((r, p) => {
                            if (p._label.isVisible()) {
                                p.setLabelTrackerData();
                                r = p.applyWordWrap(moveLabelsFromCenter) || r;
                                p.updateLabelCoord(moveLabelsFromCenter);
                                return r
                            }
                        }), false)
                    },
                    _applyElementsClipRect: _noop,
                    getColor: _noop,
                    areErrorBarsVisible: _noop,
                    drawLabelsWOPoints: function() {
                        if ("inside" === this._options.label.position) {
                            return false
                        }
                        this._labelsGroup.append(this._extGroups.labelsGroup);
                        (this._points || []).forEach((function(point) {
                            point.drawLabel()
                        }));
                        return true
                    },
                    getPointsCount: function() {
                        return this._data.filter((d => this._checkData(d))).length
                    },
                    setMaxPointsCount: function(count) {
                        this._pointsCount = count
                    },
                    _getCreatingPointOptions: function(data, dataIndex) {
                        return this._getPointOptions(data, dataIndex)
                    },
                    _updateOptions: function(options) {
                        this.labelSpace = 0;
                        this.innerRadius = "pie" === this.type ? 0 : options.innerRadius
                    },
                    _checkData: function(data, skippedFields) {
                        const base = barSeries._checkData.call(this, data, skippedFields, {
                            value: this.getValueFields()[0]
                        });
                        return this._options.paintNullPoints ? base : base && null !== data.value
                    },
                    _createGroups: chartScatterSeries._createGroups,
                    _setMarkerGroupSettings: function() {
                        this._markersGroup.attr({
                            class: "dxc-markers"
                        })
                    },
                    _getMainColor(data, point) {
                        const pointsByArg = this.getPointsByArg(data.argument);
                        const argumentIndex = point ? pointsByArg.indexOf(point) : pointsByArg.length;
                        return this._options.mainSeriesColor(data.argument, argumentIndex, this._pointsCount)
                    },
                    _getPointOptions: function(data) {
                        return this._parsePointOptions(this._preparePointOptions(), this._options.label, data)
                    },
                    _getRangeData: function() {
                        return this._rangeData
                    },
                    _createPointStyles: function(pointOptions, data, point) {
                        var _pointOptions$color;
                        const that = this;
                        const mainColor = (0, _utils.extractColor)(pointOptions.color, true) || that._getMainColor(data, point);
                        const colorId = null === (_pointOptions$color = pointOptions.color) || void 0 === _pointOptions$color ? void 0 : _pointOptions$color.fillId;
                        const hoverStyle = pointOptions.hoverStyle || {};
                        const selectionStyle = pointOptions.selectionStyle || {};
                        if (colorId) {
                            that._turnOffHatching(hoverStyle, selectionStyle)
                        }
                        return {
                            labelColor: mainColor,
                            normal: that._parsePointStyle(pointOptions, mainColor, mainColor),
                            hover: that._parsePointStyle(hoverStyle, colorId || mainColor, mainColor),
                            selection: that._parsePointStyle(selectionStyle, colorId || mainColor, mainColor),
                            legendStyles: {
                                normal: that._createLegendState(pointOptions, mainColor),
                                hover: that._createLegendState(hoverStyle, colorId || mainColor),
                                selection: that._createLegendState(selectionStyle, colorId || mainColor)
                            }
                        }
                    },
                    _getArrangeMinShownValue: function(points, total) {
                        const minSegmentSize = this._options.minSegmentSize;
                        let totalMinSegmentSize = 0;
                        let totalNotMinValues = 0;
                        total = total || points.length;
                        _each(points, (function(_, point) {
                            if (point.isVisible()) {
                                if (point.normalInitialValue < minSegmentSize * total / 360) {
                                    totalMinSegmentSize += minSegmentSize
                                } else {
                                    totalNotMinValues += point.normalInitialValue
                                }
                            }
                        }));
                        return totalMinSegmentSize < 360 ? minSegmentSize * totalNotMinValues / (360 - totalMinSegmentSize) : 0
                    },
                    _applyArrangeCorrection: function(points, minShownValue, total) {
                        const options = this._options;
                        const isClockWise = "anticlockwise" !== options.segmentsDirection;
                        const shiftedAngle = _isFinite(options.startAngle) ? (0, _utils.normalizeAngle)(options.startAngle) : 0;
                        const minSegmentSize = options.minSegmentSize;
                        let percent;
                        let correction = 0;
                        let zeroTotalCorrection = 0;
                        if (0 === total) {
                            total = points.filter((function(el) {
                                return el.isVisible()
                            })).length;
                            zeroTotalCorrection = 1
                        }
                        _each(isClockWise ? points : points.concat([]).reverse(), (function(_, point) {
                            const val = point.isVisible() ? zeroTotalCorrection || point.normalInitialValue : 0;
                            let updatedZeroValue;
                            if (minSegmentSize && point.isVisible() && val < minShownValue) {
                                updatedZeroValue = minShownValue
                            }
                            percent = val / total;
                            point.correctValue(correction, percent, zeroTotalCorrection + (updatedZeroValue || 0));
                            point.shiftedAngle = shiftedAngle;
                            correction += updatedZeroValue || val
                        }));
                        this._rangeData = {
                            val: {
                                min: 0,
                                max: correction
                            }
                        }
                    },
                    _removePoint: function(point) {
                        const points = this.getPointsByArg(point.argument);
                        points.splice(points.indexOf(point), 1);
                        point.dispose()
                    },
                    arrangePoints: function() {
                        const that = this;
                        const originalPoints = that._points || [];
                        const minSegmentSize = that._options.minSegmentSize;
                        let minShownValue;
                        let isAllPointsNegative = true;
                        let i = 0;
                        const len = originalPoints.length;
                        while (i < len && isAllPointsNegative) {
                            isAllPointsNegative = originalPoints[i].value <= 0;
                            i++
                        }
                        const points = that._points = _map(originalPoints, (function(point) {
                            if (null === point.value || !isAllPointsNegative && point.value < 0) {
                                that._removePoint(point);
                                return null
                            } else {
                                return point
                            }
                        }));
                        const maxValue = points.reduce((function(max, p) {
                            return _max(max, Math.abs(p.initialValue))
                        }), 0);
                        points.forEach((function(p) {
                            p.normalInitialValue = p.initialValue / (0 !== maxValue ? maxValue : 1)
                        }));
                        const total = points.reduce((function(total, point) {
                            return total + (point.isVisible() ? point.normalInitialValue : 0)
                        }), 0);
                        if (minSegmentSize) {
                            minShownValue = this._getArrangeMinShownValue(points, total)
                        }
                        that._applyArrangeCorrection(points, minShownValue, total)
                    },
                    correctPosition: function(correction, canvas) {
                        _each(this._points, (function(_, point) {
                            point.correctPosition(correction)
                        }));
                        this.setVisibleArea(canvas)
                    },
                    correctRadius: function(correction) {
                        this._points.forEach((function(point) {
                            point.correctRadius(correction)
                        }))
                    },
                    correctLabelRadius: function(labelRadius) {
                        this._points.forEach((function(point) {
                            point.correctLabelRadius(labelRadius)
                        }))
                    },
                    setVisibleArea: function(canvas) {
                        this._visibleArea = {
                            minX: canvas.left,
                            maxX: canvas.width - canvas.right,
                            minY: canvas.top,
                            maxY: canvas.height - canvas.bottom
                        }
                    },
                    _applyVisibleArea: _noop,
                    _animate: function(firstDrawing) {
                        const that = this;
                        const points = that._points;
                        const pointsCount = points && points.length;
                        const completeFunc = function() {
                            that._animateComplete()
                        };
                        let animatePoint;
                        if (firstDrawing) {
                            animatePoint = function(p, i) {
                                p.animate(i === pointsCount - 1 ? completeFunc : void 0, .7, (1 - .7) * i / (pointsCount - 1))
                            }
                        } else {
                            animatePoint = function(p, i) {
                                p.animate(i === pointsCount - 1 ? completeFunc : void 0)
                            }
                        }
                        points.forEach(animatePoint)
                    },
                    getVisiblePoints: function() {
                        return _map(this._points, (function(p) {
                            return p.isVisible() ? p : null
                        }))
                    },
                    getPointsByKeys: function(arg, argumentIndex) {
                        const pointsByArg = this.getPointsByArg(arg);
                        return pointsByArg[argumentIndex] && [pointsByArg[argumentIndex]] || []
                    }
                });
                exports.doughnut = pie;
                exports.donut = pie
            },
        39678:
            /*!****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/series/points/bar_point.js ***!
              \****************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _extend2 = __webpack_require__( /*! ../../../core/utils/extend */ 52576);
                var _symbol_point = (e = __webpack_require__( /*! ./symbol_point */ 27589), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                const _extend = _extend2.extend;
                const _math = Math;
                const _floor = _math.floor;
                const _abs = _math.abs;

                function getLabelOrientation(point) {
                    const initialValue = point.initialValue;
                    const invert = point._getValTranslator().getBusinessRange().invert;
                    const isDiscreteValue = "discrete" === point.series.valueAxisType;
                    const isFullStacked = point.series.isFullStackedSeries();
                    const notAxisInverted = !isDiscreteValue && (initialValue >= 0 && !invert || initialValue < 0 && invert) || isDiscreteValue && !invert || isFullStacked;
                    return notAxisInverted ? "top" : "bottom"
                }
                exports.default = _extend({}, _symbol_point.default, {
                    correctCoordinates(correctOptions) {
                        const that = this;
                        const correction = _floor(correctOptions.offset - correctOptions.width / 2);
                        if (that._options.rotated) {
                            that.height = correctOptions.width;
                            that.yCorrection = correction;
                            that.xCorrection = null
                        } else {
                            that.width = correctOptions.width;
                            that.xCorrection = correction;
                            that.yCorrection = null
                        }
                    },
                    _calculateVisibility: function(x, y, width, height) {
                        const {
                            minX: minX,
                            maxX: maxX,
                            minY: minY,
                            maxY: maxY
                        } = this._getVisibleArea();
                        this.inVisibleArea = minX <= x + width && maxX >= x && minY <= y + height && maxY >= y
                    },
                    _cacheVisibility: function(x, y, minY, rotated) {
                        const size = Math.abs(y - minY);
                        y = Math.min(y, minY);
                        if (rotated) {
                            this._calculateVisibility(y, x, size, this.height)
                        } else {
                            this._calculateVisibility(x, y, this.width, size)
                        }
                    },
                    _getGraphicBBox: function(location) {
                        const bBox = {
                            x: this.x,
                            y: this.y,
                            width: this.width,
                            height: this.height
                        };
                        if (location) {
                            const isTop = "top" === location;
                            if (!this._options.rotated) {
                                bBox.y = isTop ? bBox.y : bBox.y + bBox.height;
                                bBox.height = 0
                            } else {
                                bBox.x = isTop ? bBox.x + bBox.width : bBox.x;
                                bBox.width = 0
                            }
                        }
                        return bBox
                    },
                    _getLabelConnector: function(location) {
                        return this._getGraphicBBox(location)
                    },
                    _getLabelPosition: function() {
                        let position = getLabelOrientation(this);
                        if (this._options.rotated) {
                            position = "top" === position ? "right" : "left"
                        }
                        return position
                    },
                    _getLabelCoords: function(label) {
                        const that = this;
                        let coords;
                        if (0 === that.initialValue && that.series.isFullStackedSeries()) {
                            if (!this._options.rotated) {
                                coords = that._getLabelCoordOfPosition(label, "top")
                            } else {
                                coords = that._getLabelCoordOfPosition(label, "right")
                            }
                        } else if ("inside" === label.getLayoutOptions().position) {
                            coords = that._getLabelCoordOfPosition(label, "inside")
                        } else {
                            coords = _symbol_point.default._getLabelCoords.call(this, label)
                        }
                        return coords
                    },
                    _drawLabel: function() {
                        this._label.pointPosition = "inside" !== this._label.getLayoutOptions().position && getLabelOrientation(this);
                        _symbol_point.default._drawLabel.call(this)
                    },
                    hideInsideLabel: function(label, coord) {
                        const graphicBBox = this._getGraphicBBox();
                        const labelBBox = label.getBoundingRect();
                        if (this._options.resolveLabelsOverlapping) {
                            if ((coord.y <= graphicBBox.y && coord.y + labelBBox.height >= graphicBBox.y + graphicBBox.height || coord.x <= graphicBBox.x && coord.x + labelBBox.width >= graphicBBox.x + graphicBBox.width) && !(coord.y > graphicBBox.y + graphicBBox.height || coord.y + labelBBox.height < graphicBBox.y || coord.x > graphicBBox.x + graphicBBox.width || coord.x + labelBBox.width < graphicBBox.x)) {
                                label.draw(false);
                                return true
                            }
                        }
                        return false
                    },
                    _showForZeroValues: function() {
                        return this._options.label.showForZeroValues || this.initialValue
                    },
                    _drawMarker(renderer, group, animationEnabled) {
                        const that = this;
                        const style = that._getStyle();
                        const r = that._options.cornerRadius;
                        const rotated = that._options.rotated;
                        let {
                            x: x,
                            y: y,
                            width: width,
                            height: height
                        } = that.getMarkerCoords();
                        if (animationEnabled) {
                            if (rotated) {
                                width = 0;
                                x = that.defaultX
                            } else {
                                height = 0;
                                y = that.defaultY
                            }
                        }
                        that.graphic = renderer.rect(x, y, width, height).attr({
                            rx: r,
                            ry: r
                        }).smartAttr(style).data({
                            "chart-data-point": that
                        }).append(group)
                    },
                    _getSettingsForTracker: function() {
                        let y = this.y;
                        let height = this.height;
                        let x = this.x;
                        let width = this.width;
                        if (this._options.rotated) {
                            if (1 === width) {
                                width = 9;
                                x -= 4
                            }
                        } else if (1 === height) {
                            height = 9;
                            y -= 4
                        }
                        return {
                            x: x,
                            y: y,
                            width: width,
                            height: height
                        }
                    },
                    getGraphicSettings: function() {
                        const graphic = this.graphic;
                        return {
                            x: graphic.attr("x"),
                            y: graphic.attr("y"),
                            height: graphic.attr("height"),
                            width: graphic.attr("width")
                        }
                    },
                    _getEdgeTooltipParams() {
                        const isPositive = this.value >= 0;
                        let xCoord;
                        let yCoord;
                        const invertedBusinessRange = this._getValTranslator().getBusinessRange().invert;
                        const {
                            x: x,
                            y: y,
                            width: width,
                            height: height
                        } = this;
                        if (this._options.rotated) {
                            yCoord = y + height / 2;
                            if (invertedBusinessRange) {
                                xCoord = isPositive ? x : x + width
                            } else {
                                xCoord = isPositive ? x + width : x
                            }
                        } else {
                            xCoord = x + width / 2;
                            if (invertedBusinessRange) {
                                yCoord = isPositive ? y + height : y
                            } else {
                                yCoord = isPositive ? y : y + height
                            }
                        }
                        return {
                            x: xCoord,
                            y: yCoord,
                            offset: 0
                        }
                    },
                    getTooltipParams: function(location) {
                        if ("edge" === location) {
                            return this._getEdgeTooltipParams()
                        }
                        const center = this.getCenterCoord();
                        center.offset = 0;
                        return center
                    },
                    getCenterCoord() {
                        const {
                            width: width,
                            height: height,
                            x: x,
                            y: y
                        } = this;
                        return {
                            x: x + width / 2,
                            y: y + height / 2
                        }
                    },
                    _truncateCoord: function(coord, bounds) {
                        if (null === coord) {
                            return coord
                        }
                        if (coord < bounds[0]) {
                            return bounds[0]
                        }
                        if (coord > bounds[1]) {
                            return bounds[1]
                        }
                        return coord
                    },
                    _getErrorBarBaseEdgeLength() {
                        return this._options.rotated ? this.height : this.width
                    },
                    _translateErrorBars: function(argVisibleArea) {
                        _symbol_point.default._translateErrorBars.call(this);
                        if (this._errorBarPos < argVisibleArea[0] || this._errorBarPos > argVisibleArea[1]) {
                            this._errorBarPos = void 0
                        }
                    },
                    _translate: function() {
                        const that = this;
                        const rotated = that._options.rotated;
                        const valAxis = rotated ? "x" : "y";
                        const argAxis = rotated ? "y" : "x";
                        const valIntervalName = rotated ? "width" : "height";
                        const argIntervalName = rotated ? "height" : "width";
                        const argTranslator = that._getArgTranslator();
                        const valTranslator = that._getValTranslator();
                        const argVisibleArea = that.series.getArgumentAxis().getVisibleArea();
                        const valVisibleArea = that.series.getValueAxis().getVisibleArea();
                        let arg = argTranslator.translate(that.argument);
                        let val = valTranslator.translate(that.value, 1);
                        let minVal = valTranslator.translate(that.minValue, -1);
                        that[argAxis] = arg = null === arg ? arg : arg + (that[argAxis + "Correction"] || 0);
                        that["v" + valAxis] = val;
                        that["v" + argAxis] = arg + that[argIntervalName] / 2;
                        this._cacheVisibility(arg, val, minVal, rotated);
                        val = that._truncateCoord(val, valVisibleArea);
                        minVal = that._truncateCoord(minVal, valVisibleArea);
                        that[valIntervalName] = _abs(val - minVal);
                        val = val < minVal ? val : minVal;
                        that[valAxis] = null === val ? val : val + (that[valAxis + "Correction"] || 0);
                        that["min" + valAxis.toUpperCase()] = null === minVal ? minVal : minVal + (that[valAxis + "Correction"] || 0);
                        that["default" + valAxis.toUpperCase()] = valTranslator.translate("canvas_position_default");
                        that._translateErrorBars(argVisibleArea);
                        if (that.inVisibleArea && null !== that[argAxis]) {
                            if (that[argAxis] < argVisibleArea[0]) {
                                that[argIntervalName] = that[argIntervalName] - (argVisibleArea[0] - that[argAxis]);
                                that[argAxis] = argVisibleArea[0]
                            }
                            if (that[argAxis] + that[argIntervalName] > argVisibleArea[1]) {
                                that[argIntervalName] = argVisibleArea[1] - that[argAxis]
                            }
                        }
                    },
                    _updateMarker: function(animationEnabled, style) {
                        this.graphic.smartAttr(_extend({}, style, !animationEnabled ? this.getMarkerCoords() : {}))
                    },
                    getMarkerCoords: function() {
                        const that = this;
                        let x = that.x;
                        const y = that.y;
                        let width = that.width;
                        let height = that.height;
                        const argAxis = that.series.getArgumentAxis();
                        const rotated = that._options.rotated;
                        if (argAxis.getAxisPosition) {
                            const axisOptions = argAxis.getOptions();
                            const edgeOffset = Math.round(axisOptions.width / 2);
                            const argAxisPosition = argAxis.getAxisPosition();
                            if (axisOptions.visible) {
                                if (!rotated) {
                                    height -= that.minY === that.defaultY && that.minY === argAxisPosition - argAxis.getAxisShift() ? edgeOffset : 0;
                                    height < 0 && (height = 0)
                                } else {
                                    const isStartFromAxis = that.minX === that.defaultX && that.minX === argAxisPosition - argAxis.getAxisShift();
                                    x += isStartFromAxis ? edgeOffset : 0;
                                    width -= isStartFromAxis ? edgeOffset : 0;
                                    width < 0 && (width = 0)
                                }
                            }
                        }
                        return {
                            x: x,
                            y: y,
                            width: width,
                            height: height
                        }
                    },
                    coordsIn: function(x, y) {
                        return x >= this.x && x <= this.x + this.width && y >= this.y && y <= this.y + this.height
                    }
                });
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        31656:
            /*!*****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/series/points/base_point.js ***!
              \*****************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.Point = Point;
                var _consts = _interopRequireDefault(__webpack_require__( /*! ../../components/consts */ 7377));
                var _symbol_point = _interopRequireDefault(__webpack_require__( /*! ./symbol_point */ 27589));
                var _bar_point = _interopRequireDefault(__webpack_require__( /*! ./bar_point */ 39678));
                var _bubble_point = _interopRequireDefault(__webpack_require__( /*! ./bubble_point */ 49787));
                var _pie_point = _interopRequireDefault(__webpack_require__( /*! ./pie_point */ 78641));
                var _range_symbol_point = _interopRequireDefault(__webpack_require__( /*! ./range_symbol_point */ 66779));
                var _range_bar_point = _interopRequireDefault(__webpack_require__( /*! ./range_bar_point */ 81660));
                var _candlestick_point = _interopRequireDefault(__webpack_require__( /*! ./candlestick_point */ 95208));
                var _stock_point = _interopRequireDefault(__webpack_require__( /*! ./stock_point */ 14185));
                var _polar_point = __webpack_require__( /*! ./polar_point */ 9619);
                var _utils = __webpack_require__( /*! ../../core/utils */ 28779);
                var _extend2 = __webpack_require__( /*! ../../../core/utils/extend */ 52576);
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528);
                var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781);

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const mixins = {};
                const _extend = _extend2.extend;
                const statesConsts = _consts.default.states;
                const SELECTED_STATE = statesConsts.selectedMark;
                const HOVER_STATE = statesConsts.hoverMark;
                const NORMAL_STATE = statesConsts.normalMark;
                const HOVER = statesConsts.hover;
                const NORMAL = statesConsts.normal;
                const SELECTION = statesConsts.selection;
                const pointTypes = {
                    chart: {
                        scatter: "symbolPoint",
                        line: "symbolPoint",
                        spline: "symbolPoint",
                        stepline: "symbolPoint",
                        stackedline: "symbolPoint",
                        fullstackedline: "symbolPoint",
                        stackedspline: "symbolPoint",
                        fullstackedspline: "symbolPoint",
                        stackedsplinearea: "symbolPoint",
                        fullstackedsplinearea: "symbolPoint",
                        area: "symbolPoint",
                        splinearea: "symbolPoint",
                        steparea: "symbolPoint",
                        stackedarea: "symbolPoint",
                        fullstackedarea: "symbolPoint",
                        rangearea: "rangeSymbolPoint",
                        bar: "barPoint",
                        stackedbar: "barPoint",
                        fullstackedbar: "barPoint",
                        rangebar: "rangeBarPoint",
                        bubble: "bubblePoint",
                        stock: "stockPoint",
                        candlestick: "candlestickPoint"
                    },
                    pie: {
                        pie: "piePoint",
                        doughnut: "piePoint",
                        donut: "piePoint"
                    },
                    polar: {
                        scatter: "polarSymbolPoint",
                        line: "polarSymbolPoint",
                        area: "polarSymbolPoint",
                        bar: "polarBarPoint",
                        stackedbar: "polarBarPoint"
                    }
                };

                function isNoneMode(mode) {
                    return "none" === (0, _utils.normalizeEnum)(mode)
                }

                function Point(series, dataItem, options) {
                    this.fullState = NORMAL_STATE;
                    this.series = series;
                    this.update(dataItem, options);
                    this._viewCounters = {
                        hover: 0,
                        selection: 0
                    };
                    this._emptySettings = {
                        fill: null,
                        stroke: null,
                        dashStyle: null,
                        filter: null
                    }
                }
                mixins.symbolPoint = _symbol_point.default;
                mixins.barPoint = _bar_point.default;
                mixins.bubblePoint = _bubble_point.default;
                mixins.piePoint = _pie_point.default;
                mixins.rangeSymbolPoint = _range_symbol_point.default;
                mixins.rangeBarPoint = _range_bar_point.default;
                mixins.candlestickPoint = _candlestick_point.default;
                mixins.stockPoint = _stock_point.default;
                mixins.polarSymbolPoint = _polar_point.polarSymbolPoint;
                mixins.polarBarPoint = _polar_point.polarBarPoint;
                Point.prototype = {
                    constructor: Point,
                    getColor: function() {
                        if (!this.hasValue() && !this._styles.usePointCustomOptions) {
                            this.series.customizePoint(this, this._dataItem)
                        }
                        return this._styles.normal.fill || this.series.getColor()
                    },
                    _getStyle: function() {
                        return this._styles[this._currentStyle || "normal"]
                    },
                    update: function(dataItem, options) {
                        this.updateOptions(options);
                        this.updateData(dataItem)
                    },
                    updateData: function(dataItem) {
                        const argumentWasChanged = this.argument !== dataItem.argument;
                        this.argument = this.initialArgument = this.originalArgument = dataItem.argument;
                        this.tag = dataItem.tag;
                        this.index = dataItem.index;
                        this._dataItem = dataItem;
                        this.data = dataItem.data;
                        this.lowError = dataItem.lowError;
                        this.highError = dataItem.highError;
                        this.aggregationInfo = dataItem.aggregationInfo;
                        this._updateData(dataItem, argumentWasChanged);
                        !this.hasValue() && this.setInvisibility();
                        this._fillStyle();
                        this._updateLabelData()
                    },
                    deleteMarker: function() {
                        const that = this;
                        if (that.graphic) {
                            that.graphic.dispose()
                        }
                        that.graphic = null
                    },
                    draw: function(renderer, groups, animationEnabled, firstDrawing) {
                        const that = this;
                        if (that._needDeletingOnDraw || that.series.autoHidePointMarkers && !that.isSelected()) {
                            that.deleteMarker();
                            that._needDeletingOnDraw = false
                        }
                        if (that._needClearingOnDraw) {
                            that.clearMarker();
                            that._needClearingOnDraw = false
                        }
                        if (!that._hasGraphic()) {
                            that.getMarkerVisibility() && !that.series.autoHidePointMarkers && that._drawMarker(renderer, groups.markers, animationEnabled, firstDrawing)
                        } else {
                            that._updateMarker(animationEnabled, this._getStyle(), groups.markers)
                        }
                        that._drawLabel();
                        that._drawErrorBar(renderer, groups.errorBars, animationEnabled);
                        return that
                    },
                    _getViewStyle: function() {
                        let state = NORMAL_STATE;
                        let fullState = this.fullState;
                        const styles = [NORMAL, HOVER, SELECTION, SELECTION];
                        if (this._viewCounters.hover) {
                            state |= HOVER_STATE
                        }
                        if (this._viewCounters.selection) {
                            state |= SELECTED_STATE
                        }
                        if (isNoneMode(this.getOptions().selectionMode)) {
                            fullState &= ~SELECTED_STATE
                        }
                        if (isNoneMode(this.getOptions().hoverMode)) {
                            fullState &= ~HOVER_STATE
                        }
                        state |= fullState;
                        return styles[state]
                    },
                    applyView: function(legendCallback) {
                        const that = this;
                        const style = that._getViewStyle();
                        that._currentStyle = style;
                        if (!that.graphic && that.getMarkerVisibility() && that.series.autoHidePointMarkers && (style === SELECTION || style === HOVER)) {
                            that._drawMarker(that.series.getRenderer(), that.series.getMarkersGroup())
                        }
                        if (that.graphic) {
                            if (that.series.autoHidePointMarkers && style !== SELECTION && style !== HOVER) {
                                that.deleteMarker()
                            } else {
                                if ("normal" === style) {
                                    that.clearMarker()
                                } else {
                                    that.graphic.toForeground()
                                }
                                that._updateMarker(true, that._styles[style], void 0, legendCallback)
                            }
                        }
                    },
                    setView: function(style) {
                        this._viewCounters[style]++;
                        this.applyView()
                    },
                    resetView: function(style) {
                        const viewCounters = this._viewCounters;
                        --viewCounters[style];
                        if (viewCounters[style] < 0) {
                            viewCounters[style] = 0
                        }
                        this.applyView()
                    },
                    releaseHoverState: function() {
                        const that = this;
                        if (that.graphic && !that.isSelected()) {
                            that.graphic.toBackground()
                        }
                    },
                    select: function() {
                        this.series.selectPoint(this)
                    },
                    clearSelection: function() {
                        this.series.deselectPoint(this)
                    },
                    hover: function() {
                        this.series.hoverPoint(this)
                    },
                    clearHover: function() {
                        this.series.clearPointHover()
                    },
                    showTooltip: function() {
                        this.series.showPointTooltip(this)
                    },
                    hideTooltip: function() {
                        this.series.hidePointTooltip(this)
                    },
                    _checkLabelsChanging: function(oldType, newType) {
                        const isNewRange = ~newType.indexOf("range");
                        const isOldRange = ~oldType.indexOf("range");
                        return isOldRange && !isNewRange || !isOldRange && isNewRange
                    },
                    updateOptions: function(newOptions) {
                        if (!newOptions) {
                            return
                        }
                        const that = this;
                        const oldOptions = that._options;
                        const widgetType = newOptions.widgetType;
                        const oldType = oldOptions && oldOptions.type;
                        const newType = newOptions.type;
                        const newPointTypeMixin = pointTypes[widgetType][newType];
                        if (oldType !== newType) {
                            that._needDeletingOnDraw = true;
                            that._needClearingOnDraw = false;
                            if (oldType) {
                                that._checkLabelsChanging(oldType, newType) && that.deleteLabel();
                                that._resetType(mixins[pointTypes[oldType]])
                            }
                            that._setType(mixins[newPointTypeMixin])
                        } else {
                            that._needDeletingOnDraw = that._needDeletingOnDraw || that._checkSymbol(oldOptions, newOptions);
                            that._needClearingOnDraw = that._checkCustomize(oldOptions, newOptions)
                        }
                        that._options = newOptions;
                        that._fillStyle();
                        that._updateLabelOptions(newPointTypeMixin)
                    },
                    translate: function() {
                        if (this.hasValue()) {
                            this._translate();
                            this.translated = true
                        }
                    },
                    _checkCustomize: function(oldOptions, newOptions) {
                        return oldOptions.styles.usePointCustomOptions && !newOptions.styles.usePointCustomOptions
                    },
                    _getCustomLabelVisibility: function() {
                        return this._styles.useLabelCustomOptions ? !!this._options.label.visible : null
                    },
                    getBoundingRect: function() {
                        return this._getGraphicBBox()
                    },
                    _resetType: function(methods) {
                        for (const methodName in methods) {
                            delete this[methodName]
                        }
                    },
                    _setType: function(methods) {
                        for (const methodName in methods) {
                            this[methodName] = methods[methodName]
                        }
                    },
                    isInVisibleArea: function() {
                        return this.inVisibleArea
                    },
                    isSelected: function() {
                        return !!(this.fullState & SELECTED_STATE)
                    },
                    isHovered: function() {
                        return !!(this.fullState & HOVER_STATE)
                    },
                    getOptions: function() {
                        return this._options
                    },
                    animate: function(complete, settings, partitionDuration) {
                        if (!this.graphic) {
                            complete && complete();
                            return
                        }
                        this.graphic.animate(settings, {
                            partitionDuration: partitionDuration
                        }, complete)
                    },
                    getCoords: function(min) {
                        const that = this;
                        if (!min) {
                            return {
                                x: that.x,
                                y: that.y
                            }
                        }
                        if (!that._options.rotated) {
                            return {
                                x: that.x,
                                y: that.minY + (that.y - that.minY ? 0 : 1)
                            }
                        }
                        return {
                            x: that.minX - (that.x - that.minX ? 0 : 1),
                            y: that.y
                        }
                    },
                    getDefaultCoords: function() {
                        return !this._options.rotated ? {
                            x: this.x,
                            y: this.defaultY
                        } : {
                            x: this.defaultX,
                            y: this.y
                        }
                    },
                    setDefaultCoords() {
                        const coords = this.getDefaultCoords();
                        this.x = coords.x;
                        this.y = coords.y
                    },
                    _getVisibleArea: function() {
                        return this.series.getVisibleArea()
                    },
                    _getArgTranslator: function() {
                        return this.series.getArgumentAxis().getTranslator()
                    },
                    _getValTranslator: function() {
                        return this.series.getValueAxis().getTranslator()
                    },
                    isArgumentCorrect() {
                        return this.series._argumentChecker(this.argument)
                    },
                    isValueCorrect() {
                        const valueChecker = this.series._valueChecker;
                        return valueChecker(this.getMinValue()) && valueChecker(this.getMaxValue())
                    },
                    hasValue: function() {
                        return null !== this.value && null !== this.minValue && this.isArgumentCorrect() && this.isValueCorrect()
                    },
                    hasCoords: _common.noop,
                    correctPosition: _common.noop,
                    correctRadius: _common.noop,
                    correctLabelRadius: _common.noop,
                    getCrosshairData: _common.noop,
                    getPointRadius: _common.noop,
                    _populatePointShape: _common.noop,
                    _checkSymbol: _common.noop,
                    getMarkerCoords: _common.noop,
                    hide: _common.noop,
                    show: _common.noop,
                    hideMarker: _common.noop,
                    setInvisibility: _common.noop,
                    clearVisibility: _common.noop,
                    isVisible: _common.noop,
                    resetCorrection: _common.noop,
                    correctValue: _common.noop,
                    resetValue: _common.noop,
                    setPercentValue: _common.noop,
                    correctCoordinates: _common.noop,
                    coordsIn: _common.noop,
                    getTooltipParams: _common.noop,
                    applyWordWrap: _common.noop,
                    setLabelTrackerData: _common.noop,
                    updateLabelCoord: _common.noop,
                    drawLabel: _common.noop,
                    correctLabelPosition: _common.noop,
                    getMinValue: _common.noop,
                    getMaxValue: _common.noop,
                    _drawErrorBar: _common.noop,
                    getMarkerVisibility: _common.noop,
                    dispose: function() {
                        this.deleteMarker();
                        this.deleteLabel();
                        this._errorBar && this._errorBar.dispose();
                        this._options = this._styles = this.series = this._errorBar = null
                    },
                    getTooltipFormatObject: function(tooltip, stackPoints) {
                        const that = this;
                        const tooltipFormatObject = that._getFormatObject(tooltip);
                        const sharedTooltipValuesArray = [];
                        const tooltipStackPointsFormatObject = [];
                        if (stackPoints) {
                            stackPoints.forEach((point => {
                                if (!point.isVisible()) {
                                    return
                                }
                                const formatObject = point._getFormatObject(tooltip);
                                tooltipStackPointsFormatObject.push(formatObject);
                                sharedTooltipValuesArray.push(formatObject.seriesName + ": " + formatObject.valueText)
                            }));
                            _extend(tooltipFormatObject, {
                                points: tooltipStackPointsFormatObject,
                                valueText: sharedTooltipValuesArray.join("\n"),
                                stackName: that.series.getStackName() || null
                            })
                        }
                        const aggregationInfo = that.aggregationInfo;
                        if (aggregationInfo) {
                            const axis = that.series.getArgumentAxis();
                            const rangeText = axis.formatRange(aggregationInfo.intervalStart, aggregationInfo.intervalEnd, aggregationInfo.aggregationInterval, tooltip.getOptions().argumentFormat);
                            if (rangeText) {
                                tooltipFormatObject.valueText += `\n${rangeText}`
                            }
                        }
                        return tooltipFormatObject
                    },
                    setHole: function(holeValue, position) {
                        const that = this;
                        const minValue = isFinite(that.minValue) ? that.minValue : 0;
                        if ((0, _type.isDefined)(holeValue)) {
                            if ("left" === position) {
                                that.leftHole = that.value - holeValue;
                                that.minLeftHole = minValue - holeValue
                            } else {
                                that.rightHole = that.value - holeValue;
                                that.minRightHole = minValue - holeValue
                            }
                        }
                    },
                    resetHoles: function() {
                        this.leftHole = null;
                        this.minLeftHole = null;
                        this.rightHole = null;
                        this.minRightHole = null
                    },
                    getLabel: function() {
                        return this._label
                    },
                    getLabels: function() {
                        return [this._label]
                    },
                    getCenterCoord() {
                        return {
                            x: this.x,
                            y: this.y
                        }
                    }
                }
            },
        49787:
            /*!*******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/series/points/bubble_point.js ***!
              \*******************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _extend2 = __webpack_require__( /*! ../../../core/utils/extend */ 52576);
                var _symbol_point = (e = __webpack_require__( /*! ./symbol_point */ 27589), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                const _extend = _extend2.extend;
                exports.default = _extend({}, _symbol_point.default, {
                    correctCoordinates: function(diameter) {
                        this.bubbleSize = diameter / 2
                    },
                    _drawMarker: function(renderer, group, animationEnabled) {
                        const attr = _extend({
                            translateX: this.x,
                            translateY: this.y
                        }, this._getStyle());
                        this.graphic = renderer.circle(0, 0, animationEnabled ? 0 : this.bubbleSize).smartAttr(attr).data({
                            "chart-data-point": this
                        }).append(group)
                    },
                    getTooltipParams: function(location) {
                        const graphic = this.graphic;
                        if (!graphic) {
                            return
                        }
                        const height = graphic.getBBox().height;
                        return {
                            x: this.x,
                            y: this.y,
                            offset: height < 20 || "edge" === location ? height / 2 : 0
                        }
                    },
                    _getLabelFormatObject: function() {
                        const formatObject = _symbol_point.default._getLabelFormatObject.call(this);
                        formatObject.size = this.initialSize;
                        return formatObject
                    },
                    _updateData: function(data) {
                        _symbol_point.default._updateData.call(this, data);
                        this.size = this.initialSize = data.size
                    },
                    _getGraphicBBox: function() {
                        return this._getSymbolBBox(this.x, this.y, this.bubbleSize)
                    },
                    _updateMarker: function(animationEnabled, style) {
                        const that = this;
                        if (!animationEnabled) {
                            style = _extend({
                                r: that.bubbleSize,
                                translateX: that.x,
                                translateY: that.y
                            }, style)
                        }
                        that.graphic.smartAttr(style)
                    },
                    _getFormatObject: function(tooltip) {
                        const formatObject = _symbol_point.default._getFormatObject.call(this, tooltip);
                        formatObject.sizeText = tooltip.formatValue(this.initialSize);
                        return formatObject
                    },
                    _storeTrackerR: function() {
                        return this.bubbleSize
                    },
                    _getLabelCoords: function(label) {
                        let coords;
                        if ("inside" === label.getLayoutOptions().position) {
                            coords = this._getLabelCoordOfPosition(label, "inside")
                        } else {
                            coords = _symbol_point.default._getLabelCoords.call(this, label)
                        }
                        return coords
                    }
                });
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        95208:
            /*!************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/series/points/candlestick_point.js ***!
              \************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _extend2 = __webpack_require__( /*! ../../../core/utils/extend */ 52576);
                var _symbol_point = _interopRequireDefault(__webpack_require__( /*! ./symbol_point */ 27589));
                var _bar_point = _interopRequireDefault(__webpack_require__( /*! ./bar_point */ 39678));

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const _math = Math;
                const _abs = _math.abs;
                const _min = _math.min;
                const _max = _math.max;
                const _round = _math.round;
                exports.default = (0, _extend2.extend)({}, _bar_point.default, {
                    _calculateVisibility: _symbol_point.default._calculateVisibility,
                    _getContinuousPoints: function(openCoord, closeCoord) {
                        const that = this;
                        const x = that.x;
                        const createPoint = that._options.rotated ? function(x, y) {
                            return [y, x]
                        } : function(x, y) {
                            return [x, y]
                        };
                        const width = that.width;
                        const highCoord = that.highY;
                        const max = _abs(highCoord - openCoord) < _abs(highCoord - closeCoord) ? openCoord : closeCoord;
                        const min = max === closeCoord ? openCoord : closeCoord;
                        let points;
                        if (min === max) {
                            points = [].concat(createPoint(x, that.highY)).concat(createPoint(x, that.lowY)).concat(createPoint(x, that.closeY)).concat(createPoint(x - width / 2, that.closeY)).concat(createPoint(x + width / 2, that.closeY)).concat(createPoint(x, that.closeY))
                        } else {
                            points = [].concat(createPoint(x, that.highY)).concat(createPoint(x, max)).concat(createPoint(x + width / 2, max)).concat(createPoint(x + width / 2, min)).concat(createPoint(x, min)).concat(createPoint(x, that.lowY)).concat(createPoint(x, min)).concat(createPoint(x - width / 2, min)).concat(createPoint(x - width / 2, max)).concat(createPoint(x, max))
                        }
                        return points
                    },
                    _getCrockPoints: function(y) {
                        const x = this.x;
                        const createPoint = this._options.rotated ? function(x, y) {
                            return [y, x]
                        } : function(x, y) {
                            return [x, y]
                        };
                        return [].concat(createPoint(x, this.highY)).concat(createPoint(x, this.lowY)).concat(createPoint(x, y)).concat(createPoint(x - this.width / 2, y)).concat(createPoint(x + this.width / 2, y)).concat(createPoint(x, y))
                    },
                    _getPoints: function() {
                        const that = this;
                        let points;
                        const closeCoord = that.closeY;
                        const openCoord = that.openY;
                        if (null !== closeCoord && null !== openCoord) {
                            points = that._getContinuousPoints(openCoord, closeCoord)
                        } else if (openCoord === closeCoord) {
                            points = [that.x, that.highY, that.x, that.lowY]
                        } else {
                            points = that._getCrockPoints(null !== openCoord ? openCoord : closeCoord)
                        }
                        return points
                    },
                    getColor: function() {
                        return this._isReduction ? this._options.reduction.color : this._styles.normal.stroke || this.series.getColor()
                    },
                    _drawMarkerInGroup: function(group, attributes, renderer) {
                        this.graphic = renderer.path(this._getPoints(), "area").attr({
                            "stroke-linecap": "square"
                        }).attr(attributes).data({
                            "chart-data-point": this
                        }).sharp().append(group)
                    },
                    _fillStyle: function() {
                        const that = this;
                        const styles = that._options.styles;
                        if (that._isReduction && that._isPositive) {
                            that._styles = styles.reductionPositive
                        } else if (that._isReduction) {
                            that._styles = styles.reduction
                        } else if (that._isPositive) {
                            that._styles = styles.positive
                        } else {
                            that._styles = styles
                        }
                    },
                    _getMinTrackerWidth: function() {
                        return 2 + 2 * this._styles.normal["stroke-width"]
                    },
                    correctCoordinates: function(correctOptions) {
                        const minWidth = this._getMinTrackerWidth();
                        let width = correctOptions.width;
                        width = width < minWidth ? minWidth : width > 10 ? 10 : width;
                        this.width = width + width % 2;
                        this.xCorrection = correctOptions.offset
                    },
                    _getMarkerGroup: function(group) {
                        let markerGroup;
                        if (this._isReduction && this._isPositive) {
                            markerGroup = group.reductionPositiveMarkersGroup
                        } else if (this._isReduction) {
                            markerGroup = group.reductionMarkersGroup
                        } else if (this._isPositive) {
                            markerGroup = group.defaultPositiveMarkersGroup
                        } else {
                            markerGroup = group.defaultMarkersGroup
                        }
                        return markerGroup
                    },
                    _drawMarker: function(renderer, group) {
                        this._drawMarkerInGroup(this._getMarkerGroup(group), this._getStyle(), renderer)
                    },
                    _getSettingsForTracker: function() {
                        const that = this;
                        let highY = that.highY;
                        let lowY = that.lowY;
                        const rotated = that._options.rotated;
                        let x;
                        let y;
                        let width;
                        let height;
                        if (highY === lowY) {
                            highY = rotated ? highY + 2 : highY - 2;
                            lowY = rotated ? lowY - 2 : lowY + 2
                        }
                        if (rotated) {
                            x = _min(lowY, highY);
                            y = that.x - that.width / 2;
                            width = _abs(lowY - highY);
                            height = that.width
                        } else {
                            x = that.x - that.width / 2;
                            y = _min(lowY, highY);
                            width = that.width;
                            height = _abs(lowY - highY)
                        }
                        return {
                            x: x,
                            y: y,
                            width: width,
                            height: height
                        }
                    },
                    _getGraphicBBox: function(location) {
                        const that = this;
                        const rotated = that._options.rotated;
                        const x = that.x;
                        const width = that.width;
                        let lowY = that.lowY;
                        let highY = that.highY;
                        if (location) {
                            const valVisibleArea = that.series.getValueAxis().getVisibleArea();
                            highY = that._truncateCoord(highY, valVisibleArea);
                            lowY = that._truncateCoord(lowY, valVisibleArea)
                        }
                        const bBox = {
                            x: !rotated ? x - _round(width / 2) : lowY,
                            y: !rotated ? highY : x - _round(width / 2),
                            width: !rotated ? width : highY - lowY,
                            height: !rotated ? lowY - highY : width
                        };
                        if (location) {
                            const isTop = "top" === location;
                            if (!this._options.rotated) {
                                bBox.y = isTop ? bBox.y : bBox.y + bBox.height;
                                bBox.height = 0
                            } else {
                                bBox.x = isTop ? bBox.x + bBox.width : bBox.x;
                                bBox.width = 0
                            }
                        }
                        return bBox
                    },
                    getTooltipParams: function(location) {
                        const that = this;
                        if (that.graphic) {
                            const minValue = _min(that.lowY, that.highY);
                            const maxValue = _max(that.lowY, that.highY);
                            const visibleArea = that._getVisibleArea();
                            const rotated = that._options.rotated;
                            const minVisible = rotated ? visibleArea.minX : visibleArea.minY;
                            const maxVisible = rotated ? visibleArea.maxX : visibleArea.maxY;
                            const min = _max(minVisible, minValue);
                            const max = _min(maxVisible, maxValue);
                            const centerCoord = that.getCenterCoord();
                            if ("edge" === location) {
                                centerCoord[rotated ? "x" : "y"] = rotated ? max : min
                            }
                            centerCoord.offset = 0;
                            return centerCoord
                        }
                    },
                    getCenterCoord() {
                        if (this.graphic) {
                            const that = this;
                            let x;
                            let y;
                            const minValue = _min(that.lowY, that.highY);
                            const maxValue = _max(that.lowY, that.highY);
                            const visibleArea = that._getVisibleArea();
                            const rotated = that._options.rotated;
                            const minVisible = rotated ? visibleArea.minX : visibleArea.minY;
                            const maxVisible = rotated ? visibleArea.maxX : visibleArea.maxY;
                            const min = _max(minVisible, minValue);
                            const max = _min(maxVisible, maxValue);
                            const center = min + (max - min) / 2;
                            if (rotated) {
                                y = that.x;
                                x = center
                            } else {
                                x = that.x;
                                y = center
                            }
                            return {
                                x: x,
                                y: y
                            }
                        }
                    },
                    hasValue: function() {
                        return null !== this.highValue && null !== this.lowValue
                    },
                    hasCoords: function() {
                        return null !== this.x && null !== this.lowY && null !== this.highY
                    },
                    _translate: function() {
                        const rotated = this._options.rotated;
                        const valTranslator = this._getValTranslator();
                        const x = this._getArgTranslator().translate(this.argument);
                        this.vx = this.vy = this.x = null === x ? x : x + (this.xCorrection || 0);
                        this.openY = null !== this.openValue ? valTranslator.translate(this.openValue) : null;
                        this.highY = valTranslator.translate(this.highValue);
                        this.lowY = valTranslator.translate(this.lowValue);
                        this.closeY = null !== this.closeValue ? valTranslator.translate(this.closeValue) : null;
                        const centerValue = _min(this.lowY, this.highY) + _abs(this.lowY - this.highY) / 2;
                        this._calculateVisibility(!rotated ? this.x : centerValue, !rotated ? centerValue : this.x)
                    },
                    getCrosshairData: function(x, y) {
                        const that = this;
                        const rotated = that._options.rotated;
                        const origY = rotated ? x : y;
                        let yValue;
                        const argument = that.argument;
                        let coords;
                        let coord = "low";
                        if (_abs(that.lowY - origY) < _abs(that.closeY - origY)) {
                            yValue = that.lowY
                        } else {
                            yValue = that.closeY;
                            coord = "close"
                        }
                        if (_abs(yValue - origY) >= _abs(that.openY - origY)) {
                            yValue = that.openY;
                            coord = "open"
                        }
                        if (_abs(yValue - origY) >= _abs(that.highY - origY)) {
                            yValue = that.highY;
                            coord = "high"
                        }
                        if (rotated) {
                            coords = {
                                y: that.vy,
                                x: yValue,
                                xValue: that[coord + "Value"],
                                yValue: argument
                            }
                        } else {
                            coords = {
                                x: that.vx,
                                y: yValue,
                                xValue: argument,
                                yValue: that[coord + "Value"]
                            }
                        }
                        coords.axis = that.series.axis;
                        return coords
                    },
                    _updateData: function(data) {
                        const label = this._label;
                        const reductionColor = this._options.reduction.color;
                        this.value = this.initialValue = data.reductionValue;
                        this.originalValue = data.value;
                        this.lowValue = this.originalLowValue = data.lowValue;
                        this.highValue = this.originalHighValue = data.highValue;
                        this.openValue = this.originalOpenValue = data.openValue;
                        this.closeValue = this.originalCloseValue = data.closeValue;
                        this._isPositive = data.openValue < data.closeValue;
                        this._isReduction = data.isReduction;
                        if (this._isReduction) {
                            label.setColor(reductionColor)
                        }
                    },
                    _updateMarker: function(animationEnabled, style, group) {
                        const graphic = this.graphic;
                        graphic.attr({
                            points: this._getPoints()
                        }).smartAttr(style).sharp();
                        group && graphic.append(this._getMarkerGroup(group))
                    },
                    _getLabelFormatObject: function() {
                        return {
                            openValue: this.openValue,
                            highValue: this.highValue,
                            lowValue: this.lowValue,
                            closeValue: this.closeValue,
                            reductionValue: this.initialValue,
                            argument: this.initialArgument,
                            value: this.initialValue,
                            seriesName: this.series.name,
                            originalOpenValue: this.originalOpenValue,
                            originalCloseValue: this.originalCloseValue,
                            originalLowValue: this.originalLowValue,
                            originalHighValue: this.originalHighValue,
                            originalArgument: this.originalArgument,
                            point: this
                        }
                    },
                    _getFormatObject: function(tooltip) {
                        const highValue = tooltip.formatValue(this.highValue);
                        const openValue = tooltip.formatValue(this.openValue);
                        const closeValue = tooltip.formatValue(this.closeValue);
                        const lowValue = tooltip.formatValue(this.lowValue);
                        const symbolMethods = _symbol_point.default;
                        const formatObject = symbolMethods._getFormatObject.call(this, tooltip);
                        return (0, _extend2.extend)({}, formatObject, {
                            valueText: "h: " + highValue + ("" !== openValue ? " o: " + openValue : "") + ("" !== closeValue ? " c: " + closeValue : "") + " l: " + lowValue,
                            highValueText: highValue,
                            openValueText: openValue,
                            closeValueText: closeValue,
                            lowValueText: lowValue
                        })
                    },
                    getMaxValue: function() {
                        return this.highValue
                    },
                    getMinValue: function() {
                        return this.lowValue
                    }
                });
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        70576:
            /*!************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/series/points/label.js ***!
              \************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.Label = Label;
                var _format_helper = (e = __webpack_require__( /*! ../../../format_helper */ 2082), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                var _utils = __webpack_require__( /*! ../../core/utils */ 28779);
                var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274);
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 52576);
                var _display_format_parser = __webpack_require__( /*! ../helpers/display_format_parser */ 82e3);
                const _format = _format_helper.default.format;
                const _math = Math;
                const _round = _math.round;
                const _floor = _math.floor;
                const _abs = _math.abs;

                function getClosestCoord(point, coords) {
                    let closestDistance = 1 / 0;
                    let closestCoord;
                    (0, _iterator.each)(coords, (function(_, coord) {
                        const x = point[0] - coord[0];
                        const y = point[1] - coord[1];
                        const distance = x * x + y * y;
                        if (distance < closestDistance) {
                            closestDistance = distance;
                            closestCoord = coord
                        }
                    }));
                    return [_floor(closestCoord[0]), _floor(closestCoord[1])]
                }

                function getCrossCoord(rect, coord, indexOffset) {
                    return (coord - rect[0 + indexOffset]) / (rect[2 + indexOffset] - rect[0 + indexOffset]) * (rect[3 - indexOffset] - rect[1 - indexOffset]) + rect[1 - indexOffset]
                }
                const barPointStrategy = {
                    isLabelInside: function(labelPoint, figure) {
                        const xc = labelPoint.x + labelPoint.width / 2;
                        const yc = labelPoint.y + labelPoint.height / 2;
                        return figure.x <= xc && xc <= figure.x + figure.width && figure.y <= yc && yc <= figure.y + figure.height
                    },
                    prepareLabelPoints: function(bBox, rotatedBBox, isHorizontal, angle, figureCenter) {
                        const x1 = rotatedBBox.x;
                        const xc = x1 + rotatedBBox.width / 2;
                        const x2 = x1 + rotatedBBox.width - 1;
                        const y1 = rotatedBBox.y;
                        const yc = y1 + rotatedBBox.height / 2;
                        const y2 = y1 + rotatedBBox.height - 1;
                        let labelPoints;
                        const isRectangular = _abs(angle) % 90 === 0;
                        if (figureCenter[0] > x1 && figureCenter[0] < x2) {
                            if (isRectangular) {
                                labelPoints = [
                                    [figureCenter[0], _abs(figureCenter[1] - y1) < _abs(figureCenter[1] - y2) ? y1 : y2]
                                ]
                            } else {
                                labelPoints = [
                                    [figureCenter[0], getCrossCoord([x1, y1, x2, y2], figureCenter[0], 0)]
                                ]
                            }
                        } else if (figureCenter[1] > y1 && figureCenter[1] < y2) {
                            if (isRectangular) {
                                labelPoints = [
                                    [_abs(figureCenter[0] - x1) < _abs(figureCenter[0] - x2) ? x1 : x2, figureCenter[1]]
                                ]
                            } else {
                                labelPoints = [
                                    [getCrossCoord([x1, y1, x2, y2], figureCenter[1], 1), figureCenter[1]]
                                ]
                            }
                        } else if (isRectangular) {
                            labelPoints = [
                                [x1, y1],
                                [isHorizontal ? x1 : xc, isHorizontal ? yc : y1],
                                [x2, y1],
                                [x1, y2],
                                [isHorizontal ? x2 : xc, isHorizontal ? yc : y2],
                                [x2, y2]
                            ]
                        } else {
                            labelPoints = [
                                [xc, yc]
                            ]
                        }
                        return labelPoints
                    },
                    isHorizontal: function(bBox, figure) {
                        return bBox.x > figure.x + figure.width || bBox.x + bBox.width < figure.x
                    },
                    getFigureCenter: function(figure) {
                        return [_floor(figure.x + figure.width / 2), _floor(figure.y + figure.height / 2)]
                    },
                    findFigurePoint: function(figure, labelPoint) {
                        const figureCenter = barPointStrategy.getFigureCenter(figure);
                        const point = getClosestCoord(labelPoint, [
                            [figure.x, figureCenter[1]],
                            [figureCenter[0], figure.y + figure.height],
                            [figure.x + figure.width, figureCenter[1]],
                            [figureCenter[0], figure.y]
                        ]);
                        return point
                    },
                    adjustPoints: function(points) {
                        const lineIsVertical = _abs(points[1] - points[3]) <= 1;
                        const lineIsHorizontal = _abs(points[0] - points[2]) <= 1;
                        if (lineIsHorizontal) {
                            points[0] = points[2]
                        }
                        if (lineIsVertical) {
                            points[1] = points[3]
                        }
                        return points
                    }
                };
                const symbolPointStrategy = {
                    isLabelInside: function() {
                        return false
                    },
                    prepareLabelPoints: barPointStrategy.prepareLabelPoints,
                    isHorizontal: function(bBox, figure) {
                        return bBox.x > figure.x + figure.r || bBox.x + bBox.width < figure.x - figure.r
                    },
                    getFigureCenter: function(figure) {
                        return [figure.x, figure.y]
                    },
                    findFigurePoint: function(figure, labelPoint) {
                        const angle = Math.atan2(figure.y - labelPoint[1], labelPoint[0] - figure.x);
                        return [_round(figure.x + figure.r * Math.cos(angle)), _round(figure.y - figure.r * Math.sin(angle))]
                    },
                    adjustPoints: barPointStrategy.adjustPoints
                };
                const piePointStrategy = {
                    isLabelInside: function(_0, _1, isOutside) {
                        return !isOutside
                    },
                    prepareLabelPoints: function(bBox, rotatedBBox, isHorizontal, angle) {
                        const xl = bBox.x;
                        const xr = xl + bBox.width;
                        const xc = xl + _round(bBox.width / 2);
                        const yt = bBox.y;
                        const yb = yt + bBox.height;
                        const yc = yt + _round(bBox.height / 2);
                        let points = [
                            [
                                [xl, yt],
                                [xr, yt]
                            ],
                            [
                                [xr, yt],
                                [xr, yb]
                            ],
                            [
                                [xr, yb],
                                [xl, yb]
                            ],
                            [
                                [xl, yb],
                                [xl, yt]
                            ]
                        ];
                        const cosSin = (0, _utils.getCosAndSin)(angle);
                        if (0 === angle) {
                            points = isHorizontal ? [
                                [xl, yc],
                                [xr, yc]
                            ] : [
                                [xc, yt],
                                [xc, yb]
                            ]
                        } else {
                            points = points.map((function(pair) {
                                return pair.map((function(point) {
                                    return [_round((point[0] - xc) * cosSin.cos + (point[1] - yc) * cosSin.sin + xc), _round(-(point[0] - xc) * cosSin.sin + (point[1] - yc) * cosSin.cos + yc)]
                                }))
                            })).reduce((function(r, pair) {
                                const point1x = pair[0][0];
                                const point1y = pair[0][1];
                                const point2x = pair[1][0];
                                const point2y = pair[1][1];
                                if (isHorizontal) {
                                    if (point1y >= yc && yc >= point2y || point1y <= yc && yc <= point2y) {
                                        r.push([(yc - point1y) * (point2x - point1x) / (point2y - point1y) + point1x, yc])
                                    }
                                } else if (point1x >= xc && xc >= point2x || point1x <= xc && xc <= point2x) {
                                    r.push([xc, (xc - point1x) * (point2y - point1y) / (point2x - point1x) + point1y])
                                }
                                return r
                            }), [])
                        }
                        return points
                    },
                    isHorizontal: function(bBox, figure) {
                        return bBox.x > figure.x || figure.x > bBox.x + bBox.width
                    },
                    getFigureCenter: symbolPointStrategy.getFigureCenter,
                    findFigurePoint: function(figure, labelPoint, isHorizontal) {
                        if (!isHorizontal) {
                            return [figure.x, figure.y]
                        }
                        const labelX = labelPoint[0];
                        const x = _round(figure.x + (figure.y - labelPoint[1]) / Math.tan((0, _utils.degreesToRadians)(figure.angle)));
                        let points = [figure.x, figure.y, x, labelPoint[1]];
                        if (!(figure.x <= x && x <= labelX) && !(labelX <= x && x <= figure.x)) {
                            if (_abs(figure.x - labelX) < 12) {
                                points = [figure.x, figure.y]
                            } else if (figure.x <= labelX) {
                                points[2] = figure.x + 12
                            } else {
                                points[2] = figure.x - 12
                            }
                        }
                        return points
                    },
                    adjustPoints: function(points) {
                        return points
                    }
                };

                function selectStrategy(figure) {
                    return void 0 !== figure.angle && piePointStrategy || void 0 !== figure.r && symbolPointStrategy || barPointStrategy
                }

                function disposeItem(obj, field) {
                    obj[field] && obj[field].dispose();
                    obj[field] = null
                }

                function checkBackground(background) {
                    return background && (background.fill && "none" !== background.fill || background["stroke-width"] > 0 && background.stroke && "none" !== background.stroke)
                }

                function checkConnector(connector) {
                    return connector && connector["stroke-width"] > 0 && connector.stroke && "none" !== connector.stroke
                }

                function Label(renderSettings) {
                    this._renderer = renderSettings.renderer;
                    this._container = renderSettings.labelsGroup;
                    this._point = renderSettings.point;
                    this._strategy = renderSettings.strategy;
                    this._rowCount = 1
                }
                Label.prototype = {
                    constructor: Label,
                    setColor: function(color) {
                        this._color = color
                    },
                    setOptions: function(options) {
                        this._options = options
                    },
                    setData: function(data) {
                        this._data = data
                    },
                    setDataField: function(fieldName, fieldValue) {
                        this._data = this._data || {};
                        this._data[fieldName] = fieldValue
                    },
                    getData: function() {
                        return this._data
                    },
                    setFigureToDrawConnector: function(figure) {
                        this._figure = figure
                    },
                    dispose: function() {
                        disposeItem(this, "_group");
                        this._data = this._options = this._textContent = this._visible = this._insideGroup = this._text = this._background = this._connector = this._figure = null
                    },
                    _setVisibility: function(value, state) {
                        this._group && this._group.attr({
                            visibility: value
                        });
                        this._visible = state
                    },
                    isVisible: function() {
                        return this._visible
                    },
                    hide: function(holdInvisible) {
                        this._holdVisibility = !!holdInvisible;
                        this._hide()
                    },
                    _hide: function() {
                        this._setVisibility("hidden", false)
                    },
                    show: function(holdVisible) {
                        const correctPosition = !this._drawn;
                        if (this._point.hasValue()) {
                            this._holdVisibility = !!holdVisible;
                            this._show();
                            correctPosition && this._point.correctLabelPosition(this)
                        }
                    },
                    _show: function() {
                        const that = this;
                        const renderer = that._renderer;
                        const container = that._container;
                        const options = that._options || {};
                        const text = that._textContent = function(data, options) {
                            const format = options.format;
                            data.valueText = _format(data.value, format);
                            data.argumentText = _format(data.argument, options.argumentFormat);
                            if (void 0 !== data.percent) {
                                data.percentText = _format(data.percent, {
                                    type: "percent",
                                    precision: format && format.percentPrecision
                                })
                            }
                            if (void 0 !== data.total) {
                                data.totalText = _format(data.total, format)
                            }
                            if (void 0 !== data.openValue) {
                                data.openValueText = _format(data.openValue, format)
                            }
                            if (void 0 !== data.closeValue) {
                                data.closeValueText = _format(data.closeValue, format)
                            }
                            if (void 0 !== data.lowValue) {
                                data.lowValueText = _format(data.lowValue, format)
                            }
                            if (void 0 !== data.highValue) {
                                data.highValueText = _format(data.highValue, format)
                            }
                            if (void 0 !== data.reductionValue) {
                                data.reductionValueText = _format(data.reductionValue, format)
                            }
                            return options.customizeText ? options.customizeText.call(data, data) : options.displayFormat ? (0, _display_format_parser.processDisplayFormat)(options.displayFormat, data) : data.valueText
                        }(that._data, options) || null;
                        if (text) {
                            if (!that._group) {
                                that._group = renderer.g().append(container);
                                that._insideGroup = renderer.g().append(that._group);
                                that._text = renderer.text("", 0, 0).append(that._insideGroup)
                            }
                            that._text.css(options.attributes ? (0, _utils.patchFontOptions)(options.attributes.font) : {});
                            if (checkBackground(options.background)) {
                                that._background = that._background || renderer.rect().append(that._insideGroup).toBackground();
                                that._background.attr(options.background);
                                that._color && that._background.attr({
                                    fill: that._color
                                })
                            } else {
                                disposeItem(that, "_background")
                            }
                            if (checkConnector(options.connector)) {
                                that._connector = that._connector || renderer.path([], "line").sharp().append(that._group).toBackground();
                                that._connector.attr(options.connector);
                                that._color && that._connector.attr({
                                    stroke: that._color
                                })
                            } else {
                                disposeItem(that, "_connector")
                            }
                            that._text.attr({
                                text: text,
                                align: options.textAlignment,
                                class: options.cssClass
                            });
                            that._updateBackground(that._text.getBBox());
                            that._setVisibility("visible", true);
                            that._drawn = true
                        } else {
                            that._hide()
                        }
                    },
                    _getLabelVisibility: function(isVisible) {
                        return this._holdVisibility ? this.isVisible() : isVisible
                    },
                    draw: function(isVisible) {
                        if (this._getLabelVisibility(isVisible)) {
                            this._show();
                            this._point && this._point.correctLabelPosition(this)
                        } else {
                            this._drawn = false;
                            this._hide()
                        }
                        return this
                    },
                    _updateBackground: function(bBox) {
                        const that = this;
                        if (that._background) {
                            bBox.x -= 8;
                            bBox.y -= 4;
                            bBox.width += 16;
                            bBox.height += 8;
                            that._background.attr(bBox)
                        }
                        that._bBoxWithoutRotation = (0, _extend.extend)({}, bBox);
                        const rotationAngle = that._options.rotationAngle || 0;
                        that._insideGroup.rotate(rotationAngle, bBox.x + bBox.width / 2, bBox.y + bBox.height / 2);
                        bBox = (0, _utils.rotateBBox)(bBox, [bBox.x + bBox.width / 2, bBox.y + bBox.height / 2], -rotationAngle);
                        that._bBox = bBox
                    },
                    getFigureCenter() {
                        const figure = this._figure;
                        const strategy = this._strategy || selectStrategy(figure);
                        return strategy.getFigureCenter(figure)
                    },
                    _getConnectorPoints: function() {
                        const that = this;
                        const figure = that._figure;
                        const options = that._options;
                        const strategy = that._strategy || selectStrategy(figure);
                        const bBox = that._shiftBBox(that._bBoxWithoutRotation);
                        const rotatedBBox = that.getBoundingRect();
                        let labelPoint;
                        let points = [];
                        let isHorizontal;
                        if (!strategy.isLabelInside(bBox, figure, "inside" !== options.position)) {
                            isHorizontal = strategy.isHorizontal(bBox, figure);
                            const figureCenter = that.getFigureCenter();
                            points = strategy.prepareLabelPoints(bBox, rotatedBBox, isHorizontal, -options.rotationAngle || 0, figureCenter);
                            labelPoint = getClosestCoord(figureCenter, points);
                            points = strategy.findFigurePoint(figure, labelPoint, isHorizontal);
                            points = points.concat(labelPoint)
                        }
                        return strategy.adjustPoints(points)
                    },
                    fit: function(maxWidth) {
                        const padding = this._background ? 16 : 0;
                        let rowCountChanged = false;
                        if (this._text) {
                            const result = this._text.setMaxSize(maxWidth - padding, void 0, this._options);
                            let rowCount = result.rowCount;
                            if (0 === rowCount) {
                                rowCount = 1
                            }
                            if (rowCount !== this._rowCount) {
                                rowCountChanged = true;
                                this._rowCount = rowCount
                            }
                            result.textIsEmpty && disposeItem(this, "_background")
                        }
                        this._updateBackground(this._text.getBBox());
                        return rowCountChanged
                    },
                    resetEllipsis: function() {
                        this._text && this._text.restoreText();
                        this._updateBackground(this._text.getBBox())
                    },
                    setTrackerData: function(point) {
                        this._text.data({
                            "chart-data-point": point
                        });
                        this._background && this._background.data({
                            "chart-data-point": point
                        })
                    },
                    hideInsideLabel: function(coords) {
                        return this._point.hideInsideLabel(this, coords)
                    },
                    getPoint() {
                        return this._point
                    },
                    shift: function(x, y) {
                        const that = this;
                        if (that._textContent) {
                            that._insideGroup.attr({
                                translateX: that._x = _round(x - that._bBox.x),
                                translateY: that._y = _round(y - that._bBox.y)
                            });
                            if (that._connector) {
                                that._connector.attr({
                                    points: that._getConnectorPoints()
                                })
                            }
                        }
                        return that
                    },
                    getBoundingRect: function() {
                        return this._shiftBBox(this._bBox)
                    },
                    _shiftBBox: function(bBox) {
                        return this._textContent ? {
                            x: bBox.x + this._x,
                            y: bBox.y + this._y,
                            width: bBox.width,
                            height: bBox.height
                        } : {}
                    },
                    getLayoutOptions: function() {
                        const options = this._options;
                        return {
                            alignment: options.alignment,
                            background: checkBackground(options.background),
                            horizontalOffset: options.horizontalOffset,
                            verticalOffset: options.verticalOffset,
                            radialOffset: options.radialOffset,
                            position: options.position,
                            connectorOffset: (checkConnector(options.connector) ? 12 : 0) + (checkBackground(options.background) ? 8 : 0)
                        }
                    }
                }
            },
        78641:
            /*!****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/series/points/pie_point.js ***!
              \****************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _extend2 = __webpack_require__( /*! ../../../core/utils/extend */ 52576);
                var _symbol_point = _interopRequireDefault(__webpack_require__( /*! ./symbol_point */ 27589));
                var _utils = __webpack_require__( /*! ../../core/utils */ 28779);
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528);
                var _consts = _interopRequireDefault(__webpack_require__( /*! ../../components/consts */ 7377));

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const _extend = _extend2.extend;
                const _round = Math.round;
                const _sqrt = Math.sqrt;
                const _acos = Math.acos;
                const DEG = 180 / Math.PI;
                const _abs = Math.abs;
                const RADIAL_LABEL_INDENT = _consts.default.radialLabelIndent;
                exports.default = _extend({}, _symbol_point.default, {
                    _updateData: function(data, argumentChanged) {
                        const that = this;
                        _symbol_point.default._updateData.call(this, data);
                        if (argumentChanged || !(0, _type.isDefined)(that._visible)) {
                            that._visible = true
                        }
                        that.minValue = that.initialMinValue = that.originalMinValue = (0, _type.isDefined)(data.minValue) ? data.minValue : 0
                    },
                    animate: function(complete, duration, delay) {
                        this.graphic.animate({
                            x: this.centerX,
                            y: this.centerY,
                            outerRadius: this.radiusOuter,
                            innerRadius: this.radiusInner,
                            startAngle: this.toAngle,
                            endAngle: this.fromAngle
                        }, {
                            delay: delay,
                            partitionDuration: duration
                        }, complete)
                    },
                    correctPosition: function(correction) {
                        this.correctRadius(correction);
                        this.correctLabelRadius(correction.radiusOuter + RADIAL_LABEL_INDENT);
                        this.centerX = correction.centerX;
                        this.centerY = correction.centerY
                    },
                    correctRadius: function(correction) {
                        this.radiusInner = correction.radiusInner;
                        this.radiusOuter = correction.radiusOuter
                    },
                    correctLabelRadius: function(radiusLabels) {
                        this.radiusLabels = radiusLabels
                    },
                    correctValue: function(correction, percent, base) {
                        this.value = (base || this.normalInitialValue) + correction;
                        this.minValue = correction;
                        this.percent = percent;
                        this._label.setDataField("percent", percent)
                    },
                    _updateLabelData: function() {
                        this._label.setData(this._getLabelFormatObject())
                    },
                    _getShiftLabelCoords: function() {
                        const that = this;
                        const bBox = that._label.getBoundingRect();
                        const coord = that._getLabelCoords(that._label);
                        const visibleArea = that._getVisibleArea();
                        if (that._isLabelDrawingWithoutPoints) {
                            return that._checkLabelPosition(coord, bBox, visibleArea)
                        } else {
                            return that._getLabelExtraCoord(coord, that._checkVerticalLabelPosition(coord, bBox, visibleArea), bBox)
                        }
                    },
                    _getLabelPosition: function(options) {
                        return options.position
                    },
                    getAnnotationCoords: function(location) {
                        return this._getElementCoords("edge" !== location ? "inside" : "outside", this.radiusOuter, 0)
                    },
                    _getElementCoords: function(position, elementRadius, radialOffset) {
                        let bBox = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : {
                            x: 0,
                            y: 0,
                            width: 0,
                            height: 0
                        };
                        const that = this;
                        const angleFunctions = (0, _utils.getCosAndSin)(that.middleAngle);
                        const radiusInner = that.radiusInner;
                        const radiusOuter = that.radiusOuter;
                        const columnsPosition = "columns" === position;
                        let rad;
                        let x;
                        if ("inside" === position) {
                            rad = radiusInner + (radiusOuter - radiusInner) / 2 + radialOffset;
                            x = that.centerX + rad * angleFunctions.cos - bBox.width / 2
                        } else {
                            rad = elementRadius + radialOffset;
                            if (angleFunctions.cos > .1 || columnsPosition && angleFunctions.cos >= 0) {
                                x = that.centerX + rad * angleFunctions.cos
                            } else if (angleFunctions.cos < -.1 || columnsPosition && angleFunctions.cos < 0) {
                                x = that.centerX + rad * angleFunctions.cos - bBox.width
                            } else {
                                x = that.centerX + rad * angleFunctions.cos - bBox.width / 2
                            }
                        }
                        return {
                            x: x,
                            y: _round(that.centerY - rad * angleFunctions.sin - bBox.height / 2)
                        }
                    },
                    _getLabelCoords: function(label) {
                        const bBox = label.getBoundingRect();
                        const options = label.getLayoutOptions();
                        const position = this._getLabelPosition(options);
                        return this._getElementCoords(position, this.radiusLabels, options.radialOffset, bBox)
                    },
                    _correctLabelCoord: function(coord, moveLabelsFromCenter) {
                        const label = this._label;
                        const bBox = label.getBoundingRect();
                        const labelWidth = bBox.width;
                        const options = label.getLayoutOptions();
                        const visibleArea = this._getVisibleArea();
                        const rightBorderX = visibleArea.maxX - labelWidth;
                        const leftBorderX = visibleArea.minX;
                        const angleOfPoint = (0, _utils.normalizeAngle)(this.middleAngle);
                        const centerX = this.centerX;
                        const connectorOffset = options.connectorOffset;
                        let x = coord.x;
                        if ("columns" === options.position) {
                            if (angleOfPoint <= 90 || angleOfPoint >= 270) {
                                x = rightBorderX
                            } else {
                                x = leftBorderX
                            }
                            coord.x = x
                        } else if ("inside" !== options.position && moveLabelsFromCenter) {
                            if (angleOfPoint <= 90 || angleOfPoint >= 270) {
                                if (x - connectorOffset < centerX) {
                                    x = centerX + connectorOffset
                                }
                            } else if (x + labelWidth + connectorOffset > centerX) {
                                x = centerX - labelWidth - connectorOffset
                            }
                            coord.x = x
                        }
                        return coord
                    },
                    drawLabel: function() {
                        this.translate();
                        this._isLabelDrawingWithoutPoints = true;
                        this._drawLabel();
                        this._isLabelDrawingWithoutPoints = false
                    },
                    updateLabelCoord: function(moveLabelsFromCenter) {
                        const bBox = this._label.getBoundingRect();
                        let coord = this._correctLabelCoord(bBox, moveLabelsFromCenter);
                        coord = this._checkHorizontalLabelPosition(coord, bBox, this._getVisibleArea());
                        this._label.shift(_round(coord.x), _round(bBox.y))
                    },
                    _checkVerticalLabelPosition: function(coord, box, visibleArea) {
                        const x = coord.x;
                        let y = coord.y;
                        if (coord.y + box.height > visibleArea.maxY) {
                            y = visibleArea.maxY - box.height
                        } else if (coord.y < visibleArea.minY) {
                            y = visibleArea.minY
                        }
                        return {
                            x: x,
                            y: y
                        }
                    },
                    _getLabelExtraCoord: function(coord, shiftCoord, box) {
                        return coord.y !== shiftCoord.y ? (0, _utils.getVerticallyShiftedAngularCoords)({
                            x: coord.x,
                            y: coord.y,
                            width: box.width,
                            height: box.height
                        }, shiftCoord.y - coord.y, {
                            x: this.centerX,
                            y: this.centerY
                        }) : coord
                    },
                    _checkHorizontalLabelPosition: function(coord, box, visibleArea) {
                        let x = coord.x;
                        const y = coord.y;
                        if (coord.x + box.width > visibleArea.maxX) {
                            x = visibleArea.maxX - box.width
                        } else if (coord.x < visibleArea.minX) {
                            x = visibleArea.minX
                        }
                        return {
                            x: x,
                            y: y
                        }
                    },
                    applyWordWrap: function(moveLabelsFromCenter) {
                        const that = this;
                        const label = that._label;
                        const box = label.getBoundingRect();
                        const visibleArea = that._getVisibleArea();
                        const position = label.getLayoutOptions().position;
                        let width = box.width;
                        let rowCountChanged = false;
                        if ("columns" === position && that.series.index > 0) {
                            width = visibleArea.maxX - that.centerX - that.radiusLabels
                        } else if ("inside" === position) {
                            if (width > visibleArea.maxX - visibleArea.minX) {
                                width = visibleArea.maxX - visibleArea.minX
                            }
                        } else if (moveLabelsFromCenter && box.x < that.centerX && box.width + box.x > that.centerX) {
                            width = Math.floor((visibleArea.maxX - visibleArea.minX) / 2)
                        } else if (box.x + width > visibleArea.maxX) {
                            width = visibleArea.maxX - box.x
                        } else if (box.x < visibleArea.minX) {
                            width = box.x + width - visibleArea.minX
                        }
                        if (width < box.width) {
                            rowCountChanged = label.fit(width)
                        }
                        return rowCountChanged
                    },
                    setLabelTrackerData: function() {
                        this._label.setTrackerData(this)
                    },
                    _checkLabelPosition: function(coord, bBox, visibleArea) {
                        coord = this._checkHorizontalLabelPosition(coord, bBox, visibleArea);
                        return this._checkVerticalLabelPosition(coord, bBox, visibleArea)
                    },
                    _getLabelConnector: function() {
                        const rad = this.radiusOuter;
                        const seriesStyle = this._options.styles.normal;
                        const strokeWidthBy2 = seriesStyle["stroke-width"] / 2;
                        const borderWidth = this.series.getOptions().containerBackgroundColor === seriesStyle.stroke ? _round(strokeWidthBy2) : _round(-strokeWidthBy2);
                        const angleFunctions = (0, _utils.getCosAndSin)(_round(this.middleAngle));
                        return {
                            x: _round(this.centerX + (rad - borderWidth) * angleFunctions.cos),
                            y: _round(this.centerY - (rad - borderWidth) * angleFunctions.sin),
                            angle: this.middleAngle
                        }
                    },
                    _drawMarker: function(renderer, group, animationEnabled, firstDrawing) {
                        const that = this;
                        let radiusOuter = that.radiusOuter;
                        let radiusInner = that.radiusInner;
                        let fromAngle = that.fromAngle;
                        let toAngle = that.toAngle;
                        if (animationEnabled) {
                            radiusInner = radiusOuter = 0;
                            if (!firstDrawing) {
                                fromAngle = toAngle = that.shiftedAngle
                            }
                        }
                        that.graphic = renderer.arc(that.centerX, that.centerY, radiusInner, radiusOuter, toAngle, fromAngle).attr({
                            "stroke-linejoin": "round"
                        }).smartAttr(that._getStyle()).data({
                            "chart-data-point": that
                        }).sharp().append(group)
                    },
                    getTooltipParams: function() {
                        const angleFunctions = (0, _utils.getCosAndSin)(this.middleAngle);
                        const radiusInner = this.radiusInner;
                        const radiusOuter = this.radiusOuter;
                        return {
                            x: this.centerX + (radiusInner + (radiusOuter - radiusInner) / 2) * angleFunctions.cos,
                            y: this.centerY - (radiusInner + (radiusOuter - radiusInner) / 2) * angleFunctions.sin,
                            offset: 0
                        }
                    },
                    _translate: function() {
                        const that = this;
                        const angle = that.shiftedAngle || 0;
                        const value = that.value;
                        const minValue = that.minValue;
                        const translator = that._getValTranslator();
                        that.fromAngle = translator.translate(minValue) + angle;
                        that.toAngle = translator.translate(value) + angle;
                        that.middleAngle = translator.translate((value - minValue) / 2 + minValue) + angle;
                        if (!that.isVisible()) {
                            that.middleAngle = that.toAngle = that.fromAngle = that.fromAngle || angle
                        }
                    },
                    getMarkerVisibility: function() {
                        return true
                    },
                    _updateMarker: function(animationEnabled, style, _, callback) {
                        const that = this;
                        if (!animationEnabled) {
                            style = _extend({
                                x: that.centerX,
                                y: that.centerY,
                                outerRadius: that.radiusOuter,
                                innerRadius: that.radiusInner,
                                startAngle: that.toAngle,
                                endAngle: that.fromAngle
                            }, style)
                        }
                        that.graphic.smartAttr(style).sharp();
                        callback && callback()
                    },
                    getLegendStyles: function() {
                        return this._styles.legendStyles
                    },
                    isInVisibleArea: function() {
                        return true
                    },
                    hide: function() {
                        const that = this;
                        if (that._visible) {
                            that._visible = false;
                            that.hideTooltip();
                            that._options.visibilityChanged()
                        }
                    },
                    show: function() {
                        const that = this;
                        if (!that._visible) {
                            that._visible = true;
                            that._options.visibilityChanged()
                        }
                    },
                    setInvisibility: function() {
                        this._label.draw(false)
                    },
                    isVisible: function() {
                        return this._visible
                    },
                    _getFormatObject: function(tooltip) {
                        const formatObject = _symbol_point.default._getFormatObject.call(this, tooltip);
                        const percent = this.percent;
                        formatObject.percent = percent;
                        formatObject.percentText = tooltip.formatValue(percent, "percent");
                        return formatObject
                    },
                    getColor: function() {
                        return this._styles.normal.fill
                    },
                    coordsIn: function(x, y) {
                        const lx = x - this.centerX;
                        const ly = y - this.centerY;
                        const r = _sqrt(lx * lx + ly * ly);
                        const fromAngle = this.fromAngle % 360;
                        const toAngle = this.toAngle % 360;
                        let angle;
                        if (r < this.radiusInner || r > this.radiusOuter || 0 === r) {
                            return false
                        }
                        angle = _acos(lx / r) * DEG * (ly > 0 ? -1 : 1);
                        if (angle < 0) {
                            angle += 360
                        }
                        if (fromAngle === toAngle && _abs(this.toAngle - this.fromAngle) > 1e-4) {
                            return true
                        } else {
                            return fromAngle >= toAngle ? angle <= fromAngle && angle >= toAngle : !(angle >= fromAngle && angle <= toAngle)
                        }
                    }
                });
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        9619:
            /*!******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/series/points/polar_point.js ***!
              \******************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.polarSymbolPoint = exports.polarBarPoint = void 0;
                var _extend2 = __webpack_require__( /*! ../../../core/utils/extend */ 52576);
                var _symbol_point = _interopRequireDefault(__webpack_require__( /*! ./symbol_point */ 27589));
                var _bar_point = _interopRequireDefault(__webpack_require__( /*! ./bar_point */ 39678));
                var _pie_point = _interopRequireDefault(__webpack_require__( /*! ./pie_point */ 78641));
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528);
                var _utils = __webpack_require__( /*! ../../core/utils */ 28779);
                var _consts = _interopRequireDefault(__webpack_require__( /*! ../../components/consts */ 7377));

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const _extend = _extend2.extend;
                const _math = Math;
                const _max = _math.max;
                const RADIAL_LABEL_INDENT = _consts.default.radialLabelIndent;
                const polarSymbolPoint = exports.polarSymbolPoint = _extend({}, _symbol_point.default, {
                    _getLabelCoords: _pie_point.default._getLabelCoords,
                    _getElementCoords: _pie_point.default._getElementCoords,
                    _moveLabelOnCanvas: function(coord, visibleArea, labelBBox) {
                        let x = coord.x;
                        let y = coord.y;
                        if (visibleArea.minX > x) {
                            x = visibleArea.minX
                        }
                        if (visibleArea.maxX < x + labelBBox.width) {
                            x = visibleArea.maxX - labelBBox.width
                        }
                        if (visibleArea.minY > y) {
                            y = visibleArea.minY
                        }
                        if (visibleArea.maxY < y + labelBBox.height) {
                            y = visibleArea.maxY - labelBBox.height
                        }
                        return {
                            x: x,
                            y: y
                        }
                    },
                    _getLabelPosition: function() {
                        return "outside"
                    },
                    _getCoords: function(argument, value) {
                        const axis = this.series.getValueAxis();
                        const startAngle = axis.getAngles()[0];
                        const angle = this._getArgTranslator().translate(argument);
                        const radius = this._getValTranslator().translate(value);
                        const coords = (0, _utils.convertPolarToXY)(axis.getCenter(), axis.getAngles()[0], angle, radius);
                        coords.angle = angle + startAngle - 90, coords.radius = radius;
                        return coords
                    },
                    _translate() {
                        const center = this.series.getValueAxis().getCenter();
                        const coord = this._getCoords(this.argument, this.value);
                        const translator = this._getValTranslator();
                        const maxRadius = translator.isInverted() ? translator.translate("canvas_position_start") : translator.translate("canvas_position_end");
                        const normalizedRadius = (0, _type.isDefined)(coord.radius) && coord.radius >= 0 ? coord.radius : null;
                        this.vx = (0, _utils.normalizeAngle)(coord.angle);
                        this.vy = this.radiusOuter = this.radiusLabels = normalizedRadius;
                        this.radiusLabels += RADIAL_LABEL_INDENT;
                        this.radius = normalizedRadius;
                        this.middleAngle = -coord.angle;
                        this.angle = -coord.angle;
                        this.x = coord.x;
                        this.y = coord.y;
                        this.defaultX = this.centerX = center.x;
                        this.defaultY = this.centerY = center.y;
                        this._translateErrorBars();
                        this.inVisibleArea = this._checkRadiusForVisibleArea(normalizedRadius, maxRadius)
                    },
                    _checkRadiusForVisibleArea: (radius, maxRadius) => (0, _type.isDefined)(radius) && radius <= maxRadius,
                    _translateErrorBars: function() {
                        const errorBars = this._options.errorBars;
                        const translator = this._getValTranslator();
                        if (!errorBars) {
                            return
                        }(0, _type.isDefined)(this.lowError) && (this._lowErrorCoord = this.centerY - translator.translate(this.lowError));
                        (0, _type.isDefined)(this.highError) && (this._highErrorCoord = this.centerY - translator.translate(this.highError));
                        this._errorBarPos = this.centerX;
                        this._baseErrorBarPos = "stdDeviation" === errorBars.type ? this._lowErrorCoord + (this._highErrorCoord - this._lowErrorCoord) / 2 : this.centerY - this.radius
                    },
                    _getTranslates: function(animationEnabled) {
                        return animationEnabled ? this.getDefaultCoords() : {
                            x: this.x,
                            y: this.y
                        }
                    },
                    getDefaultCoords: function() {
                        const cosSin = (0, _utils.getCosAndSin)(-this.angle);
                        const radius = this._getValTranslator().translate("canvas_position_default");
                        const x = this.defaultX + radius * cosSin.cos;
                        const y = this.defaultY + radius * cosSin.sin;
                        return {
                            x: x,
                            y: y
                        }
                    },
                    _addLabelAlignmentAndOffset: function(label, coord) {
                        return coord
                    },
                    _checkLabelPosition: function(label, coord) {
                        const that = this;
                        const visibleArea = that._getVisibleArea();
                        const graphicBBox = that._getGraphicBBox();
                        if (that._isPointInVisibleArea(visibleArea, graphicBBox)) {
                            coord = that._moveLabelOnCanvas(coord, visibleArea, label.getBoundingRect())
                        }
                        return coord
                    },
                    _getErrorBarSettings: function(errorBarOptions, animationEnabled) {
                        const settings = _symbol_point.default._getErrorBarSettings.call(this, errorBarOptions, animationEnabled);
                        settings.rotate = 90 - this.angle;
                        settings.rotateX = this.centerX;
                        settings.rotateY = this.centerY;
                        return settings
                    },
                    getCoords: function(min) {
                        return min ? this.getDefaultCoords() : {
                            x: this.x,
                            y: this.y
                        }
                    }
                });
                exports.polarBarPoint = _extend({}, _bar_point.default, {
                    _translateErrorBars: polarSymbolPoint._translateErrorBars,
                    _getErrorBarSettings: polarSymbolPoint._getErrorBarSettings,
                    _moveLabelOnCanvas: polarSymbolPoint._moveLabelOnCanvas,
                    _getLabelCoords: _pie_point.default._getLabelCoords,
                    _getElementCoords: _pie_point.default._getElementCoords,
                    _getLabelConnector: _pie_point.default._getLabelConnector,
                    getTooltipParams: _pie_point.default.getTooltipParams,
                    _getLabelPosition: _pie_point.default._getLabelPosition,
                    _getCoords: polarSymbolPoint._getCoords,
                    _translate() {
                        const that = this;
                        const translator = that._getValTranslator();
                        const businessRange = translator.getBusinessRange();
                        const maxRadius = translator.isInverted() ? translator.translate("canvas_position_start") : translator.translate("canvas_position_end");
                        that.radiusInner = translator.translate(that.minValue);
                        polarSymbolPoint._translate.call(that);
                        if (null === that.radiusInner) {
                            that.radiusInner = that.radius = maxRadius
                        } else if (null === that.radius) {
                            that.radius = that.value >= businessRange.minVisible ? maxRadius : 0
                        } else if (that.radius > maxRadius) {
                            that.radius = maxRadius
                        }
                        that.radiusOuter = that.radiusLabels = _max(that.radiusInner, that.radius);
                        that.radiusLabels += RADIAL_LABEL_INDENT;
                        that.radiusInner = that.defaultRadius = _math.min(that.radiusInner, that.radius);
                        that.middleAngle = that.angle = -(0, _utils.normalizeAngle)(that.middleAngleCorrection - that.angle)
                    },
                    _checkRadiusForVisibleArea(radius) {
                        return (0, _type.isDefined)(radius) || this._getValTranslator().translate(this.minValue) > 0
                    },
                    _getErrorBarBaseEdgeLength() {
                        const coord = this.getMarkerCoords();
                        return _math.PI * coord.outerRadius * _math.abs(coord.startAngle - coord.endAngle) / 180
                    },
                    getMarkerCoords: function() {
                        return {
                            x: this.centerX,
                            y: this.centerY,
                            outerRadius: this.radiusOuter,
                            innerRadius: this.defaultRadius,
                            startAngle: this.middleAngle - this.interval / 2,
                            endAngle: this.middleAngle + this.interval / 2
                        }
                    },
                    _drawMarker: function(renderer, group, animationEnabled) {
                        const styles = this._getStyle();
                        const coords = this.getMarkerCoords();
                        let innerRadius = coords.innerRadius;
                        let outerRadius = coords.outerRadius;
                        const start = this._getCoords(this.argument, "canvas_position_default");
                        let x = coords.x;
                        let y = coords.y;
                        if (animationEnabled) {
                            innerRadius = 0;
                            outerRadius = 0;
                            x = start.x;
                            y = start.y
                        }
                        this.graphic = renderer.arc(x, y, innerRadius, outerRadius, coords.startAngle, coords.endAngle).attr(styles).data({
                            "chart-data-point": this
                        }).append(group)
                    },
                    _checkLabelPosition: function(label, coord) {
                        const that = this;
                        const visibleArea = that._getVisibleArea();
                        const angleFunctions = (0, _utils.getCosAndSin)(that.middleAngle);
                        const x = that.centerX + that.defaultRadius * angleFunctions.cos;
                        const y = that.centerY - that.defaultRadius * angleFunctions.sin;
                        if (x > visibleArea.minX && x < visibleArea.maxX && y > visibleArea.minY && y < visibleArea.maxY) {
                            coord = that._moveLabelOnCanvas(coord, visibleArea, label.getBoundingRect())
                        }
                        return coord
                    },
                    _addLabelAlignmentAndOffset: function(label, coord) {
                        return coord
                    },
                    correctCoordinates: function(correctOptions) {
                        this.middleAngleCorrection = correctOptions.offset;
                        this.interval = correctOptions.width
                    },
                    coordsIn: function(x, y) {
                        const val = (0, _utils.convertXYToPolar)(this.series.getValueAxis().getCenter(), x, y);
                        const coords = this.getMarkerCoords();
                        const isBetweenAngles = coords.startAngle < coords.endAngle ? -val.phi >= coords.startAngle && -val.phi <= coords.endAngle : -val.phi <= coords.startAngle && -val.phi >= coords.endAngle;
                        return val.r >= coords.innerRadius && val.r <= coords.outerRadius && isBetweenAngles
                    }
                })
            },
        81660:
            /*!**********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/series/points/range_bar_point.js ***!
              \**********************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781);
                var _extend2 = __webpack_require__( /*! ../../../core/utils/extend */ 52576);
                var _bar_point = _interopRequireDefault(__webpack_require__( /*! ./bar_point */ 39678));
                var _range_symbol_point = _interopRequireDefault(__webpack_require__( /*! ./range_symbol_point */ 66779));

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const _extend = _extend2.extend;
                exports.default = _extend({}, _bar_point.default, {
                    deleteLabel: _range_symbol_point.default.deleteLabel,
                    _getFormatObject: _range_symbol_point.default._getFormatObject,
                    clearVisibility: function() {
                        const graphic = this.graphic;
                        if (graphic && graphic.attr("visibility")) {
                            graphic.attr({
                                visibility: null
                            })
                        }
                    },
                    setInvisibility: function() {
                        const graphic = this.graphic;
                        if (graphic && "hidden" !== graphic.attr("visibility")) {
                            graphic.attr({
                                visibility: "hidden"
                            })
                        }
                        this._topLabel.draw(false);
                        this._bottomLabel.draw(false)
                    },
                    getTooltipParams: function(location) {
                        const that = this;
                        const edgeLocation = "edge" === location;
                        let x;
                        let y;
                        if (that._options.rotated) {
                            x = edgeLocation ? that.x + that.width : that.x + that.width / 2;
                            y = that.y + that.height / 2
                        } else {
                            x = that.x + that.width / 2;
                            y = edgeLocation ? that.y : that.y + that.height / 2
                        }
                        return {
                            x: x,
                            y: y,
                            offset: 0
                        }
                    },
                    _translate: function() {
                        const that = this;
                        const barMethods = _bar_point.default;
                        barMethods._translate.call(that);
                        if (that._options.rotated) {
                            that.width = that.width || 1
                        } else {
                            that.height = that.height || 1
                        }
                    },
                    hasCoords: _range_symbol_point.default.hasCoords,
                    _updateData: _range_symbol_point.default._updateData,
                    _getLabelPosition: _range_symbol_point.default._getLabelPosition,
                    _getLabelMinFormatObject: _range_symbol_point.default._getLabelMinFormatObject,
                    _updateLabelData: _range_symbol_point.default._updateLabelData,
                    _updateLabelOptions: _range_symbol_point.default._updateLabelOptions,
                    getCrosshairData: _range_symbol_point.default.getCrosshairData,
                    _createLabel: _range_symbol_point.default._createLabel,
                    _checkOverlay: _range_symbol_point.default._checkOverlay,
                    _checkLabelsOverlay: _range_symbol_point.default._checkLabelsOverlay,
                    _getOverlayCorrections: _range_symbol_point.default._getOverlayCorrections,
                    _drawLabel: _range_symbol_point.default._drawLabel,
                    _getLabelCoords: _range_symbol_point.default._getLabelCoords,
                    getLabel: _range_symbol_point.default.getLabel,
                    getLabels: _range_symbol_point.default.getLabels,
                    getBoundingRect: _common.noop,
                    getMinValue: _range_symbol_point.default.getMinValue,
                    getMaxValue: _range_symbol_point.default.getMaxValue
                });
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        66779:
            /*!*************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/series/points/range_symbol_point.js ***!
              \*************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274);
                var _extend2 = __webpack_require__( /*! ../../../core/utils/extend */ 52576);
                var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781);
                var _label = __webpack_require__( /*! ./label */ 70576);
                var _symbol_point = (e = __webpack_require__( /*! ./symbol_point */ 27589), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528);
                const _extend = _extend2.extend;
                const _math = Math;
                const _abs = _math.abs;
                const _min = _math.min;
                const _max = _math.max;
                const _round = _math.round;
                exports.default = _extend({}, _symbol_point.default, {
                    deleteLabel: function() {
                        this._topLabel.dispose();
                        this._topLabel = null;
                        this._bottomLabel.dispose();
                        this._bottomLabel = null
                    },
                    hideMarker: function(type) {
                        const graphic = this.graphic;
                        const marker = graphic && graphic[type + "Marker"];
                        const label = this["_" + type + "Label"];
                        if (marker && "hidden" !== marker.attr("visibility")) {
                            marker.attr({
                                visibility: "hidden"
                            })
                        }
                        label.draw(false)
                    },
                    setInvisibility: function() {
                        this.hideMarker("top");
                        this.hideMarker("bottom")
                    },
                    clearVisibility: function() {
                        const graphic = this.graphic;
                        const topMarker = graphic && graphic.topMarker;
                        const bottomMarker = graphic && graphic.bottomMarker;
                        if (topMarker && topMarker.attr("visibility")) {
                            topMarker.attr({
                                visibility: null
                            })
                        }
                        if (bottomMarker && bottomMarker.attr("visibility")) {
                            bottomMarker.attr({
                                visibility: null
                            })
                        }
                    },
                    clearMarker: function() {
                        const graphic = this.graphic;
                        const topMarker = graphic && graphic.topMarker;
                        const bottomMarker = graphic && graphic.bottomMarker;
                        const emptySettings = this._emptySettings;
                        topMarker && topMarker.attr(emptySettings);
                        bottomMarker && bottomMarker.attr(emptySettings)
                    },
                    _getLabelPosition: function(markerType) {
                        let position;
                        const labelsInside = "inside" === this._options.label.position;
                        if (!this._options.rotated) {
                            position = "top" === markerType ^ labelsInside ? "top" : "bottom"
                        } else {
                            position = "top" === markerType ^ labelsInside ? "right" : "left"
                        }
                        return position
                    },
                    _getLabelMinFormatObject: function() {
                        return {
                            index: 0,
                            argument: this.initialArgument,
                            value: this.initialMinValue,
                            seriesName: this.series.name,
                            originalValue: this.originalMinValue,
                            originalArgument: this.originalArgument,
                            point: this
                        }
                    },
                    _updateLabelData: function() {
                        const maxFormatObject = this._getLabelFormatObject();
                        maxFormatObject.index = 1;
                        this._topLabel.setData(maxFormatObject);
                        this._bottomLabel.setData(this._getLabelMinFormatObject())
                    },
                    _updateLabelOptions: function() {
                        const options = this._options.label;
                        (!this._topLabel || !this._bottomLabel) && this._createLabel();
                        this._topLabel.setOptions(options);
                        this._bottomLabel.setOptions(options)
                    },
                    _createLabel: function() {
                        const options = {
                            renderer: this.series._renderer,
                            labelsGroup: this.series._labelsGroup,
                            point: this
                        };
                        this._topLabel = new _label.Label(options);
                        this._bottomLabel = new _label.Label(options)
                    },
                    _getGraphicBBox: function(location) {
                        const options = this._options;
                        const images = this._getImage(options.image);
                        const image = "top" === location ? this._checkImage(images.top) : this._checkImage(images.bottom);
                        let bBox;
                        const coord = this._getPositionFromLocation(location);
                        if (options.visible) {
                            bBox = image ? this._getImageBBox(coord.x, coord.y) : this._getSymbolBBox(coord.x, coord.y, options.styles.normal.r)
                        } else {
                            bBox = {
                                x: coord.x,
                                y: coord.y,
                                width: 0,
                                height: 0
                            }
                        }
                        return bBox
                    },
                    _getPositionFromLocation: function(location) {
                        let x;
                        let y;
                        const isTop = "top" === location;
                        if (!this._options.rotated) {
                            x = this.x;
                            y = isTop ? _min(this.y, this.minY) : _max(this.y, this.minY)
                        } else {
                            x = isTop ? _max(this.x, this.minX) : _min(this.x, this.minX);
                            y = this.y
                        }
                        return {
                            x: x,
                            y: y
                        }
                    },
                    _checkOverlay: function(bottomCoord, topCoord, topValue) {
                        return bottomCoord < topCoord + topValue
                    },
                    _getOverlayCorrections: function(topCoords, bottomCoords) {
                        const rotated = this._options.rotated;
                        const coordSelector = !rotated ? "y" : "x";
                        const valueSelector = !rotated ? "height" : "width";
                        const visibleArea = this.series.getValueAxis().getVisibleArea();
                        const minBound = visibleArea[0];
                        const maxBound = visibleArea[1];
                        let delta = _round((topCoords[coordSelector] + topCoords[valueSelector] - bottomCoords[coordSelector]) / 2);
                        let coord1 = topCoords[coordSelector] - delta;
                        let coord2 = bottomCoords[coordSelector] + delta;
                        if (coord1 < minBound) {
                            delta = minBound - coord1;
                            coord1 += delta;
                            coord2 += delta
                        } else if (coord2 + bottomCoords[valueSelector] > maxBound) {
                            delta = maxBound - coord2 - bottomCoords[valueSelector];
                            coord1 += delta;
                            coord2 += delta
                        }
                        return {
                            coord1: coord1,
                            coord2: coord2
                        }
                    },
                    _checkLabelsOverlay: function(topLocation) {
                        const that = this;
                        const topCoords = that._topLabel.getBoundingRect();
                        const bottomCoords = that._bottomLabel.getBoundingRect();
                        let corrections = {};
                        if (!that._options.rotated) {
                            if ("top" === topLocation) {
                                if (this._checkOverlay(bottomCoords.y, topCoords.y, topCoords.height)) {
                                    corrections = this._getOverlayCorrections(topCoords, bottomCoords);
                                    that._topLabel.shift(topCoords.x, corrections.coord1);
                                    that._bottomLabel.shift(bottomCoords.x, corrections.coord2)
                                }
                            } else if (this._checkOverlay(topCoords.y, bottomCoords.y, bottomCoords.height)) {
                                corrections = this._getOverlayCorrections(bottomCoords, topCoords);
                                that._topLabel.shift(topCoords.x, corrections.coord2);
                                that._bottomLabel.shift(bottomCoords.x, corrections.coord1)
                            }
                        } else if ("top" === topLocation) {
                            if (this._checkOverlay(topCoords.x, bottomCoords.x, bottomCoords.width)) {
                                corrections = this._getOverlayCorrections(bottomCoords, topCoords);
                                that._topLabel.shift(corrections.coord2, topCoords.y);
                                that._bottomLabel.shift(corrections.coord1, bottomCoords.y)
                            }
                        } else if (this._checkOverlay(bottomCoords.x, topCoords.x, topCoords.width)) {
                            corrections = this._getOverlayCorrections(topCoords, bottomCoords);
                            that._topLabel.shift(corrections.coord1, topCoords.y);
                            that._bottomLabel.shift(corrections.coord2, bottomCoords.y)
                        }
                    },
                    _drawLabel: function() {
                        const that = this;
                        const labels = [];
                        const notInverted = that._options.rotated ? that.x >= that.minX : that.y < that.minY;
                        const customVisibility = that._getCustomLabelVisibility();
                        const topLabel = that._topLabel;
                        const bottomLabel = that._bottomLabel;
                        topLabel.pointPosition = notInverted ? "top" : "bottom";
                        bottomLabel.pointPosition = notInverted ? "bottom" : "top";
                        if ((that.series.getLabelVisibility() || customVisibility) && that.hasValue() && false !== customVisibility) {
                            false !== that.visibleTopMarker && labels.push(topLabel);
                            false !== that.visibleBottomMarker && labels.push(bottomLabel);
                            (0, _iterator.each)(labels, (function(_, label) {
                                label.draw(true)
                            }));
                            that._checkLabelsOverlay(that._topLabel.pointPosition)
                        } else {
                            topLabel.draw(false);
                            bottomLabel.draw(false)
                        }
                    },
                    _getImage: function(imageOption) {
                        const image = {};
                        if ((0, _type.isDefined)(imageOption)) {
                            if ("string" === typeof imageOption) {
                                image.top = image.bottom = imageOption
                            } else {
                                image.top = {
                                    url: "string" === typeof imageOption.url ? imageOption.url : imageOption.url && imageOption.url.rangeMaxPoint,
                                    width: "number" === typeof imageOption.width ? imageOption.width : imageOption.width && imageOption.width.rangeMaxPoint,
                                    height: "number" === typeof imageOption.height ? imageOption.height : imageOption.height && imageOption.height.rangeMaxPoint
                                };
                                image.bottom = {
                                    url: "string" === typeof imageOption.url ? imageOption.url : imageOption.url && imageOption.url.rangeMinPoint,
                                    width: "number" === typeof imageOption.width ? imageOption.width : imageOption.width && imageOption.width.rangeMinPoint,
                                    height: "number" === typeof imageOption.height ? imageOption.height : imageOption.height && imageOption.height.rangeMinPoint
                                }
                            }
                        }
                        return image
                    },
                    _checkSymbol: function(oldOptions, newOptions) {
                        const oldSymbol = oldOptions.symbol;
                        const newSymbol = newOptions.symbol;
                        const symbolChanged = "circle" === oldSymbol && "circle" !== newSymbol || "circle" !== oldSymbol && "circle" === newSymbol;
                        const oldImages = this._getImage(oldOptions.image);
                        const newImages = this._getImage(newOptions.image);
                        const topImageChanged = this._checkImage(oldImages.top) !== this._checkImage(newImages.top);
                        const bottomImageChanged = this._checkImage(oldImages.bottom) !== this._checkImage(newImages.bottom);
                        return symbolChanged || topImageChanged || bottomImageChanged
                    },
                    _getSettingsForTwoMarkers: function(style) {
                        const options = this._options;
                        const settings = {};
                        const x = options.rotated ? _min(this.x, this.minX) : this.x;
                        const y = options.rotated ? this.y : _min(this.y, this.minY);
                        const radius = style.r;
                        const points = this._populatePointShape(options.symbol, radius);
                        settings.top = _extend({
                            translateX: x + this.width,
                            translateY: y,
                            r: radius
                        }, style);
                        settings.bottom = _extend({
                            translateX: x,
                            translateY: y + this.height,
                            r: radius
                        }, style);
                        if (points) {
                            settings.top.points = settings.bottom.points = points
                        }
                        return settings
                    },
                    _hasGraphic: function() {
                        return this.graphic && this.graphic.topMarker && this.graphic.bottomMarker
                    },
                    _drawOneMarker: function(renderer, markerType, imageSettings, settings) {
                        const that = this;
                        const graphic = that.graphic;
                        if (graphic[markerType]) {
                            that._updateOneMarker(markerType, settings)
                        } else {
                            graphic[markerType] = that._createMarker(renderer, graphic, imageSettings, settings)
                        }
                    },
                    _drawMarker: function(renderer, group, animationEnabled, firstDrawing, style) {
                        const that = this;
                        const settings = that._getSettingsForTwoMarkers(style || that._getStyle());
                        const image = that._getImage(that._options.image);
                        if (that._checkImage(image.top)) {
                            settings.top = that._getImageSettings(settings.top, image.top)
                        }
                        if (that._checkImage(image.bottom)) {
                            settings.bottom = that._getImageSettings(settings.bottom, image.bottom)
                        }
                        that.graphic = that.graphic || renderer.g().append(group);
                        that.visibleTopMarker && that._drawOneMarker(renderer, "topMarker", image.top, settings.top);
                        that.visibleBottomMarker && that._drawOneMarker(renderer, "bottomMarker", image.bottom, settings.bottom)
                    },
                    _getSettingsForTracker: function(radius) {
                        const rotated = this._options.rotated;
                        return {
                            translateX: rotated ? _min(this.x, this.minX) - radius : this.x - radius,
                            translateY: rotated ? this.y - radius : _min(this.y, this.minY) - radius,
                            width: this.width + 2 * radius,
                            height: this.height + 2 * radius
                        }
                    },
                    isInVisibleArea: function() {
                        const rotated = this._options.rotated;
                        const argument = !rotated ? this.x : this.y;
                        const maxValue = !rotated ? _max(this.minY, this.y) : _max(this.minX, this.x);
                        const minValue = !rotated ? _min(this.minY, this.y) : _min(this.minX, this.x);
                        let tmp;
                        let visibleTopMarker;
                        let visibleBottomMarker;
                        let visibleRangeArea = true;
                        const visibleArgArea = this.series.getArgumentAxis().getVisibleArea();
                        const visibleValArea = this.series.getValueAxis().getVisibleArea();
                        const notVisibleByArg = visibleArgArea[1] < argument || visibleArgArea[0] > argument;
                        const notVisibleByVal = visibleValArea[0] > minValue && visibleValArea[0] > maxValue || visibleValArea[1] < minValue && visibleValArea[1] < maxValue;
                        if (notVisibleByArg || notVisibleByVal) {
                            visibleTopMarker = visibleBottomMarker = visibleRangeArea = false
                        } else {
                            visibleTopMarker = visibleValArea[0] <= minValue && visibleValArea[1] > minValue;
                            visibleBottomMarker = visibleValArea[0] < maxValue && visibleValArea[1] >= maxValue;
                            if (rotated) {
                                tmp = visibleTopMarker;
                                visibleTopMarker = visibleBottomMarker;
                                visibleBottomMarker = tmp
                            }
                        }
                        this.visibleTopMarker = visibleTopMarker;
                        this.visibleBottomMarker = visibleBottomMarker;
                        return visibleRangeArea
                    },
                    getTooltipParams: function() {
                        const that = this;
                        let x;
                        let y;
                        const rotated = that._options.rotated;
                        const minValue = !rotated ? _min(that.y, that.minY) : _min(that.x, that.minX);
                        const side = !rotated ? "height" : "width";
                        const visibleArea = that._getVisibleArea();
                        const minVisible = rotated ? visibleArea.minX : visibleArea.minY;
                        const maxVisible = rotated ? visibleArea.maxX : visibleArea.maxY;
                        const min = _max(minVisible, minValue);
                        const max = _min(maxVisible, minValue + that[side]);
                        if (!rotated) {
                            x = that.x;
                            y = min + (max - min) / 2
                        } else {
                            y = that.y;
                            x = min + (max - min) / 2
                        }
                        return {
                            x: x,
                            y: y,
                            offset: 0
                        }
                    },
                    _translate: function() {
                        const rotated = this._options.rotated;
                        _symbol_point.default._translate.call(this);
                        this.height = rotated ? 0 : _abs(this.minY - this.y);
                        this.width = rotated ? _abs(this.x - this.minX) : 0
                    },
                    hasCoords: function() {
                        return _symbol_point.default.hasCoords.call(this) && !(null === this.minX || null === this.minY)
                    },
                    _updateData: function(data) {
                        _symbol_point.default._updateData.call(this, data);
                        this.minValue = this.initialMinValue = this.originalMinValue = data.minValue
                    },
                    _getImageSettings: function(settings, image) {
                        return {
                            href: image.url || image.toString(),
                            width: image.width || 20,
                            height: image.height || 20,
                            translateX: settings.translateX,
                            translateY: settings.translateY
                        }
                    },
                    getCrosshairData: function(x, y) {
                        const rotated = this._options.rotated;
                        const minX = this.minX;
                        const minY = this.minY;
                        const vx = this.vx;
                        const vy = this.vy;
                        const value = this.value;
                        const minValue = this.minValue;
                        const argument = this.argument;
                        const coords = {
                            axis: this.series.axis,
                            x: vx,
                            y: vy,
                            yValue: value,
                            xValue: argument
                        };
                        if (rotated) {
                            coords.yValue = argument;
                            if (_abs(vx - x) < _abs(minX - x)) {
                                coords.xValue = value
                            } else {
                                coords.x = minX;
                                coords.xValue = minValue
                            }
                        } else if (_abs(vy - y) >= _abs(minY - y)) {
                            coords.y = minY;
                            coords.yValue = minValue
                        }
                        return coords
                    },
                    _updateOneMarker: function(markerType, settings) {
                        this.graphic && this.graphic[markerType] && this.graphic[markerType].attr(settings)
                    },
                    _updateMarker: function(animationEnabled, style) {
                        this._drawMarker(void 0, void 0, false, false, style)
                    },
                    _getFormatObject: function(tooltip) {
                        const initialMinValue = this.initialMinValue;
                        const initialValue = this.initialValue;
                        const initialArgument = this.initialArgument;
                        const minValue = tooltip.formatValue(initialMinValue);
                        const value = tooltip.formatValue(initialValue);
                        return {
                            argument: initialArgument,
                            argumentText: tooltip.formatValue(initialArgument, "argument"),
                            valueText: minValue + " - " + value,
                            rangeValue1Text: minValue,
                            rangeValue2Text: value,
                            rangeValue1: initialMinValue,
                            rangeValue2: initialValue,
                            seriesName: this.series.name,
                            point: this,
                            originalMinValue: this.originalMinValue,
                            originalValue: this.originalValue,
                            originalArgument: this.originalArgument
                        }
                    },
                    getLabel: function() {
                        return [this._topLabel, this._bottomLabel]
                    },
                    getLabels: function() {
                        return [this._topLabel, this._bottomLabel]
                    },
                    getBoundingRect: _common.noop,
                    coordsIn: function(x, y) {
                        const trackerRadius = this._storeTrackerR();
                        const xCond = x >= this.x - trackerRadius && x <= this.x + trackerRadius;
                        const yCond = y >= this.y - trackerRadius && y <= this.y + trackerRadius;
                        if (this._options.rotated) {
                            return yCond && (xCond || x >= this.minX - trackerRadius && x <= this.minX + trackerRadius)
                        } else {
                            return xCond && (yCond || y >= this.minY - trackerRadius && y <= this.minY + trackerRadius)
                        }
                    },
                    getMaxValue: function() {
                        if ("discrete" !== this.series.valueAxisType) {
                            return this.minValue > this.value ? this.minValue : this.value
                        }
                        return this.value
                    },
                    getMinValue: function() {
                        if ("discrete" !== this.series.valueAxisType) {
                            return this.minValue < this.value ? this.minValue : this.value
                        }
                        return this.minValue
                    }
                });
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        14185:
            /*!******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/series/points/stock_point.js ***!
              \******************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _extend2 = __webpack_require__( /*! ../../../core/utils/extend */ 52576);
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528);
                var _candlestick_point = (e = __webpack_require__( /*! ./candlestick_point */ 95208), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                const _extend = _extend2.extend;
                const _isNumeric = _type.isNumeric;
                exports.default = _extend({}, _candlestick_point.default, {
                    _getPoints: function() {
                        const createPoint = this._options.rotated ? function(x, y) {
                            return [y, x]
                        } : function(x, y) {
                            return [x, y]
                        };
                        const openYExist = _isNumeric(this.openY);
                        const closeYExist = _isNumeric(this.closeY);
                        const x = this.x;
                        const width = this.width;
                        let points = [].concat(createPoint(x, this.highY));
                        openYExist && (points = points.concat(createPoint(x, this.openY)));
                        openYExist && (points = points.concat(createPoint(x - width / 2, this.openY)));
                        openYExist && (points = points.concat(createPoint(x, this.openY)));
                        closeYExist && (points = points.concat(createPoint(x, this.closeY)));
                        closeYExist && (points = points.concat(createPoint(x + width / 2, this.closeY)));
                        closeYExist && (points = points.concat(createPoint(x, this.closeY)));
                        points = points.concat(createPoint(x, this.lowY));
                        return points
                    },
                    _drawMarkerInGroup: function(group, attributes, renderer) {
                        this.graphic = renderer.path(this._getPoints(), "line").attr({
                            "stroke-linecap": "square"
                        }).attr(attributes).data({
                            "chart-data-point": this
                        }).sharp().append(group)
                    },
                    _getMinTrackerWidth: function() {
                        const width = 2 + this._styles.normal["stroke-width"];
                        return width + width % 2
                    }
                });
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        27589:
            /*!*******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/series/points/symbol_point.js ***!
              \*******************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _extend2 = __webpack_require__( /*! ../../../core/utils/extend */ 52576);
                var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 21274);
                var _common = __webpack_require__( /*! ../../../core/utils/common */ 17781);
                var _window = __webpack_require__( /*! ../../../core/utils/window */ 3104);
                var _label = __webpack_require__( /*! ./label */ 70576);
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 11528);
                var _utils = __webpack_require__( /*! ../../core/utils */ 28779);
                const window = (0, _window.getWindow)();
                const _extend = _extend2.extend;
                const _math = Math;
                const _round = _math.round;
                const _floor = _math.floor;
                const _ceil = _math.ceil;
                exports.default = {
                    deleteLabel: function() {
                        this._label.dispose();
                        this._label = null
                    },
                    _hasGraphic: function() {
                        return this.graphic
                    },
                    clearVisibility: function() {
                        const graphic = this.graphic;
                        if (graphic && graphic.attr("visibility")) {
                            graphic.attr({
                                visibility: null
                            })
                        }
                    },
                    isVisible: function() {
                        return this.inVisibleArea && this.series.isVisible()
                    },
                    setInvisibility: function() {
                        const graphic = this.graphic;
                        if (graphic && "hidden" !== graphic.attr("visibility")) {
                            graphic.attr({
                                visibility: "hidden"
                            })
                        }
                        this._errorBar && this._errorBar.attr({
                            visibility: "hidden"
                        });
                        this._label.draw(false)
                    },
                    clearMarker: function() {
                        const graphic = this.graphic;
                        graphic && graphic.attr(this._emptySettings)
                    },
                    _createLabel: function() {
                        this._label = new _label.Label({
                            renderer: this.series._renderer,
                            labelsGroup: this.series._labelsGroup,
                            point: this
                        })
                    },
                    _calculateVisibility: function(x, y) {
                        const {
                            minX: minX,
                            maxX: maxX,
                            minY: minY,
                            maxY: maxY
                        } = this._getVisibleArea();
                        this.inVisibleArea = minX <= x && maxX >= x && minY <= y && maxY >= y
                    },
                    _updateLabelData: function() {
                        this._label.setData(this._getLabelFormatObject())
                    },
                    _updateLabelOptions: function() {
                        !this._label && this._createLabel();
                        this._label.setOptions(this._options.label)
                    },
                    _checkImage: function(image) {
                        return (0, _type.isDefined)(image) && ("string" === typeof image || (0, _type.isDefined)(image.url))
                    },
                    _fillStyle: function() {
                        this._styles = this._options.styles
                    },
                    _checkSymbol: function(oldOptions, newOptions) {
                        const oldSymbol = oldOptions.symbol;
                        const newSymbol = newOptions.symbol;
                        const symbolChanged = "circle" === oldSymbol && "circle" !== newSymbol || "circle" !== oldSymbol && "circle" === newSymbol;
                        const imageChanged = this._checkImage(oldOptions.image) !== this._checkImage(newOptions.image);
                        return !!(symbolChanged || imageChanged)
                    },
                    _populatePointShape: function(symbol, radius) {
                        switch (symbol) {
                            case "square":
                                return function(radius) {
                                    return [-radius, -radius, radius, -radius, radius, radius, -radius, radius, -radius, -radius]
                                }(radius);
                            case "polygon":
                                return function(radius) {
                                    const r = _ceil(radius);
                                    return [-r, 0, 0, -r, r, 0, 0, r, -r, 0]
                                }(radius);
                            case "triangle":
                            case "triangleDown":
                                return function(radius) {
                                    return [-radius, -radius, radius, -radius, 0, radius, -radius, -radius]
                                }(radius);
                            case "triangleUp":
                                return function(radius) {
                                    return [-radius, radius, radius, radius, 0, -radius, -radius, radius]
                                }(radius);
                            case "cross":
                                return function(radius) {
                                    const r = _ceil(radius);
                                    const floorHalfRadius = _floor(r / 2);
                                    const ceilHalfRadius = _ceil(r / 2);
                                    return [-r, -floorHalfRadius, -floorHalfRadius, -r, 0, -ceilHalfRadius, floorHalfRadius, -r, r, -floorHalfRadius, ceilHalfRadius, 0, r, floorHalfRadius, floorHalfRadius, r, 0, ceilHalfRadius, -floorHalfRadius, r, -r, floorHalfRadius, -ceilHalfRadius, 0]
                                }(radius)
                        }
                    },
                    hasCoords: function() {
                        return null !== this.x && null !== this.y
                    },
                    correctValue: function(correction) {
                        const that = this;
                        const axis = that.series.getValueAxis();
                        if (that.hasValue()) {
                            that.value = that.properValue = axis.validateUnit(that.initialValue.valueOf() + correction.valueOf());
                            that.minValue = axis.validateUnit(correction)
                        }
                    },
                    resetCorrection: function() {
                        this.value = this.properValue = this.initialValue;
                        this.minValue = "canvas_position_default"
                    },
                    resetValue: function() {
                        const that = this;
                        if (that.hasValue()) {
                            that.value = that.properValue = that.initialValue = 0;
                            that.minValue = 0;
                            that._label.setDataField("value", that.value)
                        }
                    },
                    _getTranslates: function(animationEnabled) {
                        let translateX = this.x;
                        let translateY = this.y;
                        if (animationEnabled) {
                            if (this._options.rotated) {
                                translateX = this.defaultX
                            } else {
                                translateY = this.defaultY
                            }
                        }
                        return {
                            x: translateX,
                            y: translateY
                        }
                    },
                    _createImageMarker: function(renderer, settings, options) {
                        const width = options.width || 20;
                        const height = options.height || 20;
                        return renderer.image(-_round(.5 * width), -_round(.5 * height), width, height, options.url ? options.url.toString() : options.toString(), "center").attr({
                            translateX: settings.translateX,
                            translateY: settings.translateY,
                            visibility: settings.visibility
                        })
                    },
                    _createSymbolMarker: function(renderer, pointSettings) {
                        let marker;
                        const symbol = this._options.symbol;
                        if ("circle" === symbol) {
                            delete pointSettings.points;
                            marker = renderer.circle().attr(pointSettings)
                        } else if ("square" === symbol || "polygon" === symbol || "triangle" === symbol || "triangleDown" === symbol || "triangleUp" === symbol || "cross" === symbol) {
                            marker = renderer.path([], "area").attr(pointSettings).sharp()
                        }
                        return marker
                    },
                    _createMarker: function(renderer, group, image, settings) {
                        const that = this;
                        const marker = that._checkImage(image) ? that._createImageMarker(renderer, settings, image) : that._createSymbolMarker(renderer, settings);
                        if (marker) {
                            marker.data({
                                "chart-data-point": that
                            }).append(group)
                        }
                        return marker
                    },
                    _getSymbolBBox: function(x, y, r) {
                        return {
                            x: x - r,
                            y: y - r,
                            width: 2 * r,
                            height: 2 * r
                        }
                    },
                    _getImageBBox: function(x, y) {
                        const image = this._options.image;
                        const width = image.width || 20;
                        const height = image.height || 20;
                        return {
                            x: x - _round(width / 2),
                            y: y - _round(height / 2),
                            width: width,
                            height: height
                        }
                    },
                    _getGraphicBBox: function() {
                        const that = this;
                        const options = that._options;
                        const x = that.x;
                        const y = that.y;
                        let bBox;
                        if (options.visible) {
                            bBox = that._checkImage(options.image) ? that._getImageBBox(x, y) : that._getSymbolBBox(x, y, options.styles.normal.r)
                        } else {
                            bBox = {
                                x: x,
                                y: y,
                                width: 0,
                                height: 0
                            }
                        }
                        return bBox
                    },
                    hideInsideLabel: _common.noop,
                    _getShiftLabelCoords: function(label) {
                        const coord = this._addLabelAlignmentAndOffset(label, this._getLabelCoords(label));
                        return this._checkLabelPosition(label, coord)
                    },
                    _drawLabel: function() {
                        const customVisibility = this._getCustomLabelVisibility();
                        const label = this._label;
                        const isVisible = this._showForZeroValues() && this.hasValue() && false !== customVisibility && (this.series.getLabelVisibility() || customVisibility);
                        label.draw(!!isVisible)
                    },
                    correctLabelPosition: function(label) {
                        const that = this;
                        const coord = that._getShiftLabelCoords(label);
                        if (!that.hideInsideLabel(label, coord)) {
                            label.setFigureToDrawConnector(that._getLabelConnector(label.pointPosition));
                            label.shift(_round(coord.x), _round(coord.y))
                        }
                    },
                    _showForZeroValues: function() {
                        return true
                    },
                    _getLabelConnector: function(pointPosition) {
                        const bBox = this._getGraphicBBox(pointPosition);
                        const w2 = bBox.width / 2;
                        const h2 = bBox.height / 2;
                        return {
                            x: bBox.x + w2,
                            y: bBox.y + h2,
                            r: this._options.visible ? Math.max(w2, h2) : 0
                        }
                    },
                    _getPositionFromLocation: function() {
                        return {
                            x: this.x,
                            y: this.y
                        }
                    },
                    _isPointInVisibleArea: function(visibleArea, graphicBBox) {
                        return visibleArea.minX <= graphicBBox.x + graphicBBox.width && visibleArea.maxX >= graphicBBox.x && visibleArea.minY <= graphicBBox.y + graphicBBox.height && visibleArea.maxY >= graphicBBox.y
                    },
                    _checkLabelPosition: function(label, coord) {
                        const that = this;
                        const visibleArea = that._getVisibleArea();
                        const labelBBox = label.getBoundingRect();
                        const graphicBBox = that._getGraphicBBox(label.pointPosition);
                        const fullGraphicBBox = that._getGraphicBBox();
                        const isInside = "inside" === label.getLayoutOptions().position;
                        if (that._isPointInVisibleArea(visibleArea, fullGraphicBBox)) {
                            if (!that._options.rotated) {
                                if (visibleArea.minX > coord.x) {
                                    coord.x = visibleArea.minX
                                }
                                if (visibleArea.maxX < coord.x + labelBBox.width) {
                                    coord.x = visibleArea.maxX - labelBBox.width
                                }
                                if (visibleArea.minY > coord.y) {
                                    coord.y = isInside ? visibleArea.minY : graphicBBox.y + graphicBBox.height + 10
                                }
                                if (visibleArea.maxY < coord.y + labelBBox.height) {
                                    coord.y = isInside ? visibleArea.maxY - labelBBox.height : graphicBBox.y - labelBBox.height - 10
                                }
                            } else {
                                if (visibleArea.minX > coord.x) {
                                    coord.x = isInside ? visibleArea.minX : graphicBBox.x + graphicBBox.width + 10
                                }
                                if (visibleArea.maxX < coord.x + labelBBox.width) {
                                    coord.x = isInside ? visibleArea.maxX - labelBBox.width : graphicBBox.x - 10 - labelBBox.width
                                }
                                if (visibleArea.minY > coord.y) {
                                    coord.y = visibleArea.minY
                                }
                                if (visibleArea.maxY < coord.y + labelBBox.height) {
                                    coord.y = visibleArea.maxY - labelBBox.height
                                }
                            }
                        }
                        return coord
                    },
                    _addLabelAlignmentAndOffset: function(label, coord) {
                        const labelBBox = label.getBoundingRect();
                        const labelOptions = label.getLayoutOptions();
                        if (!this._options.rotated) {
                            if ("left" === labelOptions.alignment) {
                                coord.x += labelBBox.width / 2
                            } else if ("right" === labelOptions.alignment) {
                                coord.x -= labelBBox.width / 2
                            }
                        }
                        coord.x += labelOptions.horizontalOffset;
                        coord.y += labelOptions.verticalOffset;
                        return coord
                    },
                    _getLabelCoords: function(label) {
                        return this._getLabelCoordOfPosition(label, this._getLabelPosition(label.pointPosition))
                    },
                    _getLabelCoordOfPosition: function(label, position) {
                        const labelBBox = label.getBoundingRect();
                        const graphicBBox = this._getGraphicBBox(label.pointPosition);
                        const centerY = graphicBBox.height / 2 - labelBBox.height / 2;
                        const centerX = graphicBBox.width / 2 - labelBBox.width / 2;
                        let x = graphicBBox.x;
                        let y = graphicBBox.y;
                        switch (position) {
                            case "left":
                                x -= labelBBox.width + 10;
                                y += centerY;
                                break;
                            case "right":
                                x += graphicBBox.width + 10;
                                y += centerY;
                                break;
                            case "top":
                                x += centerX;
                                y -= labelBBox.height + 10;
                                break;
                            case "bottom":
                                x += centerX;
                                y += graphicBBox.height + 10;
                                break;
                            case "inside":
                                x += centerX;
                                y += centerY
                        }
                        return {
                            x: x,
                            y: y
                        }
                    },
                    _drawMarker: function(renderer, group, animationEnabled) {
                        const options = this._options;
                        const translates = this._getTranslates(animationEnabled);
                        const style = this._getStyle();
                        this.graphic = this._createMarker(renderer, group, options.image, _extend({
                            translateX: translates.x,
                            translateY: translates.y,
                            points: this._populatePointShape(options.symbol, style.r)
                        }, style))
                    },
                    _getErrorBarSettings: function() {
                        return {
                            visibility: "visible"
                        }
                    },
                    _getErrorBarBaseEdgeLength() {
                        return 2 * this.getPointRadius()
                    },
                    _drawErrorBar: function(renderer, group) {
                        if (!this._options.errorBars) {
                            return
                        }
                        const that = this;
                        const options = that._options;
                        const errorBarOptions = options.errorBars;
                        const points = [];
                        let settings;
                        const pos = that._errorBarPos;
                        let high = that._highErrorCoord;
                        let low = that._lowErrorCoord;
                        const displayMode = (0, _utils.normalizeEnum)(errorBarOptions.displayMode);
                        const isHighDisplayMode = "high" === displayMode;
                        const isLowDisplayMode = "low" === displayMode;
                        const highErrorOnly = (isHighDisplayMode || !(0, _type.isDefined)(low)) && (0, _type.isDefined)(high) && !isLowDisplayMode;
                        const lowErrorOnly = (isLowDisplayMode || !(0, _type.isDefined)(high)) && (0, _type.isDefined)(low) && !isHighDisplayMode;
                        let edgeLength = errorBarOptions.edgeLength;
                        if (edgeLength <= 1 && edgeLength > 0) {
                            edgeLength = this._getErrorBarBaseEdgeLength() * errorBarOptions.edgeLength
                        }
                        edgeLength = _floor(parseInt(edgeLength) / 2);
                        highErrorOnly && (low = that._baseErrorBarPos);
                        lowErrorOnly && (high = that._baseErrorBarPos);
                        if ("none" !== displayMode && (0, _type.isDefined)(high) && (0, _type.isDefined)(low) && (0, _type.isDefined)(pos)) {
                            !lowErrorOnly && points.push([pos - edgeLength, high, pos + edgeLength, high]);
                            points.push([pos, high, pos, low]);
                            !highErrorOnly && points.push([pos + edgeLength, low, pos - edgeLength, low]);
                            options.rotated && (0, _iterator.each)(points, (function(_, p) {
                                p.reverse()
                            }));
                            settings = that._getErrorBarSettings(errorBarOptions);
                            if (!that._errorBar) {
                                that._errorBar = renderer.path(points, "line").attr(settings).append(group)
                            } else {
                                settings.points = points;
                                that._errorBar.attr(settings)
                            }
                        } else {
                            that._errorBar && that._errorBar.attr({
                                visibility: "hidden"
                            })
                        }
                    },
                    getTooltipParams: function() {
                        const graphic = this.graphic;
                        return {
                            x: this.x,
                            y: this.y,
                            offset: graphic ? graphic.getBBox().height / 2 : 0
                        }
                    },
                    setPercentValue: function(absTotal, total, leftHoleTotal, rightHoleTotal) {
                        const that = this;
                        const valuePercent = that.value / absTotal || 0;
                        const minValuePercent = that.minValue / absTotal || 0;
                        const percent = valuePercent - minValuePercent;
                        that._label.setDataField("percent", percent);
                        that._label.setDataField("total", total);
                        if (that.series.isFullStackedSeries() && that.hasValue()) {
                            if (that.leftHole) {
                                that.leftHole /= absTotal - leftHoleTotal;
                                that.minLeftHole /= absTotal - leftHoleTotal
                            }
                            if (that.rightHole) {
                                that.rightHole /= absTotal - rightHoleTotal;
                                that.minRightHole /= absTotal - rightHoleTotal
                            }
                            that.value = that.properValue = valuePercent;
                            that.minValue = !minValuePercent ? that.minValue : minValuePercent
                        }
                    },
                    _storeTrackerR: function() {
                        let navigator = window.navigator;
                        const r = this._options.styles.normal.r;
                        const minTrackerSize = (0, _window.hasProperty)("ontouchstart") || navigator.msPointerEnabled && navigator.msMaxTouchPoints || navigator.pointerEnabled && navigator.maxTouchPoints ? 20 : 6;
                        this._options.trackerR = r < minTrackerSize ? minTrackerSize : r;
                        return this._options.trackerR
                    },
                    _translateErrorBars: function() {
                        const options = this._options;
                        const rotated = options.rotated;
                        const errorBars = options.errorBars;
                        const translator = this._getValTranslator();
                        if (!errorBars) {
                            return
                        }(0, _type.isDefined)(this.lowError) && (this._lowErrorCoord = translator.translate(this.lowError));
                        (0, _type.isDefined)(this.highError) && (this._highErrorCoord = translator.translate(this.highError));
                        this._errorBarPos = _floor(rotated ? this.vy : this.vx);
                        this._baseErrorBarPos = "stdDeviation" === errorBars.type ? this._lowErrorCoord + (this._highErrorCoord - this._lowErrorCoord) / 2 : rotated ? this.vx : this.vy
                    },
                    _translate: function() {
                        const that = this;
                        const valTranslator = that._getValTranslator();
                        const argTranslator = that._getArgTranslator();
                        if (that._options.rotated) {
                            that.vx = that.x = valTranslator.translate(that.value, void 0, true);
                            that.vy = that.y = argTranslator.translate(that.argument, void 0, true);
                            that.minX = valTranslator.translate(that.minValue, void 0, true);
                            that.defaultX = valTranslator.translate("canvas_position_default")
                        } else {
                            that.vy = that.y = valTranslator.translate(that.value, void 0, true);
                            that.vx = that.x = argTranslator.translate(that.argument, void 0, true);
                            that.minY = valTranslator.translate(that.minValue, void 0, true);
                            that.defaultY = valTranslator.translate("canvas_position_default")
                        }
                        that._translateErrorBars();
                        that._calculateVisibility(that.x, that.y)
                    },
                    _updateData: function(data) {
                        this.value = this.properValue = this.initialValue = this.originalValue = data.value;
                        this.minValue = this.initialMinValue = this.originalMinValue = (0, _type.isDefined)(data.minValue) ? data.minValue : "canvas_position_default"
                    },
                    _getImageSettings: function(image) {
                        return {
                            href: image.url || image.toString(),
                            width: image.width || 20,
                            height: image.height || 20
                        }
                    },
                    getCrosshairData: function() {
                        const r = this._options.rotated;
                        const value = this.properValue;
                        const argument = this.argument;
                        return {
                            x: this.vx,
                            y: this.vy,
                            xValue: r ? value : argument,
                            yValue: r ? argument : value,
                            axis: this.series.axis
                        }
                    },
                    getPointRadius: function() {
                        const style = this._getStyle();
                        const options = this._options;
                        const r = style.r;
                        let extraSpace;
                        const symbol = options.symbol;
                        const isSquare = "square" === symbol;
                        const isTriangle = "triangle" === symbol || "triangleDown" === symbol || "triangleUp" === symbol;
                        if (options.visible && !options.image && r) {
                            extraSpace = style["stroke-width"] / 2;
                            return (isSquare || isTriangle ? 1.4 * r : r) + extraSpace
                        }
                        return 0
                    },
                    _updateMarker: function(animationEnabled, style) {
                        const that = this;
                        const options = that._options;
                        let settings;
                        const image = options.image;
                        const visibility = !that.isVisible() ? {
                            visibility: "hidden"
                        } : {};
                        if (that._checkImage(image)) {
                            settings = _extend({}, {
                                visibility: style.visibility
                            }, visibility, that._getImageSettings(image))
                        } else {
                            settings = _extend({}, style, visibility, {
                                points: that._populatePointShape(options.symbol, style.r)
                            })
                        }
                        if (!animationEnabled) {
                            settings.translateX = that.x;
                            settings.translateY = that.y
                        }
                        that.graphic.attr(settings).sharp()
                    },
                    _getLabelFormatObject: function() {
                        return {
                            argument: this.initialArgument,
                            value: this.initialValue,
                            originalArgument: this.originalArgument,
                            originalValue: this.originalValue,
                            seriesName: this.series.name,
                            lowErrorValue: this.lowError,
                            highErrorValue: this.highError,
                            point: this
                        }
                    },
                    _getLabelPosition: function() {
                        const rotated = this._options.rotated;
                        if (this.initialValue > 0) {
                            return rotated ? "right" : "top"
                        } else {
                            return rotated ? "left" : "bottom"
                        }
                    },
                    _getFormatObject: function(tooltip) {
                        const labelFormatObject = this._label.getData();
                        return _extend({}, labelFormatObject, {
                            argumentText: tooltip.formatValue(this.initialArgument, "argument"),
                            valueText: tooltip.formatValue(this.initialValue)
                        }, (0, _type.isDefined)(labelFormatObject.percent) ? {
                            percentText: tooltip.formatValue(labelFormatObject.percent, "percent")
                        } : {}, (0, _type.isDefined)(labelFormatObject.total) ? {
                            totalText: tooltip.formatValue(labelFormatObject.total)
                        } : {})
                    },
                    getMarkerVisibility: function() {
                        return this._options.visible
                    },
                    coordsIn: function(x, y) {
                        const trackerRadius = this._storeTrackerR();
                        return x >= this.x - trackerRadius && x <= this.x + trackerRadius && y >= this.y - trackerRadius && y <= this.y + trackerRadius
                    },
                    getMinValue: function(noErrorBar) {
                        const errorBarOptions = this._options.errorBars;
                        if (errorBarOptions && !noErrorBar) {
                            const displayMode = errorBarOptions.displayMode;
                            const lowValue = "high" !== displayMode && (0, _type.isDefined)(this.lowError) ? this.lowError : this.value;
                            const highValue = "low" !== displayMode && (0, _type.isDefined)(this.highError) ? this.highError : this.value;
                            return lowValue < highValue ? lowValue : highValue
                        } else {
                            return this.value
                        }
                    },
                    getMaxValue: function(noErrorBar) {
                        const errorBarOptions = this._options.errorBars;
                        if (errorBarOptions && !noErrorBar) {
                            const displayMode = errorBarOptions.displayMode;
                            const lowValue = "high" !== displayMode && (0, _type.isDefined)(this.lowError) ? this.lowError : this.value;
                            const highValue = "low" !== displayMode && (0, _type.isDefined)(this.highError) ? this.highError : this.value;
                            return lowValue > highValue ? lowValue : highValue
                        } else {
                            return this.value
                        }
                    }
                };
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        16665:
            /*!************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/series/range_series.js ***!
              \************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.chart = void 0;
                var _extend2 = __webpack_require__( /*! ../../core/utils/extend */ 52576);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 11528);
                var _utils = __webpack_require__( /*! ../core/utils */ 28779);
                var _common = __webpack_require__( /*! ../../core/utils/common */ 17781);
                var _scatter_series = __webpack_require__( /*! ./scatter_series */ 24008);
                var _bar_series = __webpack_require__( /*! ./bar_series */ 91449);
                var _area_series = __webpack_require__( /*! ./area_series */ 46283);
                const _extend = _extend2.extend;
                const barSeries = _bar_series.chart.bar;
                const areaSeries = _area_series.chart.area;
                const chart = exports.chart = {};
                const baseRangeSeries = {
                    areErrorBarsVisible: _common.noop,
                    _createErrorBarGroup: _common.noop,
                    _checkData: function(data, skippedFields) {
                        const valueFields = this.getValueFields();
                        return _scatter_series.chart._checkData.call(this, data, skippedFields, {
                            minValue: valueFields[0],
                            value: valueFields[1]
                        }) && data.minValue === data.minValue
                    },
                    getValueRangeInitialValue: _scatter_series.chart.getValueRangeInitialValue,
                    _getPointDataSelector: function(data) {
                        const valueFields = this.getValueFields();
                        const val1Field = valueFields[0];
                        const val2Field = valueFields[1];
                        const tagField = this.getTagField();
                        const argumentField = this.getArgumentField();
                        return data => ({
                            tag: data[tagField],
                            minValue: this._processEmptyValue(data[val1Field]),
                            value: this._processEmptyValue(data[val2Field]),
                            argument: data[argumentField],
                            data: data
                        })
                    },
                    _defaultAggregator: "range",
                    _aggregators: {
                        range(_ref, series) {
                            let {
                                intervalStart: intervalStart,
                                intervalEnd: intervalEnd,
                                data: data
                            } = _ref;
                            if (!data.length) {
                                return
                            }
                            const valueFields = series.getValueFields();
                            const val1Field = valueFields[0];
                            const val2Field = valueFields[1];
                            const result = data.reduce(((result, item) => {
                                const val1 = item[val1Field];
                                const val2 = item[val2Field];
                                if (!(0, _type.isDefined)(val1) || !(0, _type.isDefined)(val2)) {
                                    return result
                                }
                                result[val1Field] = Math.min(result[val1Field], Math.min(val1, val2));
                                result[val2Field] = Math.max(result[val2Field], Math.max(val1, val2));
                                return result
                            }), {
                                [val1Field]: 1 / 0,
                                [val2Field]: -1 / 0,
                                [series.getArgumentField()]: series._getIntervalCenter(intervalStart, intervalEnd)
                            });
                            if (!isFinite(result[val1Field]) || !isFinite(result[val2Field])) {
                                if (data.filter((i => null === i[val1Field] && null === i[val2Field])).length === data.length) {
                                    result[val1Field] = result[val2Field] = null
                                } else {
                                    return
                                }
                            }
                            return result
                        }
                    },
                    getValueFields: function() {
                        return [this._options.rangeValue1Field || "val1", this._options.rangeValue2Field || "val2"]
                    },
                    getSeriesPairCoord(coord, isArgument) {
                        let oppositeCoord = null;
                        const {
                            rotated: rotated
                        } = this._options;
                        const isOpposite = !isArgument && !rotated || isArgument && rotated;
                        const coordName = isOpposite ? "vy" : "vx";
                        const minCoordName = rotated ? "minX" : "minY";
                        const oppositeCoordName = isOpposite ? "vx" : "vy";
                        const points = this.getPoints();
                        for (let i = 0; i < points.length; i++) {
                            const p = points[i];
                            let tmpCoord;
                            if (isArgument) {
                                tmpCoord = p.getCenterCoord()[coordName[1]] === coord ? p[oppositeCoordName] : void 0
                            } else {
                                const coords = [Math.min(p[coordName], p[minCoordName]), Math.max(p[coordName], p[minCoordName])];
                                tmpCoord = coord >= coords[0] && coord <= coords[1] ? p[oppositeCoordName] : void 0
                            }
                            if (this._checkAxisVisibleAreaCoord(!isArgument, tmpCoord)) {
                                oppositeCoord = tmpCoord;
                                break
                            }
                        }
                        return oppositeCoord
                    }
                };
                chart.rangebar = _extend({}, barSeries, baseRangeSeries);
                chart.rangearea = _extend({}, areaSeries, {
                    _drawPoint: function(options) {
                        const point = options.point;
                        if (point.isInVisibleArea()) {
                            point.clearVisibility();
                            point.draw(this._renderer, options.groups);
                            this._drawnPoints.push(point);
                            if (!point.visibleTopMarker) {
                                point.hideMarker("top")
                            }
                            if (!point.visibleBottomMarker) {
                                point.hideMarker("bottom")
                            }
                        } else {
                            point.setInvisibility()
                        }
                    },
                    _prepareSegment: function(points, rotated) {
                        const processedPoints = this._processSinglePointsAreaSegment(points, rotated);
                        const processedMinPointsCoords = (0, _utils.map)(processedPoints, (function(pt) {
                            return pt.getCoords(true)
                        }));
                        return {
                            line: processedPoints,
                            bottomLine: processedMinPointsCoords,
                            area: (0, _utils.map)(processedPoints, (function(pt) {
                                return pt.getCoords()
                            })).concat(processedMinPointsCoords.slice().reverse()),
                            singlePointSegment: processedPoints !== points
                        }
                    },
                    _getDefaultSegment: function(segment) {
                        const defaultSegment = areaSeries._getDefaultSegment.call(this, segment);
                        defaultSegment.bottomLine = defaultSegment.line;
                        return defaultSegment
                    },
                    _removeElement: function(element) {
                        areaSeries._removeElement.call(this, element);
                        element.bottomLine && element.bottomLine.remove()
                    },
                    _drawElement: function(segment, group) {
                        const drawnElement = areaSeries._drawElement.call(this, segment, group);
                        drawnElement.bottomLine = this._bordersGroup && this._createBorderElement(segment.bottomLine, {
                            "stroke-width": this._styles.normal.border["stroke-width"]
                        }).append(this._bordersGroup);
                        return drawnElement
                    },
                    _applyStyle: function(style) {
                        const elementsGroup = this._elementsGroup;
                        const bordersGroup = this._bordersGroup;
                        elementsGroup && elementsGroup.smartAttr(style.elements);
                        bordersGroup && bordersGroup.attr(style.border);
                        (this._graphics || []).forEach((function(graphic) {
                            graphic.line && graphic.line.attr({
                                "stroke-width": style.border["stroke-width"]
                            });
                            graphic.bottomLine && graphic.bottomLine.attr({
                                "stroke-width": style.border["stroke-width"]
                            })
                        }))
                    },
                    _updateElement: function(element, segment, animate, complete) {
                        const bottomLineParams = {
                            points: segment.bottomLine
                        };
                        const bottomBorderElement = element.bottomLine;
                        areaSeries._updateElement.apply(this, arguments);
                        if (bottomBorderElement) {
                            animate ? bottomBorderElement.animate(bottomLineParams) : bottomBorderElement.attr(bottomLineParams)
                        }
                    }
                }, baseRangeSeries)
            },
        24008:
            /*!**************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/series/scatter_series.js ***!
              \**************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.polar = exports.chart = void 0;
                var _extend2 = __webpack_require__( /*! ../../core/utils/extend */ 52576);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 21274);
                var _range_data_calculator = (e = __webpack_require__( /*! ./helpers/range_data_calculator */ 34685), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                var _type = __webpack_require__( /*! ../../core/utils/type */ 11528);
                var _utils = __webpack_require__( /*! ../core/utils */ 28779);
                var _common = __webpack_require__( /*! ../../core/utils/common */ 17781);
                const math = Math;
                const _abs = math.abs;
                const _sqrt = math.sqrt;
                const _max = math.max;
                const VARIANCE = "variance";
                const STANDARD_DEVIATION = "stddeviation";
                const STANDARD_ERROR = "stderror";
                const PERCENT = "percent";
                const FIXED = "fixed";
                let chart = exports.chart = {};
                let polar = exports.polar = {};

                function sum(array) {
                    let result = 0;
                    (0, _iterator.each)(array, (function(_, value) {
                        result += value
                    }));
                    return result
                }

                function variance(array, expectedValue) {
                    return sum((0, _utils.map)(array, (function(value) {
                        return (value - expectedValue) * (value - expectedValue)
                    }))) / array.length
                }

                function getMinMaxAggregator(compare) {
                    return (_ref, series) => {
                        let {
                            intervalStart: intervalStart,
                            intervalEnd: intervalEnd,
                            data: data
                        } = _ref;
                        const valueField = series.getValueFields()[0];
                        let targetData = data[0];
                        targetData = data.reduce(((result, item) => {
                            const value = item[valueField];
                            if (null === result[valueField]) {
                                result = item
                            }
                            if (null !== value && compare(value, result[valueField])) {
                                return item
                            }
                            return result
                        }), targetData);
                        return (0, _extend2.extend)({}, targetData, {
                            [series.getArgumentField()]: series._getIntervalCenter(intervalStart, intervalEnd)
                        })
                    }
                }
                const baseScatterMethods = {
                    _defaultDuration: 400,
                    _defaultTrackerWidth: 12,
                    _applyStyle: _common.noop,
                    _updateOptions: _common.noop,
                    _parseStyle: _common.noop,
                    _prepareSegment: _common.noop,
                    _drawSegment: _common.noop,
                    _appendInGroup: function() {
                        this._group.append(this._extGroups.seriesGroup)
                    },
                    _createLegendState: function(styleOptions, defaultColor) {
                        return {
                            fill: (0, _utils.extractColor)(styleOptions.color, true) || defaultColor,
                            hatching: styleOptions.hatching ? (0, _extend2.extend)({}, styleOptions.hatching, {
                                direction: "right"
                            }) : void 0
                        }
                    },
                    _getColorId: _common.noop,
                    _applyElementsClipRect: function(settings) {
                        settings["clip-path"] = this._paneClipRectID
                    },
                    _applyMarkerClipRect: function(settings) {
                        settings["clip-path"] = this._forceClipping ? this._paneClipRectID : null
                    },
                    _createGroup: function(groupName, parent, target, settings) {
                        const group = parent[groupName] = parent[groupName] || this._renderer.g();
                        target && group.append(target);
                        settings && group.attr(settings)
                    },
                    _applyClearingSettings: function(settings) {
                        settings.opacity = null;
                        settings.scale = null;
                        if (this._options.rotated) {
                            settings.translateX = null
                        } else {
                            settings.translateY = null
                        }
                    },
                    _createGroups: function() {
                        this._createGroup("_markersGroup", this, this._group);
                        this._createGroup("_labelsGroup", this)
                    },
                    _setMarkerGroupSettings: function() {
                        const settings = this._createPointStyles(this._getMarkerGroupOptions()).normal;
                        settings.class = "dxc-markers";
                        settings.opacity = 1;
                        this._applyMarkerClipRect(settings);
                        this._markersGroup.attr(settings)
                    },
                    getVisibleArea: function() {
                        return this._visibleArea
                    },
                    areErrorBarsVisible: function() {
                        const errorBarOptions = this._options.valueErrorBar;
                        return errorBarOptions && this._errorBarsEnabled() && "none" !== errorBarOptions.displayMode && ((type = (0, _utils.normalizeEnum)(errorBarOptions.type), [FIXED, PERCENT, VARIANCE, STANDARD_DEVIATION, STANDARD_ERROR].includes(type)) || (0, _type.isDefined)(errorBarOptions.lowValueField) || (0, _type.isDefined)(errorBarOptions.highValueField));
                        var type
                    },
                    groupPointsByCoords(rotated) {
                        const cat = [];
                        (0, _iterator.each)(this.getVisiblePoints(), (function(_, p) {
                            const pointCoord = parseInt(rotated ? p.vy : p.vx);
                            if (!cat[pointCoord]) {
                                cat[pointCoord] = p
                            } else {
                                Array.isArray(cat[pointCoord]) ? cat[pointCoord].push(p) : cat[pointCoord] = [cat[pointCoord], p]
                            }
                        }));
                        return cat
                    },
                    _createErrorBarGroup: function(animationEnabled) {
                        const that = this;
                        const errorBarOptions = that._options.valueErrorBar;
                        let settings;
                        if (that.areErrorBarsVisible()) {
                            settings = {
                                class: "dxc-error-bars",
                                stroke: errorBarOptions.color,
                                "stroke-width": errorBarOptions.lineWidth,
                                opacity: animationEnabled ? .001 : errorBarOptions.opacity || 1,
                                "stroke-linecap": "square",
                                sharp: true,
                                "clip-path": that._forceClipping ? that._paneClipRectID : that._widePaneClipRectID
                            };
                            that._createGroup("_errorBarGroup", that, that._group, settings)
                        }
                    },
                    _setGroupsSettings: function(animationEnabled) {
                        this._setMarkerGroupSettings();
                        this._setLabelGroupSettings(animationEnabled);
                        this._createErrorBarGroup(animationEnabled)
                    },
                    _getCreatingPointOptions: function() {
                        const that = this;
                        let defaultPointOptions;
                        let creatingPointOptions = that._predefinedPointOptions;
                        let normalStyle;
                        if (!creatingPointOptions) {
                            defaultPointOptions = that._getPointOptions();
                            that._predefinedPointOptions = creatingPointOptions = (0, _extend2.extend)(true, {
                                styles: {}
                            }, defaultPointOptions);
                            normalStyle = defaultPointOptions.styles && defaultPointOptions.styles.normal || {};
                            creatingPointOptions.styles = creatingPointOptions.styles || {};
                            creatingPointOptions.styles.normal = {
                                "stroke-width": normalStyle["stroke-width"],
                                r: normalStyle.r,
                                opacity: normalStyle.opacity
                            }
                        }
                        return creatingPointOptions
                    },
                    _getPointOptions: function() {
                        return this._parsePointOptions(this._preparePointOptions(), this._options.label)
                    },
                    _getOptionsForPoint: function() {
                        return this._options.point
                    },
                    _parsePointStyle: function(style, defaultColor, defaultBorderColor, defaultSize) {
                        const border = style.border || {};
                        const sizeValue = void 0 !== style.size ? style.size : defaultSize;
                        return {
                            fill: (0, _utils.extractColor)(style.color, true) || defaultColor,
                            stroke: border.color || defaultBorderColor,
                            "stroke-width": border.visible ? border.width : 0,
                            r: sizeValue / 2 + (border.visible && 0 !== sizeValue ? ~~(border.width / 2) || 0 : 0)
                        }
                    },
                    _createPointStyles: function(pointOptions) {
                        const mainPointColor = (0, _utils.extractColor)(pointOptions.color, true) || this._options.mainSeriesColor;
                        const containerColor = this._options.containerBackgroundColor;
                        const normalStyle = this._parsePointStyle(pointOptions, mainPointColor, mainPointColor);
                        normalStyle.visibility = pointOptions.visible ? "visible" : "hidden";
                        return {
                            labelColor: mainPointColor,
                            normal: normalStyle,
                            hover: this._parsePointStyle(pointOptions.hoverStyle, containerColor, mainPointColor, pointOptions.size),
                            selection: this._parsePointStyle(pointOptions.selectionStyle, containerColor, mainPointColor, pointOptions.size)
                        }
                    },
                    _checkData: function(data, skippedFields, fieldsToCheck) {
                        fieldsToCheck = fieldsToCheck || {
                            value: this.getValueFields()[0]
                        };
                        fieldsToCheck.argument = this.getArgumentField();
                        return function(data, fieldsToCheck, skippedFields) {
                            let allFieldsIsValid = true;
                            for (const field in fieldsToCheck) {
                                const isArgument = "argument" === field;
                                if (isArgument || "size" === field ? !(0, _type.isDefined)(data[field]) : void 0 === data[field]) {
                                    const selector = fieldsToCheck[field];
                                    if (!isArgument) {
                                        skippedFields[selector] = (skippedFields[selector] || 0) + 1
                                    }
                                    allFieldsIsValid = false
                                }
                            }
                            return allFieldsIsValid
                        }(data, fieldsToCheck, skippedFields || {}) && data.value === data.value
                    },
                    getArgumentRangeInitialValue() {
                        const points = this.getPoints();
                        if (this.useAggregation() && points.length) {
                            var _points$0$aggregation, _points$aggregationIn;
                            return {
                                min: null === (_points$0$aggregation = points[0].aggregationInfo) || void 0 === _points$0$aggregation ? void 0 : _points$0$aggregation.intervalStart,
                                max: null === (_points$aggregationIn = points[points.length - 1].aggregationInfo) || void 0 === _points$aggregationIn ? void 0 : _points$aggregationIn.intervalEnd
                            }
                        }
                        return
                    },
                    getValueRangeInitialValue: function() {
                        return
                    },
                    _getRangeData: function() {
                        return _range_data_calculator.default.getRangeData(this)
                    },
                    _getPointDataSelector: function() {
                        const valueField = this.getValueFields()[0];
                        const argumentField = this.getArgumentField();
                        const tagField = this.getTagField();
                        const areErrorBarsVisible = this.areErrorBarsVisible();
                        let lowValueField;
                        let highValueField;
                        if (areErrorBarsVisible) {
                            const errorBarOptions = this._options.valueErrorBar;
                            lowValueField = errorBarOptions.lowValueField || "lowError";
                            highValueField = errorBarOptions.highValueField || "highError"
                        }
                        return data => {
                            const pointData = {
                                value: this._processEmptyValue(data[valueField]),
                                argument: data[argumentField],
                                tag: data[tagField],
                                data: data
                            };
                            if (areErrorBarsVisible) {
                                pointData.lowError = data[lowValueField];
                                pointData.highError = data[highValueField]
                            }
                            return pointData
                        }
                    },
                    _errorBarsEnabled: function() {
                        return "discrete" !== this.valueAxisType && "logarithmic" !== this.valueAxisType && "datetime" !== this.valueType
                    },
                    _drawPoint: function(options) {
                        const point = options.point;
                        if (point.isInVisibleArea()) {
                            point.clearVisibility();
                            point.draw(this._renderer, options.groups, options.hasAnimation, options.firstDrawing);
                            this._drawnPoints.push(point)
                        } else {
                            point.setInvisibility()
                        }
                    },
                    _animateComplete: function() {
                        const animationSettings = {
                            duration: this._defaultDuration
                        };
                        this._labelsGroup && this._labelsGroup.animate({
                            opacity: 1
                        }, animationSettings);
                        this._errorBarGroup && this._errorBarGroup.animate({
                            opacity: this._options.valueErrorBar.opacity || 1
                        }, animationSettings)
                    },
                    _animate: function() {
                        const that = this;
                        const lastPointIndex = that._drawnPoints.length - 1;
                        (0, _iterator.each)(that._drawnPoints || [], (function(i, p) {
                            p.animate(i === lastPointIndex ? function() {
                                that._animateComplete()
                            } : void 0, {
                                translateX: p.x,
                                translateY: p.y
                            })
                        }))
                    },
                    _getIntervalCenter(intervalStart, intervalEnd) {
                        const argAxis = this.getArgumentAxis();
                        const axisOptions = argAxis.getOptions();
                        if (argAxis.aggregatedPointBetweenTicks()) {
                            return intervalStart
                        }
                        return "discrete" !== axisOptions.type ? argAxis.getVisualRangeCenter({
                            minVisible: intervalStart,
                            maxVisible: intervalEnd
                        }, true) : intervalStart
                    },
                    _defaultAggregator: "avg",
                    _aggregators: {
                        avg(_ref2, series) {
                            let {
                                data: data,
                                intervalStart: intervalStart,
                                intervalEnd: intervalEnd
                            } = _ref2;
                            if (!data.length) {
                                return
                            }
                            const valueField = series.getValueFields()[0];
                            const aggregationResult = data.reduce(((result, item) => {
                                const value = item[valueField];
                                if ((0, _type.isDefined)(value)) {
                                    result[0] += value;
                                    result[1]++
                                } else if (null === value) {
                                    result[2]++
                                }
                                return result
                            }), [0, 0, 0]);
                            return function(result, data, series) {
                                const errorBarsOptions = series.getOptions().valueErrorBar;
                                const valueField = series.getValueFields()[0];
                                const lowValueField = errorBarsOptions.lowValueField || "lowError";
                                const highValueField = errorBarsOptions.highValueField || "highError";
                                if (series.areErrorBarsVisible() && void 0 === errorBarsOptions.type) {
                                    const fusionData = data.reduce((function(result, item) {
                                        if ((0, _type.isDefined)(item[lowValueField])) {
                                            result[0] += item[valueField] - item[lowValueField];
                                            result[1]++
                                        }
                                        if ((0, _type.isDefined)(item[highValueField])) {
                                            result[2] += item[highValueField] - item[valueField];
                                            result[3]++
                                        }
                                        return result
                                    }), [0, 0, 0, 0]);
                                    if (fusionData[1]) {
                                        result[lowValueField] = result[valueField] - fusionData[0] / fusionData[1]
                                    }
                                    if (fusionData[2]) {
                                        result[highValueField] = result[valueField] + fusionData[2] / fusionData[3]
                                    }
                                }
                                return result
                            }({
                                [valueField]: aggregationResult[2] === data.length ? null : aggregationResult[0] / aggregationResult[1],
                                [series.getArgumentField()]: series._getIntervalCenter(intervalStart, intervalEnd)
                            }, data, series)
                        },
                        sum(_ref3, series) {
                            let {
                                intervalStart: intervalStart,
                                intervalEnd: intervalEnd,
                                data: data
                            } = _ref3;
                            if (!data.length) {
                                return
                            }
                            const valueField = series.getValueFields()[0];
                            const aggregationResult = data.reduce(((result, item) => {
                                const value = item[valueField];
                                if (void 0 !== value) {
                                    result[0] += value
                                }
                                if (null === value) {
                                    result[1]++
                                } else if (void 0 === value) {
                                    result[2]++
                                }
                                return result
                            }), [0, 0, 0]);
                            let value = aggregationResult[0];
                            if (aggregationResult[1] === data.length) {
                                value = null
                            }
                            if (aggregationResult[2] === data.length) {
                                return
                            }
                            return function(result, data, series) {
                                const errorBarsOptions = series.getOptions().valueErrorBar;
                                const lowValueField = errorBarsOptions.lowValueField || "lowError";
                                const highValueField = errorBarsOptions.highValueField || "highError";
                                if (series.areErrorBarsVisible() && void 0 === errorBarsOptions.type) {
                                    result[lowValueField] = 0;
                                    result[highValueField] = 0;
                                    result = data.reduce((function(result, item) {
                                        result[lowValueField] += item[lowValueField];
                                        result[highValueField] += item[highValueField];
                                        return result
                                    }), result)
                                }
                                return result
                            }({
                                [valueField]: value,
                                [series.getArgumentField()]: series._getIntervalCenter(intervalStart, intervalEnd)
                            }, data, series)
                        },
                        count(_ref4, series) {
                            let {
                                data: data,
                                intervalStart: intervalStart,
                                intervalEnd: intervalEnd
                            } = _ref4;
                            const valueField = series.getValueFields()[0];
                            return {
                                [series.getArgumentField()]: series._getIntervalCenter(intervalStart, intervalEnd),
                                [valueField]: data.filter((i => void 0 !== i[valueField])).length
                            }
                        },
                        min: getMinMaxAggregator(((a, b) => a < b)),
                        max: getMinMaxAggregator(((a, b) => a > b))
                    },
                    _endUpdateData: function() {
                        delete this._predefinedPointOptions
                    },
                    getArgumentField: function() {
                        return this._options.argumentField || "arg"
                    },
                    getValueFields: function() {
                        const options = this._options;
                        const errorBarsOptions = options.valueErrorBar;
                        const valueFields = [options.valueField || "val"];
                        let lowValueField;
                        let highValueField;
                        if (errorBarsOptions) {
                            lowValueField = errorBarsOptions.lowValueField;
                            highValueField = errorBarsOptions.highValueField;
                            (0, _type.isString)(lowValueField) && valueFields.push(lowValueField);
                            (0, _type.isString)(highValueField) && valueFields.push(highValueField)
                        }
                        return valueFields
                    },
                    _calculateErrorBars: function(data) {
                        if (!this.areErrorBarsVisible()) {
                            return
                        }
                        const options = this._options;
                        const errorBarsOptions = options.valueErrorBar;
                        const errorBarType = (0, _utils.normalizeEnum)(errorBarsOptions.type);
                        let floatErrorValue = parseFloat(errorBarsOptions.value);
                        const valueField = this.getValueFields()[0];
                        let value;
                        const lowValueField = errorBarsOptions.lowValueField || "lowError";
                        const highValueField = errorBarsOptions.highValueField || "highError";
                        let valueArray;
                        let valueArrayLength;
                        let meanValue;
                        let processDataItem;
                        const addSubError = function(_i, item) {
                            value = item.value;
                            item.lowError = value - floatErrorValue;
                            item.highError = value + floatErrorValue
                        };
                        switch (errorBarType) {
                            case FIXED:
                                processDataItem = addSubError;
                                break;
                            case PERCENT:
                                processDataItem = function(_, item) {
                                    value = item.value;
                                    const error = value * floatErrorValue / 100;
                                    item.lowError = value - error;
                                    item.highError = value + error
                                };
                                break;
                            case "undefined":
                                processDataItem = function(_, item) {
                                    item.lowError = item.data[lowValueField];
                                    item.highError = item.data[highValueField]
                                };
                                break;
                            default:
                                valueArray = (0, _utils.map)(data, (function(item) {
                                    return (0, _type.isDefined)(item.data[valueField]) ? item.data[valueField] : null
                                }));
                                valueArrayLength = valueArray.length;
                                floatErrorValue = floatErrorValue || 1;
                                switch (errorBarType) {
                                    case VARIANCE:
                                        floatErrorValue = variance(valueArray, sum(valueArray) / valueArrayLength) * floatErrorValue;
                                        processDataItem = addSubError;
                                        break;
                                    case STANDARD_DEVIATION:
                                        meanValue = sum(valueArray) / valueArrayLength;
                                        floatErrorValue = _sqrt(variance(valueArray, meanValue)) * floatErrorValue;
                                        processDataItem = function(_, item) {
                                            item.lowError = meanValue - floatErrorValue;
                                            item.highError = meanValue + floatErrorValue
                                        };
                                        break;
                                    case STANDARD_ERROR:
                                        floatErrorValue = _sqrt(variance(valueArray, sum(valueArray) / valueArrayLength) / valueArrayLength) * floatErrorValue;
                                        processDataItem = addSubError
                                }
                        }
                        processDataItem && (0, _iterator.each)(data, processDataItem)
                    },
                    _patchMarginOptions: function(options) {
                        const pointOptions = this._getCreatingPointOptions();
                        const styles = pointOptions.styles;
                        const maxSize = [styles.normal, styles.hover, styles.selection].reduce((function(max, style) {
                            return _max(max, 2 * style.r + style["stroke-width"])
                        }), 0);
                        options.size = pointOptions.visible ? maxSize : 0;
                        options.sizePointNormalState = pointOptions.visible ? 2 * styles.normal.r + styles.normal["stroke-width"] : 2;
                        return options
                    },
                    usePointsToDefineAutoHiding() {
                        return !!this._getOptionsForPoint().visible
                    }
                };
                exports.chart = chart = (0, _extend2.extend)({}, baseScatterMethods, {
                    drawTrackers: function() {
                        const that = this;
                        let trackers;
                        let trackersGroup;
                        const segments = that._segments || [];
                        const rotated = that._options.rotated;
                        if (!that.isVisible()) {
                            return
                        }
                        if (segments.length) {
                            trackers = that._trackers = that._trackers || [];
                            trackersGroup = that._trackersGroup = (that._trackersGroup || that._renderer.g().attr({
                                fill: "gray",
                                opacity: .001,
                                stroke: "gray",
                                class: "dxc-trackers"
                            })).attr({
                                "clip-path": this._paneClipRectID || null
                            }).append(that._group);
                            (0, _iterator.each)(segments, (function(i, segment) {
                                if (!trackers[i]) {
                                    trackers[i] = that._drawTrackerElement(segment).data({
                                        "chart-data-series": that
                                    }).append(trackersGroup)
                                } else {
                                    that._updateTrackerElement(segment, trackers[i])
                                }
                            }))
                        }
                        that._trackersTranslator = that.groupPointsByCoords(rotated)
                    },
                    _checkAxisVisibleAreaCoord(isArgument, coord) {
                        const axis = isArgument ? this.getArgumentAxis() : this.getValueAxis();
                        const visibleArea = axis.getVisibleArea();
                        return (0, _type.isDefined)(coord) && visibleArea[0] <= coord && visibleArea[1] >= coord
                    },
                    checkSeriesViewportCoord(axis, coord) {
                        return this.getPoints().length && this.isVisible()
                    },
                    getSeriesPairCoord(coord, isArgument) {
                        let oppositeCoord = null;
                        const isOpposite = !isArgument && !this._options.rotated || isArgument && this._options.rotated;
                        const coordName = !isOpposite ? "vx" : "vy";
                        const oppositeCoordName = !isOpposite ? "vy" : "vx";
                        const points = this.getVisiblePoints();
                        for (let i = 0; i < points.length; i++) {
                            const p = points[i];
                            const tmpCoord = p[coordName] === coord ? p[oppositeCoordName] : void 0;
                            if (this._checkAxisVisibleAreaCoord(!isArgument, tmpCoord)) {
                                oppositeCoord = tmpCoord;
                                break
                            }
                        }
                        return oppositeCoord
                    },
                    _getNearestPoints: (point, nextPoint) => [point, nextPoint],
                    _getBezierPoints: () => [],
                    _getNearestPointsByCoord(coord, isArgument) {
                        const that = this;
                        const rotated = that.getOptions().rotated;
                        const isOpposite = !isArgument && !rotated || isArgument && rotated;
                        const coordName = isOpposite ? "vy" : "vx";
                        const allPoints = that.getPoints();
                        const bezierPoints = that._getBezierPoints();
                        const nearestPoints = [];
                        if (allPoints.length > 1) {
                            allPoints.forEach(((point, i) => {
                                const nextPoint = allPoints[i + 1];
                                if (nextPoint && (point[coordName] <= coord && nextPoint[coordName] >= coord || point[coordName] >= coord && nextPoint[coordName] <= coord)) {
                                    nearestPoints.push(that._getNearestPoints(point, nextPoint, bezierPoints))
                                }
                            }))
                        } else {
                            nearestPoints.push([allPoints[0], allPoints[0]])
                        }
                        return nearestPoints
                    },
                    getNeighborPoint: function(x, y) {
                        let pCoord = this._options.rotated ? y : x;
                        let nCoord = pCoord;
                        const cat = this._trackersTranslator;
                        let point = null;
                        let minDistance;
                        const oppositeCoord = this._options.rotated ? x : y;
                        const oppositeCoordName = this._options.rotated ? "vx" : "vy";
                        if (this.isVisible() && cat) {
                            point = cat[pCoord];
                            do {
                                point = cat[nCoord] || cat[pCoord];
                                pCoord--;
                                nCoord++
                            } while ((pCoord >= 0 || nCoord < cat.length) && !point);
                            if (Array.isArray(point)) {
                                minDistance = _abs(point[0][oppositeCoordName] - oppositeCoord);
                                (0, _iterator.each)(point, (function(i, p) {
                                    const distance = _abs(p[oppositeCoordName] - oppositeCoord);
                                    if (minDistance >= distance) {
                                        minDistance = distance;
                                        point = p
                                    }
                                }))
                            }
                        }
                        return point
                    },
                    _applyVisibleArea: function() {
                        const rotated = this._options.rotated;
                        const visibleX = (rotated ? this.getValueAxis() : this.getArgumentAxis()).getVisibleArea();
                        const visibleY = (rotated ? this.getArgumentAxis() : this.getValueAxis()).getVisibleArea();
                        this._visibleArea = {
                            minX: visibleX[0],
                            maxX: visibleX[1],
                            minY: visibleY[0],
                            maxY: visibleY[1]
                        }
                    },
                    getPointCenterByArg(arg) {
                        const point = this.getPointsByArg(arg)[0];
                        return point ? point.getCenterCoord() : void 0
                    }
                });
                exports.polar = polar = (0, _extend2.extend)({}, baseScatterMethods, {
                    drawTrackers: function() {
                        chart.drawTrackers.call(this);
                        const cat = this._trackersTranslator;
                        let index;
                        if (!this.isVisible()) {
                            return
                        }(0, _iterator.each)(cat, (function(i, category) {
                            if (category) {
                                index = i;
                                return false
                            }
                        }));
                        cat[index + 360] = cat[index]
                    },
                    getNeighborPoint: function(x, y) {
                        const pos = (0, _utils.convertXYToPolar)(this.getValueAxis().getCenter(), x, y);
                        return chart.getNeighborPoint.call(this, pos.phi, pos.r)
                    },
                    _applyVisibleArea: function() {
                        const canvas = this.getValueAxis().getCanvas();
                        this._visibleArea = {
                            minX: canvas.left,
                            maxX: canvas.width - canvas.right,
                            minY: canvas.top,
                            maxY: canvas.height - canvas.bottom
                        }
                    },
                    getSeriesPairCoord(params, isArgument) {
                        let coords = null;
                        const paramName = isArgument ? "argument" : "radius";
                        const points = this.getVisiblePoints();
                        for (let i = 0; i < points.length; i++) {
                            const p = points[i];
                            const tmpPoint = (0, _type.isDefined)(p[paramName]) && (0, _type.isDefined)(params[paramName]) && p[paramName].valueOf() === params[paramName].valueOf() ? {
                                x: p.x,
                                y: p.y
                            } : void 0;
                            if ((0, _type.isDefined)(tmpPoint)) {
                                coords = tmpPoint;
                                break
                            }
                        }
                        return coords
                    }
                })
            },
        33277:
            /*!**************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/series/stacked_series.js ***!
              \**************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.polar = exports.chart = void 0;
                var _common = __webpack_require__( /*! ../../core/utils/common */ 17781);
                var _extend2 = __webpack_require__( /*! ../../core/utils/extend */ 52576);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 21274);
                var _area_series = __webpack_require__( /*! ./area_series */ 46283);
                var _bar_series = __webpack_require__( /*! ./bar_series */ 91449);
                var _line_series = __webpack_require__( /*! ./line_series */ 85854);
                var _utils = __webpack_require__( /*! ../core/utils */ 28779);
                var _object = __webpack_require__( /*! ../../core/utils/object */ 22263);
                const chartAreaSeries = _area_series.chart.area;
                const chartBarSeries = _bar_series.chart.bar;
                const baseStackedSeries = {
                    _calculateErrorBars: _common.noop,
                    _updateOptions: function(options) {
                        this._stackName = "axis_" + (options.axis || "default")
                    }
                };
                const chart = exports.chart = {};
                const polar = exports.polar = {};
                chart.stackedline = (0, _extend2.extend)({}, _line_series.chart.line, baseStackedSeries, {});
                chart.stackedspline = (0, _extend2.extend)({}, _line_series.chart.spline, baseStackedSeries, {});
                chart.fullstackedline = (0, _extend2.extend)({}, _line_series.chart.line, baseStackedSeries, {
                    getValueRangeInitialValue: _area_series.chart.area.getValueRangeInitialValue
                });
                chart.fullstackedspline = (0, _extend2.extend)({}, _line_series.chart.spline, baseStackedSeries, {
                    getValueRangeInitialValue: _area_series.chart.area.getValueRangeInitialValue
                });
                const stackedBar = chart.stackedbar = (0, _extend2.extend)({}, chartBarSeries, baseStackedSeries, {
                    _updateOptions: function(options) {
                        baseStackedSeries._updateOptions.call(this, options);
                        this._stackName = this._stackName + "_stack_" + (options.stack || "default")
                    }
                });
                chart.fullstackedbar = (0, _extend2.extend)({}, chartBarSeries, baseStackedSeries, {
                    _updateOptions: stackedBar._updateOptions
                });

                function clonePoint(point, value, minValue, position) {
                    point = (0, _object.clone)(point);
                    point.value = value;
                    point.minValue = minValue;
                    point.translate();
                    point.argument = point.argument + position;
                    return point
                }

                function preparePointsForStackedAreaSegment(points) {
                    let i = 0;
                    let p;
                    const result = [];
                    let array;
                    const len = points.length;
                    while (i < len) {
                        p = points[i];
                        array = [p];
                        if (p.leftHole) {
                            array = [clonePoint(p, p.leftHole, p.minLeftHole, "left"), p]
                        }
                        if (p.rightHole) {
                            array.push(clonePoint(p, p.rightHole, p.minRightHole, "right"))
                        }
                        result.push(array);
                        i++
                    }
                    return [].concat.apply([], result)
                }
                chart.stackedarea = (0, _extend2.extend)({}, chartAreaSeries, baseStackedSeries, {
                    _prepareSegment: function(points, rotated) {
                        return chartAreaSeries._prepareSegment.call(this, preparePointsForStackedAreaSegment(points), rotated)
                    },
                    _appendInGroup: function() {
                        this._group.append(this._extGroups.seriesGroup).toBackground()
                    }
                });
                chart.stackedsplinearea = (0, _extend2.extend)({}, _area_series.chart.splinearea, baseStackedSeries, {
                    _prepareSegment: function(points, rotated) {
                        const that = this;
                        let areaSegment;
                        points = preparePointsForStackedAreaSegment(points);
                        if (!this._prevSeries || 1 === points.length) {
                            areaSegment = _area_series.chart.splinearea._prepareSegment.call(this, points, rotated)
                        } else {
                            const forwardPoints = _line_series.chart.spline._calculateBezierPoints(points, rotated);
                            let backwardPoints = (0, _utils.map)(points, (function(p) {
                                const point = p.getCoords(true);
                                point.argument = p.argument;
                                return point
                            }));
                            let prevSeriesForwardPoints = [];
                            const pointByArg = {};
                            let i = 0;
                            const len = that._prevSeries._segments.length;
                            while (i < len) {
                                prevSeriesForwardPoints = prevSeriesForwardPoints.concat(that._prevSeries._segments[i].line);
                                i++
                            }(0, _iterator.each)(prevSeriesForwardPoints, (function(_, p) {
                                if (null !== p.argument) {
                                    const argument = p.argument.valueOf();
                                    if (!pointByArg[argument]) {
                                        pointByArg[argument] = [p]
                                    } else {
                                        pointByArg[argument].push(p)
                                    }
                                }
                            }));
                            that._prevSeries._segmentByArg = pointByArg;
                            backwardPoints = _line_series.chart.spline._calculateBezierPoints(backwardPoints, rotated);
                            (0, _iterator.each)(backwardPoints, (function(i, p) {
                                const argument = p.argument.valueOf();
                                let prevSeriesPoints;
                                if (i % 3 === 0) {
                                    prevSeriesPoints = pointByArg[argument] || function(prevSeries, argument) {
                                        let result;
                                        while (!result && prevSeries) {
                                            result = prevSeries._segmentByArg && prevSeries._segmentByArg[argument];
                                            prevSeries = prevSeries._prevSeries
                                        }
                                        return result
                                    }(that._prevSeries, argument);
                                    if (prevSeriesPoints) {
                                        backwardPoints[i - 1] && prevSeriesPoints[0] && (backwardPoints[i - 1] = prevSeriesPoints[0]);
                                        backwardPoints[i + 1] && (backwardPoints[i + 1] = prevSeriesPoints[2] || p)
                                    }
                                }
                            }));
                            areaSegment = {
                                line: forwardPoints,
                                area: forwardPoints.concat(backwardPoints.reverse())
                            };
                            that._areaPointsToSplineAreaPoints(areaSegment.area)
                        }
                        return areaSegment
                    },
                    _appendInGroup: chart.stackedarea._appendInGroup
                });
                chart.fullstackedarea = (0, _extend2.extend)({}, chartAreaSeries, baseStackedSeries, {
                    _prepareSegment: chart.stackedarea._prepareSegment,
                    _appendInGroup: chart.stackedarea._appendInGroup
                });
                chart.fullstackedsplinearea = (0, _extend2.extend)({}, _area_series.chart.splinearea, baseStackedSeries, {
                    _prepareSegment: chart.stackedsplinearea._prepareSegment,
                    _appendInGroup: chart.stackedarea._appendInGroup
                });
                polar.stackedbar = (0, _extend2.extend)({}, _bar_series.polar.bar, baseStackedSeries, {
                    _updateOptions: function(options) {
                        baseStackedSeries._updateOptions.call(this, options);
                        this._stackName = this._stackName + "_stack_" + (options.stack || "default")
                    }
                })
            },
        71871:
            /*!**************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/sparkline.js ***!
              \**************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _sparkline = (e = __webpack_require__( /*! ./sparklines/sparkline */ 47206), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                exports.default = _sparkline.default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        55676:
            /*!******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/sparklines/base_sparkline.js ***!
              \******************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/core/events_engine */ 92774));
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../core/dom_adapter */ 64960));
                var _type = __webpack_require__( /*! ../../core/utils/type */ 11528);
                var _m_base_widget = _interopRequireDefault(__webpack_require__( /*! ../../__internal/viz/core/m_base_widget */ 34506));
                var _extend2 = __webpack_require__( /*! ../../core/utils/extend */ 52576);
                var _index = __webpack_require__( /*! ../../common/core/events/utils/index */ 98834);
                var _pointer = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/pointer */ 89797));
                var _utils = __webpack_require__( /*! ../core/utils */ 28779);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 64553));
                var _translator2d = __webpack_require__( /*! ../translators/translator2d */ 64174);
                var _common = __webpack_require__( /*! ../../core/utils/common */ 17781);
                var _tooltip = __webpack_require__( /*! ../core/tooltip */ 23277);
                var _export = __webpack_require__( /*! ../core/export */ 74754);

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const EVENT_NS = "sparkline-tooltip";
                const POINTER_ACTION = (0, _index.addNamespace)([_pointer.default.down, _pointer.default.move], EVENT_NS);
                const _extend = _extend2.extend;
                const _floor = Math.floor;

                function pointerHandler(_ref2) {
                    let {
                        data: data
                    } = _ref2;
                    const that = data.widget;
                    that._enableOutHandler();
                    that._showTooltip()
                }

                function createAxis(isHorizontal) {
                    const translator = new _translator2d.Translator2D({}, {}, {
                        shiftZeroValue: !isHorizontal,
                        isHorizontal: !!isHorizontal
                    });
                    return {
                        getTranslator: function() {
                            return translator
                        },
                        update: function(range, canvas, options) {
                            translator.update(range, canvas, options)
                        },
                        getVisibleArea() {
                            const visibleArea = translator.getCanvasVisibleArea();
                            return [visibleArea.min, visibleArea.max]
                        },
                        visualRange: _common.noop,
                        calculateInterval: _common.noop,
                        getMarginOptions: () => ({}),
                        aggregatedPointBetweenTicks: () => false
                    }
                }
                let _initTooltip;
                const BaseSparkline = _m_base_widget.default.inherit({
                    _getLayoutItems: _common.noop,
                    _useLinks: false,
                    _themeDependentChanges: ["OPTIONS"],
                    _initCore: function() {
                        this._tooltipTracker = this._renderer.root;
                        this._tooltipTracker.attr({
                            "pointer-events": "visible"
                        });
                        this._createHtmlElements();
                        this._initTooltipEvents();
                        this._argumentAxis = createAxis(true);
                        this._valueAxis = createAxis()
                    },
                    _getDefaultSize: function() {
                        return this._defaultSize
                    },
                    _disposeCore: function() {
                        this._disposeWidgetElements();
                        this._disposeTooltipEvents();
                        this._ranges = null
                    },
                    _optionChangesOrder: ["OPTIONS"],
                    _change_OPTIONS: function() {
                        this._prepareOptions();
                        this._change(["UPDATE"])
                    },
                    _customChangesOrder: ["UPDATE"],
                    _change_UPDATE: function() {
                        this._update()
                    },
                    _update: function() {
                        const that = this;
                        if (that._tooltipShown) {
                            that._tooltipShown = false;
                            that._tooltip.hide()
                        }
                        that._cleanWidgetElements();
                        that._updateWidgetElements();
                        that._drawWidgetElements()
                    },
                    _updateWidgetElements: function() {
                        const canvas = this._getCorrectCanvas();
                        this._updateRange();
                        this._argumentAxis.update(this._ranges.arg, canvas, this._getStick());
                        this._valueAxis.update(this._ranges.val, canvas)
                    },
                    _getStick: function() {},
                    _applySize: function(rect) {
                        this._allOptions.size = {
                            width: rect[2] - rect[0],
                            height: rect[3] - rect[1]
                        };
                        this._change(["UPDATE"])
                    },
                    _setupResizeHandler: _common.noop,
                    _prepareOptions: function() {
                        return _extend(true, {}, this._themeManager.theme(), this.option())
                    },
                    _getTooltipCoords: function() {
                        const canvas = this._canvas;
                        const rootOffset = this._renderer.getRootOffset();
                        return {
                            x: canvas.width / 2 + rootOffset.left,
                            y: canvas.height / 2 + rootOffset.top
                        }
                    },
                    _initTooltipEvents() {
                        const data = {
                            widget: this
                        };
                        this._renderer.root.off("." + EVENT_NS).on(POINTER_ACTION, data, pointerHandler)
                    },
                    _showTooltip() {
                        const that = this;
                        let tooltip;
                        if (!that._tooltipShown) {
                            that._tooltipShown = true;
                            tooltip = that._getTooltip();
                            tooltip.isEnabled() && that._tooltip.show(that._getTooltipData(), that._getTooltipCoords(), {})
                        }
                    },
                    _hideTooltip() {
                        if (this._tooltipShown) {
                            this._tooltipShown = false;
                            this._tooltip.hide()
                        }
                    },
                    _stopCurrentHandling() {
                        this._hideTooltip()
                    },
                    _enableOutHandler() {
                        const that = this;
                        if (that._outHandler) {
                            return
                        }
                        const handler = _ref5 => {
                            let {
                                pageX: pageX,
                                pageY: pageY
                            } = _ref5;
                            const {
                                left: left,
                                top: top
                            } = that._renderer.getRootOffset();
                            const x = _floor(pageX - left);
                            const y = _floor(pageY - top);
                            if (! function(_ref, x, y) {
                                    let {
                                        width: width,
                                        height: height
                                    } = _ref;
                                    return (0, _utils.pointInCanvas)({
                                        left: 0,
                                        top: 0,
                                        right: width,
                                        bottom: height,
                                        width: width,
                                        height: height
                                    }, x, y)
                                }(that._canvas, x, y)) {
                                that._hideTooltip();
                                that._disableOutHandler()
                            }
                        };
                        _events_engine.default.on(_dom_adapter.default.getDocument(), POINTER_ACTION, handler);
                        this._outHandler = handler
                    },
                    _disableOutHandler() {
                        this._outHandler && _events_engine.default.off(_dom_adapter.default.getDocument(), POINTER_ACTION, this._outHandler);
                        this._outHandler = null
                    },
                    _disposeTooltipEvents: function() {
                        this._tooltipTracker.off();
                        this._disableOutHandler();
                        this._renderer.root.off("." + EVENT_NS)
                    },
                    _getTooltip: function() {
                        const that = this;
                        if (!that._tooltip) {
                            _initTooltip.apply(this, arguments);
                            that._setTooltipRendererOptions(that._tooltipRendererOptions);
                            that._tooltipRendererOptions = null;
                            that._setTooltipOptions()
                        }
                        return that._tooltip
                    }
                });
                exports.default = BaseSparkline;
                BaseSparkline.addPlugin(_tooltip.plugin);
                _initTooltip = BaseSparkline.prototype._initTooltip;
                BaseSparkline.prototype._initTooltip = _common.noop;
                const _disposeTooltip = BaseSparkline.prototype._disposeTooltip;
                BaseSparkline.prototype._disposeTooltip = function() {
                    if (this._tooltip) {
                        _disposeTooltip.apply(this, arguments)
                    }
                };
                BaseSparkline.prototype._setTooltipRendererOptions = function() {
                    const options = this._getRendererOptions();
                    if (this._tooltip) {
                        this._tooltip.setRendererOptions(options)
                    } else {
                        this._tooltipRendererOptions = options
                    }
                };
                BaseSparkline.prototype._setTooltipOptions = function() {
                    if (this._tooltip) {
                        const options = this._getOption("tooltip");
                        const defaultContentTemplate = this._getDefaultTooltipTemplate(options);
                        const contentTemplateOptions = defaultContentTemplate ? {
                            contentTemplate: defaultContentTemplate
                        } : {};
                        const optionsToUpdate = _extend(contentTemplateOptions, options, {
                            enabled: options.enabled && this._isTooltipEnabled()
                        });
                        this._tooltip.update(optionsToUpdate)
                    }
                };
                BaseSparkline.prototype._getDefaultTooltipTemplate = function(options) {
                    let defaultTemplateNeeded = true;
                    const textAlign = this.option("rtlEnabled") ? "left" : "right";
                    if ((0, _type.isFunction)(options.customizeTooltip)) {
                        this._tooltip.update(options);
                        const formatObject = this._getTooltipData();
                        const customizeResult = options.customizeTooltip.call(formatObject, formatObject) ?? {};
                        defaultTemplateNeeded = !("html" in customizeResult) && !("text" in customizeResult)
                    }
                    return defaultTemplateNeeded && function(_ref3, textAlign) {
                        let {
                            lineSpacing: lineSpacing,
                            size: size
                        } = _ref3;
                        const lineHeight = `${(lineSpacing??2)+size}px`;
                        return function(_ref4, container) {
                            let {
                                valueText: valueText
                            } = _ref4;
                            const table = (0, _renderer.default)("<table>").css({
                                borderSpacing: 0,
                                lineHeight: lineHeight
                            });
                            for (let i = 0; i < valueText.length; i += 2) {
                                const tr = (0, _renderer.default)("<tr>");
                                (0, _renderer.default)("<td>").text(valueText[i]).appendTo(tr);
                                (0, _renderer.default)("<td>").css({
                                    width: 15
                                }).appendTo(tr);
                                (0, _renderer.default)("<td>").css({
                                    textAlign: textAlign
                                }).text(valueText[i + 1]).appendTo(tr);
                                table.append(tr)
                            }
                            container.append(table)
                        }
                    }(options.font, textAlign)
                };
                const exportPlugin = (0, _extend2.extend)(true, {}, _export.plugin, {
                    init: _common.noop,
                    dispose: _common.noop,
                    customize: null,
                    members: {
                        _getExportMenuOptions: null
                    }
                });
                BaseSparkline.addPlugin(exportPlugin);
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        92633:
            /*!**********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/sparklines/bullet.js ***!
              \**********************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 21274);
                var _base_sparkline = _interopRequireDefault(__webpack_require__( /*! ./base_sparkline */ 55676));
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 92848));

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const _Number = Number;
                const _isFinite = isFinite;
                const dxBullet = _base_sparkline.default.inherit({
                    _rootClassPrefix: "dxb",
                    _rootClass: "dxb-bullet",
                    _themeSection: "bullet",
                    _defaultSize: {
                        width: 300,
                        height: 30,
                        left: 1,
                        right: 1,
                        top: 2,
                        bottom: 2
                    },
                    _disposeWidgetElements: function() {
                        delete this._zeroLevelPath;
                        delete this._targetPath;
                        delete this._barValuePath
                    },
                    _cleanWidgetElements: function() {
                        this._zeroLevelPath.remove();
                        this._targetPath.remove();
                        this._barValuePath.remove()
                    },
                    _drawWidgetElements: function() {
                        this._drawBullet();
                        this._drawn()
                    },
                    _createHtmlElements: function() {
                        const renderer = this._renderer;
                        this._zeroLevelPath = renderer.path(void 0, "line").attr({
                            class: "dxb-zero-level",
                            "stroke-linecap": "square"
                        });
                        this._targetPath = renderer.path(void 0, "line").attr({
                            class: "dxb-target",
                            "stroke-linecap": "square"
                        });
                        this._barValuePath = renderer.path(void 0, "line").attr({
                            class: "dxb-bar-value",
                            "stroke-linecap": "square"
                        })
                    },
                    _prepareOptions: function() {
                        const that = this;
                        let options;
                        let startScaleValue;
                        let endScaleValue;
                        let level;
                        let value;
                        let target;
                        that._allOptions = options = that.callBase();
                        const isValueUndefined = void 0 === that._allOptions.value;
                        const isTargetUndefined = void 0 === that._allOptions.target;
                        that._tooltipEnabled = !(isValueUndefined && isTargetUndefined);
                        if (isValueUndefined) {
                            that._allOptions.value = 0
                        }
                        if (isTargetUndefined) {
                            that._allOptions.target = 0
                        }
                        options.value = value = _Number(options.value);
                        options.target = target = _Number(options.target);
                        if (void 0 === that._allOptions.startScaleValue) {
                            that._allOptions.startScaleValue = target < value ? target : value;
                            that._allOptions.startScaleValue = that._allOptions.startScaleValue < 0 ? that._allOptions.startScaleValue : 0
                        }
                        if (void 0 === that._allOptions.endScaleValue) {
                            that._allOptions.endScaleValue = target > value ? target : value
                        }
                        options.startScaleValue = startScaleValue = _Number(options.startScaleValue);
                        options.endScaleValue = endScaleValue = _Number(options.endScaleValue);
                        if (endScaleValue < startScaleValue) {
                            level = endScaleValue;
                            that._allOptions.endScaleValue = startScaleValue;
                            that._allOptions.startScaleValue = level;
                            that._allOptions.inverted = true
                        }
                    },
                    _updateRange: function() {
                        const options = this._allOptions;
                        this._ranges = {
                            arg: {
                                invert: options.rtlEnabled ? !options.inverted : options.inverted,
                                min: options.startScaleValue,
                                max: options.endScaleValue,
                                axisType: "continuous",
                                dataType: "numeric"
                            },
                            val: {
                                min: 0,
                                max: 1,
                                axisType: "continuous",
                                dataType: "numeric"
                            }
                        }
                    },
                    _drawBullet: function() {
                        const options = this._allOptions;
                        const isValidBounds = options.startScaleValue !== options.endScaleValue;
                        const isValidMin = _isFinite(options.startScaleValue);
                        const isValidMax = _isFinite(options.endScaleValue);
                        const isValidValue = _isFinite(options.value);
                        const isValidTarget = _isFinite(options.target);
                        if (isValidBounds && isValidMax && isValidMin && isValidTarget && isValidValue) {
                            this._drawBarValue();
                            this._drawTarget();
                            this._drawZeroLevel()
                        }
                    },
                    _getTargetParams: function() {
                        const options = this._allOptions;
                        const translatorY = this._valueAxis.getTranslator();
                        const x = this._argumentAxis.getTranslator().translate(options.target);
                        return {
                            points: [x, translatorY.translate(.02), x, translatorY.translate(.98)],
                            stroke: options.targetColor,
                            "stroke-width": options.targetWidth
                        }
                    },
                    _getBarValueParams: function() {
                        const options = this._allOptions;
                        const translatorX = this._argumentAxis.getTranslator();
                        const translatorY = this._valueAxis.getTranslator();
                        const startLevel = options.startScaleValue;
                        const endLevel = options.endScaleValue;
                        const value = options.value;
                        const y2 = translatorY.translate(.1);
                        const y1 = translatorY.translate(.9);
                        let x1;
                        let x2;
                        if (value > 0) {
                            x1 = startLevel <= 0 ? 0 : startLevel;
                            x2 = value >= endLevel ? endLevel : value < x1 ? x1 : value
                        } else {
                            x1 = endLevel >= 0 ? 0 : endLevel;
                            x2 = value < startLevel ? startLevel : value > x1 ? x1 : value
                        }
                        x1 = translatorX.translate(x1);
                        x2 = translatorX.translate(x2);
                        return {
                            points: [x1, y1, x2, y1, x2, y2, x1, y2],
                            fill: options.color
                        }
                    },
                    _getCorrectCanvas: function() {
                        return this._canvas
                    },
                    _getZeroLevelParams: function() {
                        const translatorY = this._valueAxis.getTranslator();
                        const x = this._argumentAxis.getTranslator().translate(0);
                        return {
                            points: [x, translatorY.translate(.02), x, translatorY.translate(.98)],
                            stroke: this._allOptions.targetColor,
                            "stroke-width": 1
                        }
                    },
                    _drawZeroLevel: function() {
                        const options = this._allOptions;
                        if (0 > options.endScaleValue || 0 < options.startScaleValue || !options.showZeroLevel) {
                            return
                        }
                        this._zeroLevelPath.attr(this._getZeroLevelParams()).sharp().append(this._renderer.root)
                    },
                    _drawTarget: function() {
                        const options = this._allOptions;
                        const target = options.target;
                        if (target > options.endScaleValue || target < options.startScaleValue || !options.showTarget) {
                            return
                        }
                        this._targetPath.attr(this._getTargetParams()).sharp().append(this._renderer.root)
                    },
                    _drawBarValue: function() {
                        this._barValuePath.attr(this._getBarValueParams()).append(this._renderer.root)
                    },
                    _getTooltipCoords: function() {
                        const canvas = this._canvas;
                        const rootOffset = this._renderer.getRootOffset();
                        const bBox = this._barValuePath.getBBox();
                        return {
                            x: bBox.x + bBox.width / 2 + rootOffset.left,
                            y: canvas.height / 2 + rootOffset.top
                        }
                    },
                    _getTooltipData: function() {
                        const tooltip = this._tooltip;
                        const options = this._allOptions;
                        const value = options.value;
                        const target = options.target;
                        const valueText = tooltip.formatValue(value);
                        const targetText = tooltip.formatValue(target);
                        return {
                            originalValue: value,
                            originalTarget: target,
                            value: valueText,
                            target: targetText,
                            valueText: ["Actual Value:", valueText, "Target Value:", targetText]
                        }
                    },
                    _isTooltipEnabled: function() {
                        return this._tooltipEnabled
                    }
                });
                (0, _iterator.each)(["color", "targetColor", "targetWidth", "showTarget", "showZeroLevel", "value", "target", "startScaleValue", "endScaleValue"], (function(_, name) {
                    dxBullet.prototype._optionChangesMap[name] = "OPTIONS"
                }));
                (0, _component_registrator.default)("dxBullet", dxBullet);
                exports.default = dxBullet;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        47206:
            /*!*************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/sparklines/sparkline.js ***!
              \*************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _base_sparkline = _interopRequireDefault(__webpack_require__( /*! ./base_sparkline */ 55676));
                var _data_validator = __webpack_require__( /*! ../components/data_validator */ 39104);
                var _base_series = __webpack_require__( /*! ../series/base_series */ 66151);
                var _utils = __webpack_require__( /*! ../core/utils */ 28779);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 11528);
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 92848));
                var _data_source = __webpack_require__( /*! ../core/data_source */ 25058);

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const ALLOWED_TYPES = {
                    line: true,
                    spline: true,
                    stepline: true,
                    area: true,
                    steparea: true,
                    splinearea: true,
                    bar: true,
                    winloss: true
                };
                const _math = Math;
                const _abs = _math.abs;
                const _round = _math.round;
                const _max = _math.max;
                const _min = _math.min;
                const _isFinite = isFinite;
                const _Number = Number;
                const _String = String;

                function selectPointColor(color, options, index, pointIndexes) {
                    if (index === pointIndexes.first || index === pointIndexes.last) {
                        color = options.firstLastColor
                    }
                    if ((pointIndexes.min || []).indexOf(index) >= 0) {
                        color = options.minColor
                    }
                    if ((pointIndexes.max || []).indexOf(index) >= 0) {
                        color = options.maxColor
                    }
                    return color
                }
                const dxSparkline = _base_sparkline.default.inherit({
                    _rootClassPrefix: "dxsl",
                    _rootClass: "dxsl-sparkline",
                    _themeSection: "sparkline",
                    _defaultSize: {
                        width: 250,
                        height: 30
                    },
                    _initCore: function() {
                        this.callBase();
                        this._createSeries()
                    },
                    _initialChanges: ["DATA_SOURCE"],
                    _dataSourceChangedHandler: function() {
                        this._requestChange(["UPDATE"])
                    },
                    _updateWidgetElements: function() {
                        this._updateSeries();
                        this.callBase()
                    },
                    _disposeWidgetElements: function() {
                        this._series && this._series.dispose();
                        this._series = this._seriesGroup = this._seriesLabelGroup = null
                    },
                    _cleanWidgetElements: function() {
                        this._seriesGroup.remove();
                        this._seriesLabelGroup.remove();
                        this._seriesGroup.clear();
                        this._seriesLabelGroup.clear();
                        this._series.removeGraphicElements();
                        this._series.removePointElements();
                        this._series.removeBordersGroup()
                    },
                    _drawWidgetElements: function() {
                        if (this._dataIsLoaded()) {
                            this._drawSeries();
                            this._drawn()
                        }
                    },
                    _getCorrectCanvas: function() {
                        const options = this._allOptions;
                        const canvas = this._canvas;
                        const halfPointSize = options.pointSize && Math.ceil(options.pointSize / 2) + 2;
                        const type = options.type;
                        if ("bar" !== type && "winloss" !== type && (options.showFirstLast || options.showMinMax)) {
                            return {
                                width: canvas.width,
                                height: canvas.height,
                                left: canvas.left + halfPointSize,
                                right: canvas.right + halfPointSize,
                                top: canvas.top + halfPointSize,
                                bottom: canvas.bottom + halfPointSize
                            }
                        }
                        return canvas
                    },
                    _prepareOptions: function() {
                        const that = this;
                        that._allOptions = that.callBase();
                        that._allOptions.type = (0, _utils.normalizeEnum)(that._allOptions.type);
                        if (!ALLOWED_TYPES[that._allOptions.type]) {
                            that._allOptions.type = "line"
                        }
                    },
                    _createHtmlElements: function() {
                        this._seriesGroup = this._renderer.g().attr({
                            class: "dxsl-series"
                        });
                        this._seriesLabelGroup = this._renderer.g().attr({
                            class: "dxsl-series-labels"
                        })
                    },
                    _createSeries: function() {
                        this._series = new _base_series.Series({
                            renderer: this._renderer,
                            seriesGroup: this._seriesGroup,
                            labelsGroup: this._seriesLabelGroup,
                            argumentAxis: this._argumentAxis,
                            valueAxis: this._valueAxis,
                            incidentOccurred: this._incidentOccurred
                        }, {
                            widgetType: "chart",
                            type: "line"
                        })
                    },
                    _updateSeries: function() {
                        const singleSeries = this._series;
                        this._prepareDataSource();
                        const seriesOptions = this._prepareSeriesOptions();
                        singleSeries.updateOptions(seriesOptions);
                        const groupsData = {
                            groups: [{
                                series: [singleSeries]
                            }]
                        };
                        groupsData.argumentOptions = {
                            type: "bar" === seriesOptions.type ? "discrete" : void 0
                        };
                        this._simpleDataSource = (0, _data_validator.validateData)(this._simpleDataSource, groupsData, this._incidentOccurred, {
                            checkTypeForAllData: false,
                            convertToAxisDataType: true,
                            sortingMethod: true
                        })[singleSeries.getArgumentField()];
                        seriesOptions.customizePoint = this._getCustomizeFunction();
                        singleSeries.updateData(this._simpleDataSource);
                        singleSeries.createPoints();
                        this._groupsDataCategories = groupsData.categories
                    },
                    _optionChangesMap: {
                        dataSource: "DATA_SOURCE"
                    },
                    _optionChangesOrder: ["DATA_SOURCE"],
                    _change_DATA_SOURCE: function() {
                        this._updateDataSource()
                    },
                    _prepareDataSource: function() {
                        const that = this;
                        const options = that._allOptions;
                        const argField = options.argumentField;
                        const valField = options.valueField;
                        const dataSource = that._dataSourceItems() || [];
                        const data = function(data, argField, valField, ignoreEmptyPoints) {
                            return (0, _utils.map)(data, (function(dataItem, index) {
                                let item = null;
                                let isDataNumber;
                                let value;
                                if (void 0 !== dataItem) {
                                    item = {};
                                    isDataNumber = _isFinite(dataItem);
                                    item[argField] = isDataNumber ? _String(index) : dataItem[argField];
                                    value = isDataNumber ? dataItem : dataItem[valField];
                                    item[valField] = null === value ? ignoreEmptyPoints ? void 0 : value : _Number(value);
                                    item = void 0 !== item[argField] && void 0 !== item[valField] ? item : null
                                }
                                return item
                            }))
                        }(dataSource, argField, valField, that.option("ignoreEmptyPoints"));
                        if ("winloss" === options.type) {
                            that._winlossDataSource = data;
                            that._simpleDataSource = function(data, argField, valField, target) {
                                return (0, _utils.map)(data, (function(dataItem) {
                                    const item = {};
                                    item[argField] = dataItem[argField];
                                    if (_abs(dataItem[valField] - target) < 1e-4) {
                                        item[valField] = 0
                                    } else if (dataItem[valField] > target) {
                                        item[valField] = 1
                                    } else {
                                        item[valField] = -1
                                    }
                                    return item
                                }))
                            }(data, argField, valField, options.winlossThreshold)
                        } else {
                            that._simpleDataSource = data
                        }
                    },
                    _prepareSeriesOptions: function() {
                        const options = this._allOptions;
                        const type = "winloss" === options.type ? "bar" : options.type;
                        return {
                            visible: true,
                            argumentField: options.argumentField,
                            valueField: options.valueField,
                            color: options.lineColor,
                            width: options.lineWidth,
                            widgetType: "chart",
                            name: "",
                            type: type,
                            opacity: -1 !== type.indexOf("area") ? this._allOptions.areaOpacity : void 0,
                            point: {
                                size: options.pointSize,
                                symbol: options.pointSymbol,
                                border: {
                                    visible: true,
                                    width: 2
                                },
                                color: options.pointColor,
                                visible: false,
                                hoverStyle: {
                                    border: {}
                                },
                                selectionStyle: {
                                    border: {}
                                }
                            },
                            border: {
                                color: options.lineColor,
                                width: options.lineWidth,
                                visible: "bar" !== type
                            }
                        }
                    },
                    _getCustomizeFunction: function() {
                        const that = this;
                        const options = that._allOptions;
                        const dataSource = that._winlossDataSource || that._simpleDataSource;
                        const drawnPointIndexes = that._getExtremumPointsIndexes(dataSource);
                        let customizeFunction;
                        if ("winloss" === options.type || "bar" === options.type) {
                            customizeFunction = function(pointIndexes, options, winlossData) {
                                return function() {
                                    const index = this.index;
                                    const isWinloss = "winloss" === options.type;
                                    const target = isWinloss ? options.winlossThreshold : 0;
                                    const value = isWinloss ? winlossData[index][options.valueField] : this.value;
                                    const positiveColor = isWinloss ? options.winColor : options.barPositiveColor;
                                    const negativeColor = isWinloss ? options.lossColor : options.barNegativeColor;
                                    return {
                                        color: selectPointColor(value >= target ? positiveColor : negativeColor, options, index, pointIndexes)
                                    }
                                }
                            }(drawnPointIndexes, options, that._winlossDataSource)
                        } else {
                            customizeFunction = function(pointIndexes, options) {
                                return function() {
                                    const color = selectPointColor(void 0, options, this.index, pointIndexes);
                                    return color ? {
                                        visible: true,
                                        border: {
                                            color: color
                                        }
                                    } : {}
                                }
                            }(drawnPointIndexes, options)
                        }
                        return customizeFunction
                    },
                    _getExtremumPointsIndexes: function(data) {
                        const that = this;
                        const options = that._allOptions;
                        const lastIndex = data.length - 1;
                        const indexes = {};
                        that._minMaxIndexes = function(data, valField) {
                            const firstItem = data[0] || {};
                            const firstValue = firstItem[valField] || 0;
                            let min = firstValue;
                            let max = firstValue;
                            let minIndexes = [0];
                            let maxIndexes = [0];
                            const dataLength = data.length;
                            let value;
                            let i;
                            for (i = 1; i < dataLength; i++) {
                                value = data[i][valField];
                                if (value < min) {
                                    min = value;
                                    minIndexes = [i]
                                } else if (value === min) {
                                    minIndexes.push(i)
                                }
                                if (value > max) {
                                    max = value;
                                    maxIndexes = [i]
                                } else if (value === max) {
                                    maxIndexes.push(i)
                                }
                            }
                            if (max === min) {
                                minIndexes = maxIndexes = []
                            }
                            return {
                                minIndexes: minIndexes,
                                maxIndexes: maxIndexes
                            }
                        }(data, options.valueField);
                        if (options.showFirstLast) {
                            indexes.first = 0;
                            indexes.last = lastIndex
                        }
                        if (options.showMinMax) {
                            indexes.min = that._minMaxIndexes.minIndexes;
                            indexes.max = that._minMaxIndexes.maxIndexes
                        }
                        return indexes
                    },
                    _getStick: function() {
                        return {
                            stick: "bar" !== this._series.type
                        }
                    },
                    _updateRange: function() {
                        const series = this._series;
                        const type = series.type;
                        const isBarType = "bar" === type;
                        const isWinlossType = "winloss" === type;
                        const rangeData = series.getRangeData();
                        const minValue = this._allOptions.minValue;
                        const hasMinY = (0, _type.isDefined)(minValue) && _isFinite(minValue);
                        const maxValue = this._allOptions.maxValue;
                        const hasMaxY = (0, _type.isDefined)(maxValue) && _isFinite(maxValue);
                        let argCoef;
                        const valCoef = .15 * (rangeData.val.max - rangeData.val.min);
                        if (isBarType || isWinlossType || "area" === type) {
                            if (0 !== rangeData.val.min) {
                                rangeData.val.min -= valCoef
                            }
                            if (0 !== rangeData.val.max) {
                                rangeData.val.max += valCoef
                            }
                        } else {
                            rangeData.val.min -= valCoef;
                            rangeData.val.max += valCoef
                        }
                        if (hasMinY || hasMaxY) {
                            if (hasMinY && hasMaxY) {
                                rangeData.val.minVisible = _min(minValue, maxValue);
                                rangeData.val.maxVisible = _max(minValue, maxValue)
                            } else {
                                rangeData.val.minVisible = hasMinY ? _Number(minValue) : void 0;
                                rangeData.val.maxVisible = hasMaxY ? _Number(maxValue) : void 0
                            }
                            if (isWinlossType) {
                                rangeData.val.minVisible = hasMinY ? _max(rangeData.val.minVisible, -1) : void 0;
                                rangeData.val.maxVisible = hasMaxY ? _min(rangeData.val.maxVisible, 1) : void 0
                            }
                        }
                        if (series.getPoints().length > 1) {
                            if (isBarType) {
                                argCoef = .1 * (rangeData.arg.max - rangeData.arg.min);
                                rangeData.arg.min = rangeData.arg.min - argCoef;
                                rangeData.arg.max = rangeData.arg.max + argCoef
                            }
                        }
                        rangeData.arg.categories = this._groupsDataCategories;
                        this._ranges = rangeData
                    },
                    _getBarWidth: function(pointsCount) {
                        const canvas = this._canvas;
                        const intervalWidth = 4 * pointsCount;
                        const rangeWidth = canvas.width - canvas.left - canvas.right - intervalWidth;
                        let width = _round(rangeWidth / pointsCount);
                        if (width < 1) {
                            width = 1
                        }
                        if (width > 50) {
                            width = 50
                        }
                        return width
                    },
                    _correctPoints: function() {
                        const that = this;
                        const seriesType = that._allOptions.type;
                        const seriesPoints = that._series.getPoints();
                        const pointsLength = seriesPoints.length;
                        let barWidth;
                        let i;
                        if ("bar" === seriesType || "winloss" === seriesType) {
                            barWidth = that._getBarWidth(pointsLength);
                            for (i = 0; i < pointsLength; i++) {
                                seriesPoints[i].correctCoordinates({
                                    width: barWidth,
                                    offset: 0
                                })
                            }
                        }
                    },
                    _drawSeries: function() {
                        const that = this;
                        if (that._simpleDataSource.length > 0) {
                            that._correctPoints();
                            that._series.draw();
                            that._seriesGroup.append(that._renderer.root)
                        }
                    },
                    _isTooltipEnabled: function() {
                        return !!this._simpleDataSource.length
                    },
                    _getTooltipData: function() {
                        const options = this._allOptions;
                        const dataSource = this._winlossDataSource || this._simpleDataSource;
                        const tooltip = this._tooltip;
                        if (0 === dataSource.length) {
                            return {}
                        }
                        const minMax = this._minMaxIndexes;
                        const valueField = options.valueField;
                        const first = dataSource[0][valueField];
                        const last = dataSource[dataSource.length - 1][valueField];
                        const min = (0, _type.isDefined)(minMax.minIndexes[0]) ? dataSource[minMax.minIndexes[0]][valueField] : first;
                        const max = (0, _type.isDefined)(minMax.maxIndexes[0]) ? dataSource[minMax.maxIndexes[0]][valueField] : first;
                        const formattedFirst = tooltip.formatValue(first);
                        const formattedLast = tooltip.formatValue(last);
                        const formattedMin = tooltip.formatValue(min);
                        const formattedMax = tooltip.formatValue(max);
                        const customizeObject = {
                            firstValue: formattedFirst,
                            lastValue: formattedLast,
                            minValue: formattedMin,
                            maxValue: formattedMax,
                            originalFirstValue: first,
                            originalLastValue: last,
                            originalMinValue: min,
                            originalMaxValue: max,
                            valueText: ["Start:", formattedFirst, "End:", formattedLast, "Min:", formattedMin, "Max:", formattedMax]
                        };
                        if ("winloss" === options.type) {
                            customizeObject.originalThresholdValue = options.winlossThreshold;
                            customizeObject.thresholdValue = tooltip.formatValue(options.winlossThreshold)
                        }
                        return customizeObject
                    }
                });
                (0, _utils.map)(["lossColor", "lineColor", "lineWidth", "areaOpacity", "minColor", "maxColor", "barPositiveColor", "barNegativeColor", "winColor", "lessColor", "firstLastColor", "pointSymbol", "pointColor", "pointSize", "type", "argumentField", "valueField", "winlossThreshold", "showFirstLast", "showMinMax", "ignoreEmptyPoints", "minValue", "maxValue"], (function(name) {
                    dxSparkline.prototype._optionChangesMap[name] = "OPTIONS"
                }));
                (0, _component_registrator.default)("dxSparkline", dxSparkline);
                exports.default = dxSparkline;
                dxSparkline.addPlugin(_data_source.plugin);
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        84560:
            /*!***********************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/themes.js ***!
              \***********************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.addCacheItem = function(target) {
                    const cacheUid = ++nextCacheUid;
                    target._cache = cacheUid;
                    widgetsCache[cacheUid] = target
                };
                exports.currentTheme = currentTheme;
                exports.getTheme = getTheme;
                exports.refreshTheme = function() {
                    Object.keys(widgetsCache).forEach((key => {
                        widgetsCache[key].refresh()
                    }));
                    return this
                };
                exports.registerTheme = registerTheme;
                exports.registerThemeSchemeAlias = function(from, to) {
                    themesSchemeMapping[from] = to
                };
                exports.removeCacheItem = function(target) {
                    delete widgetsCache[target._cache]
                };
                var _extend2 = __webpack_require__( /*! ../core/utils/extend */ 52576);
                var _utils = __webpack_require__( /*! ./core/utils */ 28779);
                var _themes = __webpack_require__( /*! ../ui/themes */ 52071);
                var _type = __webpack_require__( /*! ../core/utils/type */ 11528);
                var _index = _interopRequireDefault(__webpack_require__( /*! ../__internal/viz/core/themes/generic/light/index */ 4702));
                var _carmine = _interopRequireDefault(__webpack_require__( /*! ../__internal/viz/core/themes/generic/carmine */ 58208));
                var _dark = _interopRequireDefault(__webpack_require__( /*! ../__internal/viz/core/themes/generic/dark */ 52541));
                var _contrast = _interopRequireDefault(__webpack_require__( /*! ../__internal/viz/core/themes/generic/contrast */ 2611));
                var _darkmoon = _interopRequireDefault(__webpack_require__( /*! ../__internal/viz/core/themes/generic/darkmoon */ 9940));
                var _darkviolet = _interopRequireDefault(__webpack_require__( /*! ../__internal/viz/core/themes/generic/darkviolet */ 26374));
                var _greenmist = _interopRequireDefault(__webpack_require__( /*! ../__internal/viz/core/themes/generic/greenmist */ 29431));
                var _softblue = _interopRequireDefault(__webpack_require__( /*! ../__internal/viz/core/themes/generic/softblue */ 56829));
                var _index2 = _interopRequireDefault(__webpack_require__( /*! ../__internal/viz/core/themes/material/index */ 55073));
                var _index3 = _interopRequireDefault(__webpack_require__( /*! ../__internal/viz/core/themes/fluent/index */ 12638));

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const themes = {};
                const themesMapping = {};
                const themesSchemeMapping = {};
                const _extend = _extend2.extend;
                let currentThemeName = null;
                let defaultTheme;
                let nextCacheUid = 0;
                const widgetsCache = {};

                function getTheme(themeName) {
                    const name = (0, _utils.normalizeEnum)(themeName);
                    return themes[name] || themes[themesMapping[name] || currentTheme()]
                }

                function findThemeNameByName(name, scheme) {
                    const fullThemeKey = `${name}.${scheme}`;
                    return themesMapping[fullThemeKey] || themesSchemeMapping[fullThemeKey] || themesMapping[name]
                }

                function currentTheme(themeName, colorScheme) {
                    if (!arguments.length) {
                        return currentThemeName || findThemeNameByName((0, _themes.current)()) || defaultTheme
                    }
                    const scheme = (0, _utils.normalizeEnum)(colorScheme);
                    currentThemeName = (null !== themeName && void 0 !== themeName && themeName.platform ? function(platform, version, scheme) {
                        return findThemeNameByName(platform + version, scheme) || findThemeNameByName(platform, scheme)
                    }((0, _utils.normalizeEnum)(themeName.platform), themeName.version, scheme) : findThemeNameByName((0, _utils.normalizeEnum)(themeName), scheme)) || currentThemeName;
                    return this
                }

                function registerTheme(theme, baseThemeName) {
                    const themeName = (0, _utils.normalizeEnum)(theme && theme.name);
                    if (themeName) {
                        theme.isDefault && (defaultTheme = themeName);
                        ! function(themeName, targetThemeName) {
                            const themeInfo = function(themeName, splitter) {
                                const k = themeName.indexOf(splitter);
                                return k > 0 ? {
                                    name: themeName.substring(0, k),
                                    scheme: themeName.substring(k + 1)
                                } : null
                            }(themeName, ".") || {
                                name: themeName
                            };
                            const name = themeInfo.name;
                            const scheme = themeInfo.scheme;
                            if (scheme) {
                                const fullThemeKey = `${name}.${scheme}`;
                                themesMapping[name] = themesMapping[name] || targetThemeName;
                                themesMapping[fullThemeKey] = targetThemeName
                            } else {
                                themesMapping[name] = targetThemeName
                            }
                        }(themeName, themeName);
                        themes[themeName] = _extend(true, {}, getTheme(baseThemeName), function(theme) {
                            theme = _extend(true, {
                                loadingIndicator: {
                                    font: {}
                                },
                                export: {
                                    font: {}
                                },
                                legend: {
                                    font: {},
                                    border: {}
                                },
                                title: {
                                    font: {}
                                },
                                tooltip: {
                                    font: {}
                                },
                                "chart:common": {},
                                "chart:common:axis": {
                                    grid: {},
                                    minorGrid: {},
                                    tick: {},
                                    minorTick: {},
                                    title: {
                                        font: {}
                                    },
                                    label: {
                                        font: {}
                                    }
                                },
                                "chart:common:annotation": {
                                    font: {},
                                    border: {}
                                },
                                chart: {
                                    commonSeriesSettings: {
                                        candlestick: {}
                                    }
                                },
                                pie: {},
                                polar: {},
                                gauge: {
                                    scale: {
                                        tick: {},
                                        minorTick: {},
                                        label: {
                                            font: {}
                                        }
                                    }
                                },
                                barGauge: {},
                                funnel: {},
                                sankey: {},
                                map: {
                                    background: {}
                                },
                                treeMap: {
                                    tile: {
                                        selectionStyle: {
                                            border: {}
                                        }
                                    },
                                    group: {
                                        border: {},
                                        selectionStyle: {
                                            border: {}
                                        },
                                        label: {
                                            font: {}
                                        }
                                    }
                                },
                                rangeSelector: {
                                    scale: {
                                        tick: {},
                                        minorTick: {},
                                        label: {
                                            font: {}
                                        }
                                    },
                                    chart: {}
                                },
                                sparkline: {},
                                bullet: {}
                            }, theme);
                            mergeScalar(theme.loadingIndicator, "backgroundColor", theme);
                            mergeScalar(theme.chart.commonSeriesSettings.candlestick, "innerColor", null, theme.backgroundColor);
                            mergeScalar(theme.map.background, "color", null, theme.backgroundColor);
                            mergeScalar(theme.title.font, "color", null, theme.primaryTitleColor);
                            mergeObject(theme.title, "subtitle", null, theme.title);
                            mergeScalar(theme.legend.font, "color", null, theme.secondaryTitleColor);
                            mergeScalar(theme.legend.border, "color", null, theme.gridColor);
                            ! function(theme) {
                                const commonAxisSettings = theme["chart:common:axis"];
                                const colorFieldName = "color";
                                [commonAxisSettings.grid, commonAxisSettings.minorGrid].forEach((obj => {
                                    mergeScalar(obj, colorFieldName, null, theme.gridColor)
                                }));
                                [commonAxisSettings, commonAxisSettings.tick, commonAxisSettings.minorTick, commonAxisSettings.label.font].forEach((obj => {
                                    mergeScalar(obj, colorFieldName, null, theme.axisColor)
                                }));
                                mergeScalar(commonAxisSettings.title.font, colorFieldName, null, theme.secondaryTitleColor);
                                mergeScalar(theme.gauge.scale.label.font, colorFieldName, null, theme.axisColor);
                                mergeScalar(theme.gauge.scale.tick, colorFieldName, null, theme.backgroundColor);
                                mergeScalar(theme.gauge.scale.minorTick, colorFieldName, null, theme.backgroundColor);
                                mergeScalar(theme.rangeSelector.scale.label.font, colorFieldName, null, theme.axisColor)
                            }(theme);
                            ["chart", "pie", "polar", "gauge", "barGauge", "map", "treeMap", "funnel", "rangeSelector", "sparkline", "bullet", "sankey"].forEach((section => {
                                mergeScalar(theme[section], "redrawOnResize", theme);
                                mergeScalar(theme[section], "containerBackgroundColor", null, theme.backgroundColor);
                                mergeObject(theme[section], "tooltip", theme);
                                mergeObject(theme[section], "export", theme)
                            }));
                            ["chart", "pie", "polar", "gauge", "barGauge", "map", "treeMap", "funnel", "rangeSelector", "sankey"].forEach((section => {
                                mergeObject(theme[section], "loadingIndicator", theme);
                                mergeObject(theme[section], "legend", theme);
                                mergeObject(theme[section], "title", theme)
                            }));
                            ["chart", "pie", "polar"].forEach((section => {
                                mergeObject(theme, section, null, theme["chart:common"])
                            }));
                            ["chart", "polar"].forEach((section => {
                                theme[section] = theme[section] || {};
                                mergeObject(theme[section], "commonAxisSettings", null, theme["chart:common:axis"])
                            }));
                            ["chart", "polar", "map", "pie"].forEach((section => {
                                theme[section] = theme[section] || {};
                                mergeObject(theme[section], "commonAnnotationSettings", null, theme["chart:common:annotation"])
                            }));
                            mergeObject(theme.rangeSelector.chart, "commonSeriesSettings", theme.chart);
                            mergeObject(theme.rangeSelector.chart, "dataPrepareSettings", theme.chart);
                            mergeScalar(theme.treeMap.group.border, "color", null, theme.gridColor);
                            mergeScalar(theme.treeMap.tile.selectionStyle.border, "color", null, theme.primaryTitleColor);
                            mergeScalar(theme.treeMap.group.selectionStyle.border, "color", null, theme.primaryTitleColor);
                            mergeScalar(theme.map.legend, "backgroundColor", theme);
                            ! function(theme) {
                                const map = theme.map;
                                ["area", "line", "marker"].forEach((section => {
                                    mergeObject(map, "layer:" + section, null, map.layer)
                                }));
                                ["dot", "bubble", "pie", "image"].forEach((section => {
                                    mergeObject(map, "layer:marker:" + section, null, map["layer:marker"])
                                }))
                            }(theme);
                            return theme
                        }(theme))
                    }
                }

                function mergeScalar(target, field, source, sourceValue) {
                    const _value = (null === source || void 0 === source ? void 0 : source[field]) ?? sourceValue;
                    if (void 0 !== _value && void 0 === target[field]) {
                        target[field] = _value
                    }
                }

                function mergeObject(target, field, source, sourceValue) {
                    const _value = (null === source || void 0 === source ? void 0 : source[field]) ?? sourceValue;
                    if (void 0 !== _value) {
                        target[field] = _extend(true, {}, _value, target[field])
                    }
                }
                if ((0, _type.isEmptyObject)(themes) && (0, _type.isEmptyObject)(themesMapping) && !defaultTheme) {
                    [].concat(_index.default, _carmine.default, _dark.default, _contrast.default, _darkmoon.default, _darkviolet.default, _greenmist.default, _softblue.default, _index2.default, _index3.default).forEach((t => {
                        registerTheme(t.theme, t.baseThemeName)
                    }))
                }
            },
        37279:
            /*!************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/translators/category_translator.js ***!
              \************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _type = __webpack_require__( /*! ../../core/utils/type */ 11528);
                var _math = __webpack_require__( /*! ../../core/utils/math */ 50254);
                const round = Math.round;

                function getValue(value) {
                    return value
                }
                exports.default = {
                    translate: function(category, directionOffset) {
                        const canvasOptions = this._canvasOptions;
                        const categoryIndex = this._categoriesToPoints[null === category || void 0 === category ? void 0 : category.valueOf()];
                        const specialValue = this.translateSpecialCase(category);
                        const startPointIndex = canvasOptions.startPointIndex || 0;
                        const stickInterval = this._options.stick ? 0 : .5;
                        if ((0, _type.isDefined)(specialValue)) {
                            return round(specialValue)
                        }
                        if (!categoryIndex && 0 !== categoryIndex) {
                            return null
                        }
                        directionOffset = directionOffset || 0;
                        const stickDelta = categoryIndex + stickInterval - startPointIndex + .5 * directionOffset;
                        return round(this._calculateProjection(canvasOptions.interval * stickDelta))
                    },
                    getInterval: function() {
                        return this._canvasOptions.interval
                    },
                    getEventScale: function(zoomEvent) {
                        const scale = zoomEvent.deltaScale || 1;
                        return 1 - (1 - scale) / (.75 + this.visibleCategories.length / this._categories.length)
                    },
                    zoom: function(translate, scale) {
                        const scaleOffset = Math.abs(Math.abs(scale) - 1);
                        const isZoomIn = scale > 1;
                        if (1 !== scale && scaleOffset < .05) {
                            scale = this.getMinScale(isZoomIn)
                        }
                        const categories = this._categories;
                        const canvasOptions = this._canvasOptions;
                        const stick = this._options.stick;
                        const invert = canvasOptions.invert;
                        const interval = canvasOptions.interval * scale;
                        const translateCategories = translate / interval;
                        const visibleCount = (this.visibleCategories || []).length;
                        let startCategoryIndex = parseInt((canvasOptions.startPointIndex || 0) + translateCategories + .5);
                        const categoriesLength = parseInt((0, _math.adjust)(canvasOptions.canvasLength / interval) + (stick ? 1 : 0)) || 1;
                        let endCategoryIndex;
                        if (invert) {
                            startCategoryIndex = parseInt((canvasOptions.startPointIndex || 0) + visibleCount - translateCategories + .5) - categoriesLength
                        }
                        if (startCategoryIndex < 0) {
                            startCategoryIndex = 0
                        }
                        endCategoryIndex = startCategoryIndex + categoriesLength;
                        if (endCategoryIndex > categories.length) {
                            endCategoryIndex = categories.length;
                            startCategoryIndex = endCategoryIndex - categoriesLength;
                            if (startCategoryIndex < 0) {
                                startCategoryIndex = 0
                            }
                        }
                        const newVisibleCategories = categories.slice(parseInt(startCategoryIndex), parseInt(endCategoryIndex));
                        const newInterval = this._getDiscreteInterval(newVisibleCategories.length, canvasOptions);
                        scale = newInterval / canvasOptions.interval;
                        translate = this.translate(!invert ? newVisibleCategories[0] : newVisibleCategories[newVisibleCategories.length - 1]) * scale - (canvasOptions.startPoint + (stick ? 0 : newInterval / 2));
                        return {
                            min: newVisibleCategories[0],
                            max: newVisibleCategories[newVisibleCategories.length - 1],
                            translate: translate,
                            scale: scale
                        }
                    },
                    getMinScale: function(zoom) {
                        const canvasOptions = this._canvasOptions;
                        let categoriesLength = (this.visibleCategories || this._categories).length;
                        categoriesLength += (parseInt(.1 * categoriesLength) || 1) * (zoom ? -2 : 2);
                        return canvasOptions.canvasLength / (Math.max(categoriesLength, 1) * canvasOptions.interval)
                    },
                    getScale: function(min, max) {
                        const canvasOptions = this._canvasOptions;
                        const visibleArea = this.getCanvasVisibleArea();
                        const stickOffset = !this._options.stick && 1;
                        let minPoint = (0, _type.isDefined)(min) ? this.translate(min, -stickOffset) : null;
                        let maxPoint = (0, _type.isDefined)(max) ? this.translate(max, +stickOffset) : null;
                        if (null === minPoint) {
                            minPoint = canvasOptions.invert ? visibleArea.max : visibleArea.min
                        }
                        if (null === maxPoint) {
                            maxPoint = canvasOptions.invert ? visibleArea.min : visibleArea.max
                        }
                        return this.canvasLength / Math.abs(maxPoint - minPoint)
                    },
                    isValid: function(value) {
                        return (0, _type.isDefined)(value) ? this._categoriesToPoints[value.valueOf()] >= 0 : false
                    },
                    getCorrectValue: getValue,
                    to: function(value, direction) {
                        const canvasOptions = this._canvasOptions;
                        const categoryIndex = this._categoriesToPoints[null === value || void 0 === value ? void 0 : value.valueOf()];
                        const startPointIndex = canvasOptions.startPointIndex || 0;
                        const stickDelta = categoryIndex + (this._options.stick ? 0 : .5) - startPointIndex + (this._businessRange.invert ? -1 : 1) * direction * .5;
                        return round(this._calculateProjection(canvasOptions.interval * stickDelta))
                    },
                    from: function(position) {
                        let direction = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0;
                        const canvasOptions = this._canvasOptions;
                        const startPoint = canvasOptions.startPoint;
                        const categories = this.visibleCategories || this._categories;
                        const categoriesLength = categories.length;
                        const stickInterval = this._options.stick ? .5 : 0;
                        let result = round((position - startPoint) / canvasOptions.interval + stickInterval - .5 - .5 * direction);
                        if (result >= categoriesLength) {
                            result = categoriesLength - 1
                        }
                        if (result < 0) {
                            result = 0
                        }
                        if (canvasOptions.invert) {
                            result = categoriesLength - result - 1
                        }
                        return categories[result]
                    },
                    _add: function() {
                        return NaN
                    },
                    toValue: getValue,
                    isValueProlonged: true,
                    getRangeByMinZoomValue(minZoom, visualRange) {
                        const categories = this._categories;
                        const minVisibleIndex = categories.indexOf(visualRange.minVisible);
                        const maxVisibleIndex = categories.indexOf(visualRange.maxVisible);
                        const startIndex = minVisibleIndex + minZoom - 1;
                        const endIndex = maxVisibleIndex - minZoom + 1;
                        if (categories[startIndex]) {
                            return [visualRange.minVisible, categories[startIndex]]
                        } else {
                            return [categories[endIndex], visualRange.maxVisible]
                        }
                    }
                };
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        77296:
            /*!************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/translators/datetime_translator.js ***!
              \************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _date = (e = __webpack_require__( /*! ../../core/utils/date */ 41380), e && e.__esModule ? e : {
                    default: e
                });
                var e;

                function parse(value) {
                    return null !== value ? new Date(value) : value
                }
                exports.default = {
                    fromValue: parse,
                    toValue: parse,
                    _add: _date.default.addDateInterval,
                    convert: _date.default.dateToMilliseconds
                };
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        24136:
            /*!************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/translators/interval_translator.js ***!
              \************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _type = __webpack_require__( /*! ../../core/utils/type */ 11528);
                var _date = (e = __webpack_require__( /*! ../../core/utils/date */ 41380), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                var _math = __webpack_require__( /*! ../../core/utils/math */ 50254);
                const floor = Math.floor;
                exports.default = {
                    _intervalize: function(value, interval) {
                        if (!(0, _type.isDefined)(value)) {
                            return
                        }
                        if ("datetime" === this._businessRange.dataType) {
                            if ((0, _type.isNumeric)(value)) {
                                value = new Date(value)
                            } else {
                                value = new Date(value.getTime())
                            }
                            value = _date.default.correctDateWithUnitBeginning(value, interval, null, this._options.firstDayOfWeek)
                        } else {
                            value = (0, _math.adjust)(floor((0, _math.adjust)(value / interval)) * interval, interval)
                        }
                        return value
                    },
                    translate: function(bp, direction, skipRound, interval) {
                        const specialValue = this.translateSpecialCase(bp);
                        if ((0, _type.isDefined)(specialValue)) {
                            return Math.round(specialValue)
                        }
                        interval = interval || this._options.interval;
                        if (!this.isValid(bp, interval)) {
                            return null
                        }
                        return this.to(bp, direction, skipRound, interval)
                    },
                    getInterval: function() {
                        return Math.round(this._canvasOptions.ratioOfCanvasRange * (this._businessRange.interval || Math.abs(this._canvasOptions.rangeMax - this._canvasOptions.rangeMin)))
                    },
                    zoom: function() {},
                    getMinScale: function() {},
                    getScale: function() {},
                    _parse: function(value) {
                        return "datetime" === this._businessRange.dataType ? new Date(value) : Number(value)
                    },
                    fromValue: function(value) {
                        return this._parse(value)
                    },
                    toValue: function(value) {
                        return this._parse(value)
                    },
                    isValid: function(value, interval) {
                        const that = this;
                        const co = that._canvasOptions;
                        let rangeMin = co.rangeMin;
                        let rangeMax = co.rangeMax;
                        interval = interval || that._options.interval;
                        if (null === value || isNaN(value)) {
                            return false
                        }
                        value = "datetime" === that._businessRange.dataType && (0, _type.isNumeric)(value) ? new Date(value) : value;
                        if (interval !== that._options.interval) {
                            rangeMin = that._intervalize(rangeMin, interval);
                            rangeMax = that._intervalize(rangeMax, interval)
                        }
                        if (value.valueOf() < rangeMin || value.valueOf() >= _date.default.addInterval(rangeMax, interval)) {
                            return false
                        }
                        return true
                    },
                    to: function(bp, direction, skipRound, interval) {
                        interval = interval || this._options.interval;
                        const v1 = this._intervalize(bp, interval);
                        const v2 = _date.default.addInterval(v1, interval);
                        let res = this._to(v1, skipRound);
                        const p2 = this._to(v2, skipRound);
                        if (!direction) {
                            res = floor((res + p2) / 2)
                        } else if (direction > 0) {
                            res = p2
                        }
                        return res
                    },
                    _to: function(value, skipRound) {
                        const co = this._canvasOptions;
                        const rMin = co.rangeMinVisible;
                        const rMax = co.rangeMaxVisible;
                        let offset = value - rMin;
                        if (value < rMin) {
                            offset = 0
                        } else if (value > rMax) {
                            offset = _date.default.addInterval(rMax, this._options.interval) - rMin
                        }
                        const projectedValue = this._calculateProjection(offset * this._canvasOptions.ratioOfCanvasRange);
                        return this._conversionValue(projectedValue, skipRound)
                    },
                    from: function(position, direction) {
                        const origInterval = this._options.interval;
                        let interval = origInterval;
                        const co = this._canvasOptions;
                        const rMin = co.rangeMinVisible;
                        const rMax = co.rangeMaxVisible;
                        let value;
                        if ("datetime" === this._businessRange.dataType) {
                            interval = _date.default.dateToMilliseconds(origInterval)
                        }
                        value = this._calculateUnProjection((position - this._canvasOptions.startPoint) / this._canvasOptions.ratioOfCanvasRange);
                        value = this._intervalize(_date.default.addInterval(value, interval / 2, direction > 0), origInterval);
                        if (value < rMin) {
                            value = rMin
                        } else if (value > rMax) {
                            value = rMax
                        }
                        return value
                    },
                    _add: function() {
                        return NaN
                    },
                    isValueProlonged: true
                };
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        19444:
            /*!***************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/translators/logarithmic_translator.js ***!
              \***************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _utils = __webpack_require__( /*! ../core/utils */ 28779);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 11528);
                exports.default = {
                    fromValue: function(value) {
                        return null !== value ? (0, _utils.getLogExt)(value, this._canvasOptions.base, this._businessRange.allowNegatives, this._businessRange.linearThreshold) : value
                    },
                    toValue: function(value) {
                        return null !== value ? (0, _utils.raiseToExt)(value, this._canvasOptions.base, this._businessRange.allowNegatives, this._businessRange.linearThreshold) : value
                    },
                    getMinBarSize: function(minBarSize) {
                        const visibleArea = this.getCanvasVisibleArea();
                        const minValue = this.from(visibleArea.min + minBarSize);
                        const canvasOptions = this._canvasOptions;
                        const startValue = this.fromValue(this.from(visibleArea.min));
                        const endValue = this.fromValue(minValue ?? this.from(visibleArea.max));
                        const value = Math.abs(startValue - endValue);
                        return Math.pow(canvasOptions.base, value)
                    },
                    checkMinBarSize: function(initialValue, minShownValue, stackValue) {
                        const canvasOptions = this._canvasOptions;
                        const prevValue = stackValue ? stackValue - initialValue : 0;
                        const baseMethod = this.constructor.prototype.checkMinBarSize;
                        let minBarSize;
                        let updateValue;
                        if ((0, _type.isDefined)(minShownValue) && prevValue > 0) {
                            minBarSize = baseMethod(this.fromValue(stackValue / prevValue), this.fromValue(minShownValue) - canvasOptions.rangeMinVisible);
                            updateValue = Math.pow(canvasOptions.base, this.fromValue(prevValue) + minBarSize) - prevValue
                        } else {
                            updateValue = baseMethod(initialValue, minShownValue)
                        }
                        return updateValue
                    }
                };
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        99857:
            /*!**********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/translators/range.js ***!
              \**********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.Range = void 0;
                var _type = __webpack_require__( /*! ../../core/utils/type */ 11528);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576);
                var _utils = __webpack_require__( /*! ../core/utils */ 28779);
                const _isDefined = _type.isDefined;
                const _isDate = _type.isDate;
                const _isFunction = _type.isFunction;

                function otherLessThan(thisValue, otherValue) {
                    return otherValue < thisValue
                }

                function otherGreaterThan(thisValue, otherValue) {
                    return otherValue > thisValue
                }

                function compareAndReplace(thisValue, otherValue, setValue, compare) {
                    const otherValueDefined = _isDefined(otherValue);
                    if (_isDefined(thisValue)) {
                        if (otherValueDefined && compare(thisValue, otherValue)) {
                            setValue(otherValue)
                        }
                    } else if (otherValueDefined) {
                        setValue(otherValue)
                    }
                }
                const Range = function(range) {
                    range && (0, _extend.extend)(this, range)
                };
                exports.Range = Range;
                const _Range = Range;
                _Range.prototype = {
                    constructor: _Range,
                    addRange: function(otherRange) {
                        const that = this;
                        const categories = that.categories;
                        const otherCategories = otherRange.categories;
                        const isDiscrete = "discrete" === that.axisType;
                        const compareAndReplaceByField = function(field, compare) {
                            compareAndReplace(that[field], otherRange[field], (function(value) {
                                that[field] = value
                            }), compare)
                        };
                        const controlValuesByVisibleBounds = function(valueField, visibleValueField, compare) {
                            compareAndReplace(that[valueField], that[visibleValueField], (function(value) {
                                _isDefined(that[valueField]) && (that[valueField] = value)
                            }), compare)
                        };
                        const checkField = function(field) {
                            that[field] = that[field] || otherRange[field]
                        };
                        checkField("invert");
                        checkField("containsConstantLine");
                        checkField("axisType");
                        checkField("dataType");
                        checkField("isSpacedMargin");
                        if ("logarithmic" === that.axisType) {
                            checkField("base")
                        } else {
                            that.base = void 0
                        }
                        compareAndReplaceByField("min", otherLessThan);
                        compareAndReplaceByField("max", otherGreaterThan);
                        if (isDiscrete) {
                            checkField("minVisible");
                            checkField("maxVisible")
                        } else {
                            compareAndReplaceByField("minVisible", otherLessThan);
                            compareAndReplaceByField("maxVisible", otherGreaterThan)
                        }
                        compareAndReplaceByField("interval", otherLessThan);
                        if (!isDiscrete) {
                            controlValuesByVisibleBounds("min", "minVisible", otherLessThan);
                            controlValuesByVisibleBounds("min", "maxVisible", otherLessThan);
                            controlValuesByVisibleBounds("max", "maxVisible", otherGreaterThan);
                            controlValuesByVisibleBounds("max", "minVisible", otherGreaterThan)
                        }
                        if (void 0 === categories) {
                            that.categories = otherCategories
                        } else {
                            that.categories = otherCategories ? (0, _utils.unique)(categories.concat(otherCategories)) : categories
                        }
                        if ("logarithmic" === that.axisType) {
                            checkField("allowNegatives");
                            compareAndReplaceByField("linearThreshold", otherLessThan)
                        }
                        return that
                    },
                    isEmpty: function() {
                        return (!_isDefined(this.min) || !_isDefined(this.max)) && (!this.categories || 0 === this.categories.length)
                    },
                    correctValueZeroLevel: function() {
                        const that = this;
                        if (_isDate(that.max) || _isDate(that.min)) {
                            return that
                        }

                        function setZeroLevel(min, max) {
                            that[min] < 0 && that[max] < 0 && (that[max] = 0);
                            that[min] > 0 && that[max] > 0 && (that[min] = 0)
                        }
                        setZeroLevel("min", "max");
                        setZeroLevel("minVisible", "maxVisible");
                        return that
                    },
                    sortCategories(sort) {
                        if (false === sort || !this.categories) {
                            return
                        }
                        if (Array.isArray(sort)) {
                            const sortValues = sort.map((item => item.valueOf()));
                            const filteredSeriesCategories = this.categories.filter((item => -1 === sortValues.indexOf(item.valueOf())));
                            this.categories = sort.concat(filteredSeriesCategories)
                        } else {
                            const notAFunction = !_isFunction(sort);
                            if (notAFunction && "string" !== this.dataType) {
                                sort = (a, b) => a.valueOf() - b.valueOf()
                            } else if (notAFunction) {
                                sort = false
                            }
                            sort && this.categories.sort(sort)
                        }
                    }
                }
            },
        14393:
            /*!*****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/translators/translator1d.js ***!
              \*****************************************************************************/
            function(__unused_webpack_module, exports) {
                exports.Translator1D = Translator1D;
                const _Number = Number;

                function Translator1D() {
                    this.setDomain(arguments[0], arguments[1]).setCodomain(arguments[2], arguments[3]).setInverted(false)
                }
                Translator1D.prototype = {
                    constructor: Translator1D,
                    setDomain: function(domain1, domain2) {
                        this._domain1 = _Number(domain1);
                        this._domain2 = _Number(domain2);
                        this._domainDelta = this._domain2 - this._domain1;
                        return this
                    },
                    setCodomain: function(codomain1, codomain2) {
                        this._codomain1 = _Number(codomain1);
                        this._codomain2 = _Number(codomain2);
                        this._codomainDelta = this._codomain2 - this._codomain1;
                        return this
                    },
                    setInverted(state) {
                        this.inverted = state
                    },
                    getDomain: function() {
                        return [this._domain1, this._domain2]
                    },
                    getCodomain: function() {
                        return [this._codomain1, this._codomain2]
                    },
                    getDomainStart: function() {
                        return this._domain1
                    },
                    getDomainEnd: function() {
                        return this._domain2
                    },
                    getCodomainStart: function() {
                        return this._codomain1
                    },
                    getCodomainEnd: function() {
                        return this._codomain2
                    },
                    getDomainRange: function() {
                        return this._domainDelta
                    },
                    getCodomainRange: function() {
                        return this._codomainDelta
                    },
                    translate: function(value) {
                        let ratio = (_Number(value) - this._domain1) / this._domainDelta;
                        this.inverted && (ratio = 1 - ratio);
                        return 0 <= ratio && ratio <= 1 ? this._codomain1 + ratio * this._codomainDelta : NaN
                    },
                    adjust: function(value) {
                        const ratio = (_Number(value) - this._domain1) / this._domainDelta;
                        let result = NaN;
                        if (ratio < 0) {
                            result = this._domain1
                        } else if (ratio > 1) {
                            result = this._domain2
                        } else if (0 <= ratio && ratio <= 1) {
                            result = _Number(value)
                        }
                        return result
                    }
                }
            },
        64174:
            /*!*****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/translators/translator2d.js ***!
              \*****************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.Translator2D = void 0;
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 21274);
                var _range = __webpack_require__( /*! ./range */ 99857);
                var _category_translator = _interopRequireDefault(__webpack_require__( /*! ./category_translator */ 37279));
                var _interval_translator = _interopRequireDefault(__webpack_require__( /*! ./interval_translator */ 24136));
                var _datetime_translator = _interopRequireDefault(__webpack_require__( /*! ./datetime_translator */ 77296));
                var _logarithmic_translator = _interopRequireDefault(__webpack_require__( /*! ./logarithmic_translator */ 19444));
                var _utils = __webpack_require__( /*! ../core/utils */ 28779);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 11528);
                var _math = __webpack_require__( /*! ../../core/utils/math */ 50254);
                var _date = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/date */ 41380));

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const _abs = Math.abs;
                const CANVAS_PROP = ["width", "height", "left", "top", "bottom", "right"];
                const dummyTranslator = {
                    to(value) {
                        const coord = this._canvasOptions.startPoint + (this._options.conversionValue ? value : Math.round(value));
                        return coord > this._canvasOptions.endPoint ? this._canvasOptions.endPoint : coord
                    },
                    from(value) {
                        return value - this._canvasOptions.startPoint
                    }
                };
                const validateCanvas = function(canvas) {
                    (0, _iterator.each)(CANVAS_PROP, (function(_, prop) {
                        canvas[prop] = parseInt(canvas[prop]) || 0
                    }));
                    return canvas
                };

                function getCheckingMethodsAboutBreaks(inverted) {
                    return {
                        isStartSide: !inverted ? function(pos, breaks, start, end) {
                            return pos < breaks[0][start]
                        } : function(pos, breaks, start, end) {
                            return pos <= breaks[breaks.length - 1][end]
                        },
                        isEndSide: !inverted ? function(pos, breaks, start, end) {
                            return pos >= breaks[breaks.length - 1][end]
                        } : function(pos, breaks, start, end) {
                            return pos > breaks[0][start]
                        },
                        isInBreak: !inverted ? function(pos, br, start, end) {
                            return pos >= br[start] && pos < br[end]
                        } : function(pos, br, start, end) {
                            return pos > br[end] && pos <= br[start]
                        },
                        isBetweenBreaks: !inverted ? function(pos, br, prevBreak, start, end) {
                            return pos < br[start] && pos >= prevBreak[end]
                        } : function(pos, br, prevBreak, start, end) {
                            return pos >= br[end] && pos < prevBreak[start]
                        },
                        getLength: !inverted ? function(br) {
                            return br.length
                        } : function(br, lastBreak) {
                            return lastBreak.length - br.length
                        },
                        getBreaksSize: !inverted ? function(br) {
                            return br.cumulativeWidth
                        } : function(br, lastBreak) {
                            return lastBreak.cumulativeWidth - br.cumulativeWidth
                        }
                    }
                }
                const _Translator2d = function(businessRange, canvas, options) {
                    this.update(businessRange, canvas, options)
                };
                exports.Translator2D = _Translator2d;
                _Translator2d.prototype = {
                    constructor: _Translator2d,
                    reinit: function() {
                        const that = this;
                        const options = that._options;
                        const range = that._businessRange;
                        const categories = range.categories || [];
                        let script = {};
                        const canvasOptions = that._prepareCanvasOptions();
                        const visibleCategories = (0, _utils.getCategoriesInfo)(categories, range.minVisible, range.maxVisible).categories;
                        const categoriesLength = visibleCategories.length;
                        if (range.isEmpty()) {
                            script = dummyTranslator
                        } else {
                            switch (range.axisType) {
                                case "logarithmic":
                                    script = _logarithmic_translator.default;
                                    break;
                                case "semidiscrete":
                                    script = _interval_translator.default;
                                    canvasOptions.ratioOfCanvasRange = canvasOptions.canvasLength / (_date.default.addInterval(canvasOptions.rangeMaxVisible, options.interval) - canvasOptions.rangeMinVisible);
                                    break;
                                case "discrete":
                                    script = _category_translator.default;
                                    that._categories = categories;
                                    canvasOptions.interval = that._getDiscreteInterval(options.addSpiderCategory ? categoriesLength + 1 : categoriesLength, canvasOptions);
                                    that._categoriesToPoints = function(categories) {
                                        const categoriesToPoints = {};
                                        categories.forEach((function(item, i) {
                                            categoriesToPoints[item.valueOf()] = i
                                        }));
                                        return categoriesToPoints
                                    }(categories);
                                    if (categoriesLength) {
                                        canvasOptions.startPointIndex = that._categoriesToPoints[visibleCategories[0].valueOf()];
                                        that.visibleCategories = visibleCategories
                                    }
                                    break;
                                default:
                                    if ("datetime" === range.dataType) {
                                        script = _datetime_translator.default
                                    }
                            }
                        }(that._oldMethods || []).forEach((function(methodName) {
                            delete that[methodName]
                        }));
                        that._oldMethods = Object.keys(script);
                        (0, _extend.extend)(that, script);
                        that._conversionValue = options.conversionValue ? value => value : (value, skipRound) => skipRound ? value : Math.round(value);
                        that.sc = {};
                        that._checkingMethodsAboutBreaks = [getCheckingMethodsAboutBreaks(false), getCheckingMethodsAboutBreaks(that.isInverted())];
                        that._translateBreaks();
                        that._calculateSpecialValues()
                    },
                    _translateBreaks: function() {
                        const breaks = this._breaks;
                        const size = this._options.breaksSize;
                        let i;
                        let b;
                        let end;
                        let length;
                        if (void 0 === breaks) {
                            return
                        }
                        for (i = 0, length = breaks.length; i < length; i++) {
                            b = breaks[i];
                            end = this.translate(b.to);
                            b.end = end;
                            b.start = !b.gapSize ? !this.isInverted() ? end - size : end + size : end
                        }
                    },
                    _checkValueAboutBreaks: function(breaks, pos, start, end, methods) {
                        let i;
                        let length;
                        let prop = {
                            length: 0,
                            breaksSize: void 0,
                            inBreak: false
                        };
                        let br;
                        let prevBreak;
                        const lastBreak = breaks[breaks.length - 1];
                        if (methods.isStartSide(pos, breaks, start, end)) {
                            return prop
                        } else if (methods.isEndSide(pos, breaks, start, end)) {
                            return {
                                length: lastBreak.length,
                                breaksSize: lastBreak.cumulativeWidth,
                                inBreak: false
                            }
                        }
                        for (i = 0, length = breaks.length; i < length; i++) {
                            br = breaks[i];
                            prevBreak = breaks[i - 1];
                            if (methods.isInBreak(pos, br, start, end)) {
                                prop.inBreak = true;
                                prop.break = br;
                                break
                            }
                            if (prevBreak && methods.isBetweenBreaks(pos, br, prevBreak, start, end)) {
                                prop = {
                                    length: methods.getLength(prevBreak, lastBreak),
                                    breaksSize: methods.getBreaksSize(prevBreak, lastBreak),
                                    inBreak: false
                                };
                                break
                            }
                        }
                        return prop
                    },
                    isInverted: function() {
                        return !(this._options.isHorizontal ^ this._businessRange.invert)
                    },
                    _getDiscreteInterval: function(categoriesLength, canvasOptions) {
                        const correctedCategoriesCount = categoriesLength - (this._options.stick ? 1 : 0);
                        return correctedCategoriesCount > 0 ? canvasOptions.canvasLength / correctedCategoriesCount : canvasOptions.canvasLength
                    },
                    _prepareCanvasOptions() {
                        const businessRange = this._businessRange;
                        const canvasOptions = this._canvasOptions = function(range) {
                            let min = range.min;
                            let max = range.max;
                            let minVisible = range.minVisible;
                            let maxVisible = range.maxVisible;
                            const isLogarithmic = "logarithmic" === range.axisType;
                            if (isLogarithmic) {
                                maxVisible = (0, _utils.getLogExt)(maxVisible, range.base, range.allowNegatives, range.linearThreshold);
                                minVisible = (0, _utils.getLogExt)(minVisible, range.base, range.allowNegatives, range.linearThreshold);
                                min = (0, _utils.getLogExt)(min, range.base, range.allowNegatives, range.linearThreshold);
                                max = (0, _utils.getLogExt)(max, range.base, range.allowNegatives, range.linearThreshold)
                            }
                            return {
                                base: range.base,
                                rangeMin: min,
                                rangeMax: max,
                                rangeMinVisible: minVisible,
                                rangeMaxVisible: maxVisible
                            }
                        }(businessRange);
                        const canvas = this._canvas;
                        const breaks = this._breaks;
                        let length;
                        canvasOptions.startPadding = canvas.startPadding || 0;
                        canvasOptions.endPadding = canvas.endPadding || 0;
                        if (this._options.isHorizontal) {
                            canvasOptions.startPoint = canvas.left + canvasOptions.startPadding;
                            length = canvas.width;
                            canvasOptions.endPoint = canvas.width - canvas.right - canvasOptions.endPadding;
                            canvasOptions.invert = businessRange.invert
                        } else {
                            canvasOptions.startPoint = canvas.top + canvasOptions.startPadding;
                            length = canvas.height;
                            canvasOptions.endPoint = canvas.height - canvas.bottom - canvasOptions.endPadding;
                            canvasOptions.invert = !businessRange.invert
                        }
                        this.canvasLength = canvasOptions.canvasLength = canvasOptions.endPoint - canvasOptions.startPoint;
                        canvasOptions.rangeDoubleError = Math.pow(10, (0, _utils.getPower)(canvasOptions.rangeMax - canvasOptions.rangeMin) - (0, _utils.getPower)(length) - 2);
                        canvasOptions.ratioOfCanvasRange = canvasOptions.canvasLength / (canvasOptions.rangeMaxVisible - canvasOptions.rangeMinVisible);
                        if (void 0 !== breaks) {
                            const visibleRangeLength = canvasOptions.rangeMaxVisible - canvasOptions.rangeMinVisible - breaks[breaks.length - 1].length;
                            if (0 !== visibleRangeLength) {
                                canvasOptions.ratioOfCanvasRange = (canvasOptions.canvasLength - breaks[breaks.length - 1].cumulativeWidth) / visibleRangeLength
                            }
                        }
                        return canvasOptions
                    },
                    updateCanvas: function(canvas) {
                        this._canvas = validateCanvas(canvas);
                        this.reinit()
                    },
                    updateBusinessRange: function(businessRange) {
                        const breaks = businessRange.breaks || [];
                        this._userBreaks = businessRange.userBreaks || [];
                        this._businessRange = function(businessRange) {
                            if (!(businessRange instanceof _range.Range)) {
                                businessRange = new _range.Range(businessRange)
                            }

                            function validate(valueSelector, baseValueSelector) {
                                if (!(0, _type.isDefined)(businessRange[valueSelector]) && (0, _type.isDefined)(businessRange[baseValueSelector])) {
                                    businessRange[valueSelector] = businessRange[baseValueSelector]
                                }
                            }
                            validate("minVisible", "min");
                            validate("maxVisible", "max");
                            return businessRange
                        }(businessRange);
                        this._breaks = breaks.length ? function(breaks, range) {
                            const transform = "logarithmic" === range.axisType ? function(value) {
                                return (0, _utils.getLogExt)(value, range.base)
                            } : function(value) {
                                return value
                            };
                            const array = [];
                            let br;
                            let transformFrom;
                            let transformTo;
                            let i;
                            const length = breaks.length;
                            let sum = 0;
                            for (i = 0; i < length; i++) {
                                br = breaks[i];
                                transformFrom = transform(br.from);
                                transformTo = transform(br.to);
                                sum += transformTo - transformFrom;
                                array.push({
                                    trFrom: transformFrom,
                                    trTo: transformTo,
                                    from: br.from,
                                    to: br.to,
                                    length: sum,
                                    cumulativeWidth: br.cumulativeWidth
                                })
                            }
                            return array
                        }(breaks, this._businessRange) : void 0;
                        this.reinit()
                    },
                    update: function(businessRange, canvas, options) {
                        this._options = (0, _extend.extend)(this._options || {}, options);
                        this._canvas = validateCanvas(canvas);
                        this.updateBusinessRange(businessRange)
                    },
                    getBusinessRange: function() {
                        return this._businessRange
                    },
                    getEventScale: function(zoomEvent) {
                        return zoomEvent.deltaScale || 1
                    },
                    getCanvasVisibleArea: function() {
                        return {
                            min: this._canvasOptions.startPoint,
                            max: this._canvasOptions.endPoint
                        }
                    },
                    _calculateSpecialValues: function() {
                        const that = this;
                        const canvasOptions = that._canvasOptions;
                        const startPoint = canvasOptions.startPoint - canvasOptions.startPadding;
                        const endPoint = canvasOptions.endPoint + canvasOptions.endPadding;
                        const range = that._businessRange;
                        const minVisible = range.minVisible;
                        const maxVisible = range.maxVisible;
                        const canvas_position_center_middle = startPoint + canvasOptions.canvasLength / 2;
                        let canvas_position_default;
                        if (minVisible < 0 && maxVisible > 0 && minVisible !== maxVisible) {
                            canvas_position_default = that.translate(0, 1)
                        }
                        if (!(0, _type.isDefined)(canvas_position_default)) {
                            const invert = range.invert ^ (minVisible < 0 && maxVisible <= 0);
                            if (that._options.isHorizontal) {
                                canvas_position_default = invert ? endPoint : startPoint
                            } else {
                                canvas_position_default = invert ? startPoint : endPoint
                            }
                        }
                        that.sc = {
                            canvas_position_default: canvas_position_default,
                            canvas_position_left: startPoint,
                            canvas_position_top: startPoint,
                            canvas_position_center: canvas_position_center_middle,
                            canvas_position_middle: canvas_position_center_middle,
                            canvas_position_right: endPoint,
                            canvas_position_bottom: endPoint,
                            canvas_position_start: canvasOptions.invert ? endPoint : startPoint,
                            canvas_position_end: canvasOptions.invert ? startPoint : endPoint
                        }
                    },
                    translateSpecialCase(value) {
                        return this.sc[value]
                    },
                    _calculateProjection: function(distance) {
                        const canvasOptions = this._canvasOptions;
                        return canvasOptions.invert ? canvasOptions.endPoint - distance : canvasOptions.startPoint + distance
                    },
                    _calculateUnProjection: function(distance) {
                        const canvasOptions = this._canvasOptions;
                        "datetime" === this._businessRange.dataType && (distance = Math.round(distance));
                        return canvasOptions.invert ? canvasOptions.rangeMaxVisible.valueOf() - distance : canvasOptions.rangeMinVisible.valueOf() + distance
                    },
                    getMinBarSize: function(minBarSize) {
                        const visibleArea = this.getCanvasVisibleArea();
                        const minValue = this.from(visibleArea.min + minBarSize);
                        return _abs(this.from(visibleArea.min) - (!(0, _type.isDefined)(minValue) ? this.from(visibleArea.max) : minValue))
                    },
                    checkMinBarSize: function(value, minShownValue) {
                        return _abs(value) < minShownValue ? value >= 0 ? minShownValue : -minShownValue : value
                    },
                    translate(bp, direction, skipRound) {
                        const specialValue = this.translateSpecialCase(bp);
                        if ((0, _type.isDefined)(specialValue)) {
                            return Math.round(specialValue)
                        }
                        if (isNaN(bp)) {
                            return null
                        }
                        return this.to(bp, direction, skipRound)
                    },
                    getInterval: function(interval) {
                        const canvasOptions = this._canvasOptions;
                        interval = interval ?? this._businessRange.interval;
                        if (interval) {
                            return Math.round(canvasOptions.ratioOfCanvasRange * interval)
                        }
                        return Math.round(canvasOptions.endPoint - canvasOptions.startPoint)
                    },
                    zoom(translate, scale, wholeRange) {
                        const canvasOptions = this._canvasOptions;
                        if (canvasOptions.rangeMinVisible.valueOf() === canvasOptions.rangeMaxVisible.valueOf() && 0 !== translate) {
                            return this.zoomZeroLengthRange(translate, scale)
                        }
                        const startPoint = canvasOptions.startPoint;
                        const endPoint = canvasOptions.endPoint;
                        const isInverted = this.isInverted();
                        let newStart = (startPoint + translate) / scale;
                        let newEnd = (endPoint + translate) / scale;
                        wholeRange = wholeRange || {};
                        const minPoint = this.to(isInverted ? wholeRange.endValue : wholeRange.startValue);
                        const maxPoint = this.to(isInverted ? wholeRange.startValue : wholeRange.endValue);
                        let min;
                        let max;
                        if (minPoint > newStart) {
                            newEnd -= newStart - minPoint;
                            newStart = minPoint;
                            min = isInverted ? wholeRange.endValue : wholeRange.startValue
                        }
                        if (maxPoint < newEnd) {
                            newStart -= newEnd - maxPoint;
                            newEnd = maxPoint;
                            max = isInverted ? wholeRange.startValue : wholeRange.endValue
                        }
                        if (maxPoint - minPoint < newEnd - newStart) {
                            newStart = minPoint;
                            newEnd = maxPoint
                        }
                        translate = (endPoint - startPoint) * newStart / (newEnd - newStart) - startPoint;
                        scale = (startPoint + translate) / newStart || 1;
                        min = (0, _type.isDefined)(min) ? min : (0, _math.adjust)(this.from(newStart, 1));
                        max = (0, _type.isDefined)(max) ? max : (0, _math.adjust)(this.from(newEnd, -1));
                        if (scale <= 1) {
                            min = this._correctValueAboutBreaks(min, 1 === scale ? translate : -1);
                            max = this._correctValueAboutBreaks(max, 1 === scale ? translate : 1)
                        }
                        if (min > max) {
                            min = min > wholeRange.endValue ? wholeRange.endValue : min;
                            max = max < wholeRange.startValue ? wholeRange.startValue : max
                        } else {
                            min = min < wholeRange.startValue ? wholeRange.startValue : min;
                            max = max > wholeRange.endValue ? wholeRange.endValue : max
                        }
                        return {
                            min: min,
                            max: max,
                            translate: (0, _math.adjust)(translate),
                            scale: (0, _math.adjust)(scale)
                        }
                    },
                    _correctValueAboutBreaks(value, direction) {
                        const br = this._userBreaks.filter((br => value >= br.from && value <= br.to));
                        if (br.length) {
                            return direction > 0 ? br[0].to : br[0].from
                        } else {
                            return value
                        }
                    },
                    zoomZeroLengthRange(translate, scale) {
                        const canvasOptions = this._canvasOptions;
                        const min = canvasOptions.rangeMin;
                        const max = canvasOptions.rangeMax;
                        const correction = (max.valueOf() !== min.valueOf() ? max.valueOf() - min.valueOf() : _abs(canvasOptions.rangeMinVisible.valueOf() - min.valueOf())) / canvasOptions.canvasLength;
                        const isDateTime = (0, _type.isDate)(max) || (0, _type.isDate)(min);
                        const isLogarithmic = "logarithmic" === this._businessRange.axisType;
                        let newMin = canvasOptions.rangeMinVisible.valueOf() - correction;
                        let newMax = canvasOptions.rangeMaxVisible.valueOf() + correction;
                        newMin = isLogarithmic ? (0, _math.adjust)((0, _utils.raiseToExt)(newMin, canvasOptions.base)) : isDateTime ? new Date(newMin) : newMin;
                        newMax = isLogarithmic ? (0, _math.adjust)((0, _utils.raiseToExt)(newMax, canvasOptions.base)) : isDateTime ? new Date(newMax) : newMax;
                        return {
                            min: newMin,
                            max: newMax,
                            translate: translate,
                            scale: scale
                        }
                    },
                    getMinScale: function(zoom) {
                        const {
                            dataType: dataType,
                            interval: interval
                        } = this._businessRange;
                        if ("datetime" === dataType && 1 === interval) {
                            return this.getDateTimeMinScale(zoom)
                        }
                        return zoom ? 1.1 : .9
                    },
                    getDateTimeMinScale(zoom) {
                        const canvasOptions = this._canvasOptions;
                        let length = canvasOptions.canvasLength / canvasOptions.ratioOfCanvasRange;
                        length += (parseInt(.1 * length) || 1) * (zoom ? -2 : 2);
                        return canvasOptions.canvasLength / (Math.max(length, 1) * canvasOptions.ratioOfCanvasRange)
                    },
                    getScale: function(val1, val2) {
                        const canvasOptions = this._canvasOptions;
                        if (canvasOptions.rangeMax === canvasOptions.rangeMin) {
                            return 1
                        }
                        val1 = (0, _type.isDefined)(val1) ? this.fromValue(val1) : canvasOptions.rangeMin;
                        val2 = (0, _type.isDefined)(val2) ? this.fromValue(val2) : canvasOptions.rangeMax;
                        return (canvasOptions.rangeMax - canvasOptions.rangeMin) / Math.abs(val1 - val2)
                    },
                    isValid: function(value) {
                        const co = this._canvasOptions;
                        value = this.fromValue(value);
                        return null !== value && !isNaN(value) && value.valueOf() + co.rangeDoubleError >= co.rangeMin && value.valueOf() - co.rangeDoubleError <= co.rangeMax
                    },
                    getCorrectValue: function(value, direction) {
                        const that = this;
                        const breaks = that._breaks;
                        let prop;
                        value = that.fromValue(value);
                        if (that._breaks) {
                            prop = that._checkValueAboutBreaks(breaks, value, "trFrom", "trTo", that._checkingMethodsAboutBreaks[0]);
                            if (true === prop.inBreak) {
                                return that.toValue(direction > 0 ? prop.break.trTo : prop.break.trFrom)
                            }
                        }
                        return that.toValue(value)
                    },
                    to: function(bp, direction, skipRound) {
                        const range = this.getBusinessRange();
                        if ((0, _type.isDefined)(range.maxVisible) && (0, _type.isDefined)(range.minVisible) && range.maxVisible.valueOf() === range.minVisible.valueOf()) {
                            if (!(0, _type.isDefined)(bp) || range.maxVisible.valueOf() !== bp.valueOf()) {
                                return null
                            }
                            return this.translateSpecialCase(0 === bp && this._options.shiftZeroValue ? "canvas_position_default" : "canvas_position_middle")
                        }
                        bp = this.fromValue(bp);
                        const that = this;
                        const canvasOptions = that._canvasOptions;
                        const breaks = that._breaks;
                        let prop = {
                            length: 0
                        };
                        let commonBreakSize = 0;
                        if (void 0 !== breaks) {
                            prop = that._checkValueAboutBreaks(breaks, bp, "trFrom", "trTo", that._checkingMethodsAboutBreaks[0]);
                            commonBreakSize = (0, _type.isDefined)(prop.breaksSize) ? prop.breaksSize : 0
                        }
                        if (true === prop.inBreak) {
                            if (direction > 0) {
                                return prop.break.start
                            } else if (direction < 0) {
                                return prop.break.end
                            } else {
                                return null
                            }
                        }
                        return that._conversionValue(that._calculateProjection((bp - canvasOptions.rangeMinVisible - prop.length) * canvasOptions.ratioOfCanvasRange + commonBreakSize), skipRound)
                    },
                    from: function(pos, direction) {
                        const that = this;
                        const breaks = that._breaks;
                        let prop = {
                            length: 0
                        };
                        const canvasOptions = that._canvasOptions;
                        const startPoint = canvasOptions.startPoint;
                        let commonBreakSize = 0;
                        if (void 0 !== breaks) {
                            prop = that._checkValueAboutBreaks(breaks, pos, "start", "end", that._checkingMethodsAboutBreaks[1]);
                            commonBreakSize = (0, _type.isDefined)(prop.breaksSize) ? prop.breaksSize : 0
                        }
                        if (true === prop.inBreak) {
                            if (direction > 0) {
                                return that.toValue(prop.break.trTo)
                            } else if (direction < 0) {
                                return that.toValue(prop.break.trFrom)
                            } else {
                                return null
                            }
                        }
                        return that.toValue(that._calculateUnProjection((pos - startPoint - commonBreakSize) / canvasOptions.ratioOfCanvasRange + prop.length))
                    },
                    isValueProlonged: false,
                    getRange: function() {
                        return [this.toValue(this._canvasOptions.rangeMin), this.toValue(this._canvasOptions.rangeMax)]
                    },
                    getScreenRange: function() {
                        return [this._canvasOptions.startPoint, this._canvasOptions.endPoint]
                    },
                    add: function(value, diff, dir) {
                        return this._add(value, diff, (this._businessRange.invert ? -1 : 1) * dir)
                    },
                    _add: function(value, diff, coeff) {
                        return this.toValue(this.fromValue(value) + diff * coeff)
                    },
                    fromValue: function(value) {
                        return null !== value ? Number(value) : null
                    },
                    toValue: function(value) {
                        return null !== value ? Number(value) : null
                    },
                    ratioOfCanvasRange() {
                        return this._canvasOptions.ratioOfCanvasRange
                    },
                    convert: value => value,
                    getRangeByMinZoomValue(minZoom, visualRange) {
                        if (visualRange.minVisible + minZoom <= this._businessRange.max) {
                            return [visualRange.minVisible, visualRange.minVisible + minZoom]
                        } else {
                            return [visualRange.maxVisible - minZoom, visualRange.maxVisible]
                        }
                    }
                }
            },
        61015:
            /*!*************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/tree_map.js ***!
              \*************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _tree_map = (e = __webpack_require__( /*! ./tree_map/tree_map */ 96191), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                exports.default = _tree_map.default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        81708:
            /*!*****************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/tree_map/api.js ***!
              \*****************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _tree_map = _interopRequireDefault(__webpack_require__( /*! ./tree_map.base */ 91628));
                var _node = _interopRequireDefault(__webpack_require__( /*! ./node */ 14206));
                var _extend2 = __webpack_require__( /*! ../../core/utils/extend */ 52576);
                var _common = __webpack_require__( /*! ../../core/utils/common */ 17781);

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const proto = _tree_map.default.prototype;
                const nodeProto = _node.default.prototype;
                proto._eventsMap.onNodesInitialized = {
                    name: "nodesInitialized"
                };
                proto._eventsMap.onNodesRendering = {
                    name: "nodesRendering"
                };
                proto._createProxyType = function() {
                    const that = this;
                    let nodes;
                    Proxy.prototype = {
                        constructor: Proxy,
                        getParent: function() {
                            return nodes[this._id].parent.proxy || null
                        },
                        getChild: function(index) {
                            const _nodes = nodes[this._id].nodes;
                            return _nodes ? _nodes[index].proxy : null
                        },
                        getChildrenCount: function() {
                            const _nodes = nodes[this._id].nodes;
                            return _nodes ? _nodes.length : 0
                        },
                        getAllChildren: function() {
                            const _nodes = nodes[this._id].nodes;
                            let i;
                            const ii = _nodes && _nodes.length;
                            const list = [];
                            for (i = 0; i < ii; ++i) {
                                list.push(_nodes[i].proxy)
                            }
                            return list
                        },
                        getAllNodes: function() {
                            const list = [];
                            collectNodes(nodes[this._id], list);
                            return list
                        },
                        isLeaf: function() {
                            return !nodes[this._id].isNode()
                        },
                        isActive: function() {
                            return nodes[this._id].isActive()
                        },
                        value: function(arg) {
                            const node = nodes[this._id];
                            let result;
                            if (void 0 !== arg) {
                                ! function(node, value) {
                                    const delta = value - node.value;
                                    while (node) {
                                        node.value += delta;
                                        node = node.parent
                                    }
                                }(node, arg > 0 ? Number(arg) : 0);
                                change(node, ["TILING"]);
                                result = this
                            } else {
                                result = node.value
                            }
                            return result
                        },
                        label: function(arg) {
                            const node = nodes[this._id];
                            let result;
                            if (void 0 !== arg) {
                                node.customLabel = arg ? String(arg) : null;
                                change(node, ["LABELS"]);
                                result = this
                            } else {
                                result = node.customLabel || node.label
                            }
                            return result
                        },
                        customize: function(settings) {
                            const node = nodes[this._id];
                            if (settings) {
                                node._custom = node._custom || {};
                                (0, _extend2.extend)(true, node._custom, settings);
                                node._partialState = node._partialLabelState = null
                            }
                            change(node, ["TILES", "LABELS"]);
                            return this
                        },
                        resetCustomization: function() {
                            const node = nodes[this._id];
                            node._custom = node._partialState = node._partialLabelState = null;
                            change(node, ["TILES", "LABELS"]);
                            return this
                        }
                    };
                    that._extendProxyType(Proxy.prototype);

                    function Proxy(node) {
                        node.proxy = this;
                        this._id = node._id;
                        this.level = node.level;
                        this.index = node.index;
                        this.data = node.data
                    }
                    that._handlers.beginBuildNodes = function() {
                        nodes = that._nodes;
                        new Proxy(that._root)
                    };
                    that._handlers.buildNode = function(node) {
                        new Proxy(node)
                    };
                    that._handlers.endBuildNodes = function() {
                        that._eventTrigger("nodesInitialized", {
                            root: that._root.proxy
                        })
                    }
                };

                function change(node, codes) {
                    const ctx = node.ctx;
                    ctx.suspend();
                    ctx.change(codes);
                    ctx.resume()
                }

                function collectNodes(node, list) {
                    const nodes = node.nodes;
                    let i;
                    const ii = nodes && nodes.length;
                    for (i = 0; i < ii; ++i) {
                        list.push(nodes[i].proxy);
                        collectNodes(nodes[i], list)
                    }
                }
                proto._extendProxyType = _common.noop;
                const _resetNodes = proto._resetNodes;
                proto._resetNodes = function() {
                    _resetNodes.call(this);
                    this._eventTrigger("nodesRendering", {
                        node: this._topNode.proxy
                    })
                };
                const _updateStyles = nodeProto.updateStyles;
                nodeProto.updateStyles = function() {
                    const that = this;
                    _updateStyles.call(that);
                    if (that._custom) {
                        that._partialState = !that.ctx.forceReset && that._partialState || that.ctx.calculateState(that._custom);
                        (0, _extend2.extend)(true, that.state, that._partialState)
                    }
                };
                const _updateLabelStyle = nodeProto.updateLabelStyle;
                nodeProto.updateLabelStyle = function() {
                    const that = this;
                    const custom = that._custom;
                    _updateLabelStyle.call(that);
                    if (custom && custom.label) {
                        that._partialLabelState = !that.ctx.forceReset && that._partialLabelState || function(node, settings) {
                            const state = node.ctx.calculateLabelState(settings);
                            if ("visible" in settings) {
                                state.visible = !!settings.visible
                            }
                            return state
                        }(that, custom.label);
                        that.labelState = (0, _extend2.extend)(true, {}, that.labelState, that._partialLabelState)
                    }
                };
                proto.getRootNode = function() {
                    return this._root.proxy
                };
                proto.resetNodes = function() {
                    const context = this._context;
                    context.suspend();
                    context.change(["NODES_CREATE"]);
                    context.resume();
                    return this
                }
            },
        53505:
            /*!*********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/tree_map/colorizing.discrete.js ***!
              \*********************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _colorizing = __webpack_require__( /*! ./colorizing */ 6134);

                function discreteColorizer(options, themeManager, root) {
                    const palette = themeManager.createPalette(options.palette, {
                        useHighlight: true,
                        extensionMode: options.paletteExtensionMode,
                        count: options.colorizeGroups ? getNodesCount(root) : getLeafsCount(root)
                    });
                    return (options.colorizeGroups ? discreteGroupColorizer : discreteLeafColorizer)(palette, root)
                }

                function getLeafsCount(root) {
                    const allNodes = root.nodes.slice();
                    let i;
                    const ii = allNodes.length;
                    let count = 0;
                    let node;
                    for (i = 0; i < ii; ++i) {
                        node = allNodes[i];
                        if (node.isNode()) {
                            count = Math.max(count, getLeafsCount(node))
                        } else {
                            count += 1
                        }
                    }
                    return count
                }

                function discreteLeafColorizer(palette) {
                    const colors = palette.generateColors();
                    return function(node) {
                        return colors[node.index]
                    }
                }

                function getNodesCount(root) {
                    const allNodes = root.nodes.slice();
                    let i;
                    const ii = allNodes.length;
                    let count = 0;
                    let node;
                    for (i = 0; i < ii; ++i) {
                        node = allNodes[i];
                        if (node.isNode()) {
                            count += getNodesCount(node) + 1
                        }
                    }
                    return count
                }

                function discreteGroupColorizer(palette, root) {
                    const colors = function(palette, root) {
                        const colors = {};
                        let allNodes = root.nodes.slice();
                        let i;
                        let ii = allNodes.length;
                        let node;
                        for (i = 0; i < ii; ++i) {
                            node = allNodes[i];
                            if (node.isNode()) {
                                allNodes = allNodes.concat(node.nodes);
                                ii = allNodes.length
                            } else if (!colors[node.parent._id]) {
                                colors[node.parent._id] = palette.getNextColor()
                            }
                        }
                        return colors
                    }(palette, root);
                    return function(node) {
                        return colors[node._id]
                    }
                }(0, _colorizing.addColorizer)("discrete", discreteColorizer);
                exports.default = discreteColorizer;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        18202:
            /*!*********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/tree_map/colorizing.gradient.js ***!
              \*********************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _colorizing = __webpack_require__( /*! ./colorizing */ 6134);
                const _min = Math.min;
                const _max = Math.max;

                function getRangeData(range) {
                    return [Number(range[0]) || 0, range[1] - range[0] || 1]
                }

                function createGuessingColorizer(getColor, getValue) {
                    const ranges = {};
                    return function(node) {
                        const parent = node.parent;
                        return getColor(node, ranges[parent._id] || (ranges[parent._id] = function(nodes, getValue) {
                            let i;
                            const ii = nodes.length;
                            const codes = [];
                            let code;
                            for (i = 0; i < ii; ++i) {
                                code = getValue(nodes[i]);
                                if (isFinite(code)) {
                                    codes.push(code)
                                }
                            }
                            return getRangeData([_min.apply(null, codes), _max.apply(null, codes)])
                        }(parent.nodes, getValue)))
                    }
                }

                function gradientColorizer(options, themeManager) {
                    const palette = themeManager.createGradientPalette(options.palette);
                    const getValue = (0, _colorizing.createColorCodeGetter)(options);
                    return "range" in options ? function(getColor, range) {
                        return function(node) {
                            return getColor(node, range)
                        }
                    }(getColor, getRangeData(options.range || [])) : createGuessingColorizer(getColor, getValue);

                    function getColor(node, arg) {
                        return palette.getColor((getValue(node) - arg[0]) / arg[1])
                    }
                }(0, _colorizing.addColorizer)("gradient", gradientColorizer);
                exports.default = gradientColorizer;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        6134:
            /*!************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/tree_map/colorizing.js ***!
              \************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.addColorizer = function(name, colorizer) {
                    colorizers[name] = colorizer
                };
                exports.createColorCodeGetter = function(options) {
                    return options.colorCodeField ? (colorCodeField = options.colorCodeField, function(node) {
                        return Number(node.data[colorCodeField])
                    }) : getValueAsColorCode;
                    var colorCodeField
                };
                exports.getColorizer = function(options, themeManager, root) {
                    const type = (0, _utils.normalizeEnum)(options.type || defaultColorizerName);
                    const colorizer = colorizers[type] && colorizers[type](options, themeManager, root);
                    return colorizer ? (options.colorizeGroups ? wrapGroupColorGetter : wrapLeafColorGetter)(colorizer) : _common.noop
                };
                exports.setDefaultColorizer = function(name) {
                    defaultColorizerName = name
                };
                var _utils = __webpack_require__( /*! ../core/utils */ 28779);
                var _common = __webpack_require__( /*! ../../core/utils/common */ 17781);
                const colorizers = {};
                let defaultColorizerName;

                function wrapLeafColorGetter(getter) {
                    return function(node) {
                        return !node.isNode() ? getter(node) : void 0
                    }
                }

                function wrapGroupColorGetter(getter) {
                    return function(node) {
                        const parent = !node.isNode() && node.parent;
                        return parent ? parent._groupColor = parent._groupColor || getter(parent) : void 0
                    }
                }

                function getValueAsColorCode(node) {
                    return node.value
                }
            },
        70185:
            /*!******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/tree_map/colorizing.range.js ***!
              \******************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _colorizing = __webpack_require__( /*! ./colorizing */ 6134);

                function rangeColorizer(options, themeManager) {
                    const range = options.range || [];
                    const palette = themeManager.createDiscretePalette(options.palette, range.length - 1);
                    const getValue = (0, _colorizing.createColorCodeGetter)(options);
                    return function(node) {
                        return palette.getColor(function(value, items) {
                            let start = 0;
                            let end = items.length - 1;
                            let index = -1;
                            let middle;
                            if (items[start] <= value && value <= items[end]) {
                                if (value === items[end]) {
                                    index = end - 1
                                } else {
                                    while (end - start > 1) {
                                        middle = start + end >> 1;
                                        if (value < items[middle]) {
                                            end = middle
                                        } else {
                                            start = middle
                                        }
                                    }
                                    index = start
                                }
                            }
                            return index
                        }(getValue(node), range))
                    }
                }(0, _colorizing.addColorizer)("range", rangeColorizer);
                exports.default = rangeColorizer;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        30211:
            /*!********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/tree_map/common.js ***!
              \********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.buildRectAppearance = function(option) {
                    const border = option.border || {};
                    return {
                        fill: option.color,
                        opacity: option.opacity,
                        stroke: border.color,
                        "stroke-width": border.width,
                        "stroke-opacity": border.opacity,
                        hatching: option.hatching
                    }
                };
                exports.buildTextAppearance = function(options, filter) {
                    return {
                        attr: {
                            filter: filter
                        },
                        css: (0, _utils.patchFontOptions)(options.font)
                    }
                };
                var _utils = __webpack_require__( /*! ../core/utils */ 28779)
            },
        74721:
            /*!***********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/tree_map/drilldown.js ***!
              \***********************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _tree_map = (e = __webpack_require__( /*! ./tree_map.base */ 91628), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                var _helpers = __webpack_require__( /*! ../core/helpers */ 71115);
                __webpack_require__( /*! ./api */ 81708);
                const proto = _tree_map.default.prototype;
                proto._eventsMap.onDrill = {
                    name: "drill"
                };
                (0, _helpers.expand)(proto, "_extendProxyType", (function(proto) {
                    const that = this;
                    proto.drillDown = function() {
                        that._drillToNode(this._id)
                    }
                }));
                (0, _helpers.expand)(proto, "_onNodesCreated", (function() {
                    this._drilldownIndex = -1
                }));
                proto._drillToNode = function(index) {
                    const that = this;
                    let node;
                    if (that._drilldownIndex !== index) {
                        node = that._nodes[index] || that._root;
                        if (node.nodes) {
                            that._drilldownIndex = index;
                            that._topNode = node;
                            that._context.suspend();
                            that._context.change(["MAX_DEPTH", "NODES_RESET"]);
                            that._context.resume();
                            that._eventTrigger("drill", {
                                node: node.proxy
                            })
                        }
                    }
                };
                proto.resetDrillDown = function() {
                    this._drillToNode(-1);
                    return this
                };
                proto.drillUp = function() {
                    this._drillToNode(this._topNode.parent._id || -1);
                    return this
                };
                proto.getCurrentNode = function() {
                    return this._topNode.proxy
                }
            },
        49774:
            /*!*******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/tree_map/hover.js ***!
              \*******************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _tree_map = _interopRequireDefault(__webpack_require__( /*! ./tree_map.base */ 91628));
                var _node = _interopRequireDefault(__webpack_require__( /*! ./node */ 14206));
                var _helpers = __webpack_require__( /*! ../core/helpers */ 71115);
                var _common = __webpack_require__( /*! ./common */ 30211);
                var _utils = __webpack_require__( /*! ../core/utils */ 28779);
                __webpack_require__( /*! ./api */ 81708);
                __webpack_require__( /*! ./states */ 11140);

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const proto = _tree_map.default.prototype;
                const nodeProto = _node.default.prototype;
                proto._eventsMap.onHoverChanged = {
                    name: "hoverChanged"
                };
                (0, _helpers.expand)(proto._handlers, "calculateAdditionalStates", (function(states, options) {
                    states[1] = options.hoverStyle ? (0, _common.buildRectAppearance)(options.hoverStyle) : {}
                }));
                _tree_map.default.addChange({
                    code: "HOVER_ENABLED",
                    handler: function() {
                        const hoverEnabled = (0, _utils.parseScalar)(this._getOption("hoverEnabled", true), true);
                        if (!hoverEnabled) {
                            this.clearHover()
                        }
                        this._hoverEnabled = hoverEnabled
                    },
                    isThemeDependent: true,
                    isOptionChange: true,
                    option: "hoverEnabled"
                });
                nodeProto.statesMap[1] = 1;
                nodeProto.additionalStates.push(1);
                (0, _helpers.expand)(proto, "_extendProxyType", (function(proto) {
                    const that = this;
                    proto.setHover = function() {
                        that._hoverNode(this._id)
                    };
                    proto.isHovered = function() {
                        return that._hoverIndex === this._id
                    }
                }));
                (0, _helpers.expand)(proto, "_onNodesCreated", (function() {
                    this._hoverIndex = -1
                }));
                (0, _helpers.expand)(proto, "_changeGroupSettings", (function() {
                    const that = this;
                    that._groupHoverEnabled = (0, _utils.parseScalar)(that._getOption("group").hoverEnabled, true);
                    if (!that._groupHoverEnabled) {
                        that.clearHover()
                    }
                }));
                proto._applyHoverState = function(index, state) {
                    setNodeStateRecursive(this._nodes[index], 1, state);
                    this._eventTrigger("hoverChanged", {
                        node: this._nodes[index].proxy
                    })
                };

                function setNodeStateRecursive(node, code, state) {
                    const nodes = node.isNode() && node.nodes;
                    let i;
                    const ii = nodes && nodes.length;
                    node.setState(code, state);
                    for (i = 0; i < ii; ++i) {
                        setNodeStateRecursive(nodes[i], code, state)
                    }
                }
                proto._hoverNode = function(index) {
                    const that = this;
                    const currentIndex = that._hoverIndex;
                    if (that._hoverEnabled && currentIndex !== index) {
                        if (!that._groupHoverEnabled && index >= 0 && that._nodes[index].isNode()) {
                            that.clearHover();
                            return
                        }
                        that._context.suspend();
                        that._hoverIndex = -1;
                        if (currentIndex >= 0) {
                            that._applyHoverState(currentIndex, false)
                        }
                        that._hoverIndex = index;
                        if (index >= 0) {
                            that._applyHoverState(index, true)
                        }
                        that._context.resume()
                    }
                };
                proto.clearHover = function() {
                    this._hoverNode(-1)
                }
            },
        14206:
            /*!******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/tree_map/node.js ***!
              \******************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _extend2 = __webpack_require__( /*! ../../core/utils/extend */ 52576);

                function Node() {}
                const updateTile = [function(content, attrs) {
                    content.smartAttr(attrs)
                }, function(content, attrs) {
                    content.outer.attr({
                        stroke: attrs.stroke,
                        "stroke-width": attrs["stroke-width"],
                        "stroke-opacity": attrs["stroke-opacity"]
                    });
                    content.inner.smartAttr({
                        fill: attrs.fill,
                        opacity: attrs.opacity,
                        hatching: attrs.hatching
                    })
                }];
                (0, _extend2.extend)(Node.prototype, {
                    value: 0,
                    isNode: function() {
                        return !!(this.nodes && this.level < this.ctx.maxLevel)
                    },
                    isActive: function() {
                        const ctx = this.ctx;
                        return this.level >= ctx.minLevel && this.level <= ctx.maxLevel
                    },
                    updateStyles: function() {
                        const isNode = Number(this.isNode());
                        this.state = this._buildState(this.ctx.settings[isNode].state, !isNode && this.color && {
                            fill: this.color
                        })
                    },
                    _buildState: function(state, extra) {
                        const base = (0, _extend2.extend)({}, state);
                        return extra ? (0, _extend2.extend)(base, extra) : base
                    },
                    updateLabelStyle: function() {
                        const settings = this.ctx.settings[Number(this.isNode())];
                        this.labelState = settings.labelState;
                        this.labelParams = settings.labelParams
                    },
                    _getState: function() {
                        return this.state
                    },
                    applyState: function() {
                        updateTile[Number(this.isNode())](this.tile, this._getState())
                    }
                });
                exports.default = Node;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        34239:
            /*!*******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/tree_map/plain_data_source.js ***!
              \*******************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _tree_map = (e = __webpack_require__( /*! ./tree_map.base */ 91628), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                const proto = _tree_map.default.prototype;
                proto._optionChangesMap.idField = proto._optionChangesMap.parentField = "NODES_CREATE";
                proto._processDataSourceItems = function(items) {
                    let i;
                    const struct = {};
                    let currentItem;
                    const idField = this._getOption("idField", true);
                    const parentField = this._getOption("parentField", true);
                    let parentId;
                    const rootNodes = [];
                    let tmpItems;
                    let item;
                    if (!idField || !parentField || 0 === items.length) {
                        return {
                            items: items,
                            isPlain: false
                        }
                    }
                    for (i = 0; i < items.length; i++) {
                        currentItem = items[i];
                        parentId = currentItem[parentField];
                        if (parentId) {
                            struct[parentId] = struct[parentId] || {
                                items: []
                            };
                            tmpItems = struct[parentId].items
                        } else {
                            tmpItems = rootNodes
                        }
                        tmpItems.push(currentItem)
                    }
                    treeFiller({
                        struct: struct,
                        idField: idField
                    }, rootNodes);
                    for (item in struct) {
                        struct[item] && rootNodes.push(struct[item])
                    }
                    return {
                        items: rootNodes,
                        isPlain: true
                    }
                };

                function treeFiller(context, items) {
                    let currentItem;
                    let i;
                    const struct = context.struct;
                    let id;
                    for (i = 0; i < items.length; i++) {
                        currentItem = items[i];
                        id = currentItem[context.idField];
                        if (struct[id]) {
                            currentItem.items = struct[id].items;
                            struct[id] = null;
                            treeFiller(context, currentItem.items)
                        }
                    }
                }
            },
        98350:
            /*!***********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/tree_map/selection.js ***!
              \***********************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _tree_map = _interopRequireDefault(__webpack_require__( /*! ./tree_map.base */ 91628));
                var _node = _interopRequireDefault(__webpack_require__( /*! ./node */ 14206));
                var _helpers = __webpack_require__( /*! ../core/helpers */ 71115);
                var _common = __webpack_require__( /*! ./common */ 30211);
                var _utils = __webpack_require__( /*! ../core/utils */ 28779);
                __webpack_require__( /*! ./api */ 81708);
                __webpack_require__( /*! ./states */ 11140);

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const proto = _tree_map.default.prototype;
                const nodeProto = _node.default.prototype;
                proto._eventsMap.onSelectionChanged = {
                    name: "selectionChanged"
                };
                (0, _helpers.expand)(proto._handlers, "calculateAdditionalStates", (function(states, options) {
                    states[2] = options.selectionStyle ? (0, _common.buildRectAppearance)(options.selectionStyle) : {}
                }));
                nodeProto.statesMap[2] = nodeProto.statesMap[3] = 2;
                nodeProto.additionalStates.push(2);
                (0, _helpers.expand)(proto, "_onNodesCreated", (function() {
                    this._selectionList.length = 0
                }));
                (0, _helpers.expand)(proto, "_extendProxyType", (function(proto) {
                    const that = this;
                    proto.select = function(state) {
                        that._selectNode(this._id, !!state)
                    };
                    proto.isSelected = function() {
                        return that._selectionList.includes(this._id)
                    };
                    that._selectionList = []
                }));
                _tree_map.default.addChange({
                    code: "SELECTION_MODE",
                    handler: function() {
                        const that = this;
                        const option = (0, _utils.normalizeEnum)(that._getOption("selectionMode", true));
                        const selectionList = that._selectionList;
                        let tmp;
                        const mode = "none" === option ? 0 : "multiple" === option ? 2 : 1;
                        if (1 === mode && selectionList.length > 1) {
                            tmp = selectionList.pop();
                            that.clearSelection();
                            selectionList.push(tmp)
                        } else if (0 === mode) {
                            that.clearSelection()
                        }
                        that._selectionMode = mode
                    },
                    isThemeDependent: true,
                    isOptionChange: true,
                    option: "selectionMode"
                });
                (0, _helpers.expand)(proto, "_applyTilesAppearance", (function() {
                    if (this._selectionList.length) {
                        ! function(nodes, selectionList) {
                            let i;
                            const ii = selectionList.length;
                            let node;
                            for (i = 0; i < ii; ++i) {
                                node = nodes[selectionList[i]];
                                tileToFront[Number(node.isNode())](node.tile)
                            }
                        }(this._nodes, this._selectionList)
                    }
                }));
                const tileToFront = [function(content) {
                    content.toForeground()
                }, function(content) {
                    content.outer.toForeground();
                    content.inner.toForeground()
                }];
                proto._applySelectionState = function(index, state) {
                    const node = this._nodes[index];
                    node.setState(2, state);
                    this._eventTrigger("selectionChanged", {
                        node: node.proxy
                    })
                };
                proto._selectNode = function(index, state) {
                    const that = this;
                    let selectionList;
                    let k;
                    let tmp;
                    if (0 !== that._selectionMode) {
                        that._context.suspend();
                        selectionList = that._selectionList;
                        k = selectionList.indexOf(index);
                        if (state && -1 === k) {
                            if (1 === that._selectionMode) {
                                if (selectionList.length) {
                                    tmp = selectionList.pop();
                                    that._applySelectionState(tmp, false)
                                }
                            }
                            selectionList.push(index);
                            that._applySelectionState(index, true)
                        } else if (!state && k >= 0) {
                            selectionList.splice(k, 1);
                            that._applySelectionState(index, false)
                        }
                        that._context.resume()
                    }
                };
                proto.clearSelection = function() {
                    const that = this;
                    const selectionList = that._selectionList;
                    let i;
                    const ii = selectionList.length;
                    if (0 !== that._selectionMode) {
                        that._context.suspend();
                        for (i = 0; i < ii; ++i) {
                            that._applySelectionState(selectionList[i], false)
                        }
                        selectionList.length = 0;
                        that._context.resume()
                    }
                }
            },
        11140:
            /*!********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/tree_map/states.js ***!
              \********************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _tree_map = _interopRequireDefault(__webpack_require__( /*! ./tree_map.base */ 91628));
                var _node = _interopRequireDefault(__webpack_require__( /*! ./node */ 14206));
                var _common = __webpack_require__( /*! ../../core/utils/common */ 17781);
                var _extend2 = __webpack_require__( /*! ../../core/utils/extend */ 52576);

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const proto = _tree_map.default.prototype;
                const nodeProto = _node.default.prototype;
                const handlers = proto._handlers;
                const _calculateState = handlers.calculateState;
                const _buildState = nodeProto._buildState;
                handlers.calculateState = function(options) {
                    const states = {
                        0: _calculateState(options)
                    };
                    handlers.calculateAdditionalStates(states, options);
                    return states
                };
                handlers.calculateAdditionalStates = _common.noop;
                nodeProto.code = 0;
                nodeProto.statesMap = {
                    0: 0
                };
                nodeProto.additionalStates = [];
                nodeProto._buildState = function(state, extra) {
                    const states = {
                        0: _buildState(state[0], extra)
                    };
                    if (this.additionalStates.length) {
                        ! function(states, base, source, list) {
                            let i;
                            const ii = list.length;
                            for (i = 0; i < ii; ++i) {
                                states[list[i]] = (0, _extend2.extend)({}, base, source[list[i]])
                            }
                        }(states, states[0], state, this.additionalStates)
                    }
                    return states
                };
                nodeProto._getState = function() {
                    return this.state[this.statesMap[this.code]]
                };
                nodeProto.setState = function(code, state) {
                    if (state) {
                        this.code |= code
                    } else {
                        this.code &= ~code
                    }
                    this.ctx.change(["TILES"])
                }
            },
        17485:
            /*!********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/tree_map/tiling.js ***!
              \********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.addAlgorithm = function(name, callback) {
                    algorithms[name] = callback
                };
                exports.buildSidesData = function(rect, directions, _staticSideIndex) {
                    const staticSideIndex = void 0 !== _staticSideIndex ? _staticSideIndex : getStaticSideIndex(rect);
                    const variedSideIndex = 1 - staticSideIndex;
                    const staticSideDirection = directions[staticSideIndex];
                    const variedSideDirection = directions[variedSideIndex];
                    const staticSideIndexOffsets = directionToIndexOffsets[staticSideDirection];
                    const variedSideIndexOffsets = directionToIndexOffsets[variedSideDirection];
                    return {
                        staticSide: rect[2 + staticSideIndex] - rect[staticSideIndex],
                        variedSide: rect[2 + variedSideIndex] - rect[variedSideIndex],
                        static1: staticSideIndex + staticSideIndexOffsets[0],
                        static2: staticSideIndex + staticSideIndexOffsets[1],
                        varied1: variedSideIndex + variedSideIndexOffsets[0],
                        varied2: variedSideIndex + variedSideIndexOffsets[1],
                        staticDir: staticSideDirection,
                        variedDir: variedSideDirection
                    }
                };
                exports.calculateRectangles = function(nodes, head, totalRect, sidesData, rowData) {
                    let i;
                    let ii;
                    const variedSidePart = [0, 0, 0, 0];
                    const static1 = sidesData.static1;
                    const static2 = sidesData.static2;
                    let position = totalRect[static1];
                    const dir = sidesData.staticDir;
                    let side = sidesData.staticSide;
                    let sum = rowData.sum;
                    let rect;
                    let delta;
                    variedSidePart[sidesData.varied1] = totalRect[sidesData.varied1];
                    variedSidePart[sidesData.varied2] = totalRect[sidesData.varied1] + sidesData.variedDir * rowData.side;
                    for (i = head, ii = head + rowData.count; i < ii; ++i) {
                        rect = variedSidePart.slice();
                        rect[static1] = position;
                        delta = _round(side * nodes[i].value / sum) || 0;
                        sum -= nodes[i].value;
                        side -= delta;
                        position += dir * delta;
                        rect[static2] = position;
                        nodes[i].rect = rect
                    }
                    totalRect[sidesData.varied1] = variedSidePart[sidesData.varied2]
                };
                exports.getAlgorithm = function(value) {
                    return algorithms[(0, _utils.normalizeEnum)(value)] || (0, _type.isFunction)(value) && value || defaultAlgorithm
                };
                exports.getStaticSideIndex = void 0;
                exports.setDefaultAlgorithm = function(name) {
                    defaultAlgorithm = algorithms[name]
                };
                var _type = __webpack_require__( /*! ../../core/utils/type */ 11528);
                var _utils = __webpack_require__( /*! ../core/utils */ 28779);
                const _round = Math.round;
                const algorithms = {};
                let defaultAlgorithm;
                const directionToIndexOffsets = {};
                directionToIndexOffsets[-1] = [2, 0];
                directionToIndexOffsets[1] = [0, 2];
                const getStaticSideIndex = function(rect) {
                    return rect[2] - rect[0] < rect[3] - rect[1] ? 0 : 1
                };
                exports.getStaticSideIndex = getStaticSideIndex
            },
        10115:
            /*!*******************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/tree_map/tiling.rotated_slice_and_dice.js ***!
              \*******************************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _tiling = __webpack_require__( /*! ./tiling */ 17485);
                const sliceAndDiceAlgorithm = (0, _tiling.getAlgorithm)("sliceanddice");
                (0, _tiling.addAlgorithm)("rotatedsliceanddice", (function(data) {
                    data.isRotated = !data.isRotated;
                    return sliceAndDiceAlgorithm.call(this, data)
                }))
            },
        94813:
            /*!***********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/tree_map/tiling.slice_and_dice.js ***!
              \***********************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _tiling = __webpack_require__( /*! ./tiling */ 17485);

                function sliceAndDice(data) {
                    const items = data.items;
                    const sidesData = (0, _tiling.buildSidesData)(data.rect, data.directions, data.isRotated ? 1 : 0);
                    (0, _tiling.calculateRectangles)(items, 0, data.rect, sidesData, {
                        sum: data.sum,
                        count: items.length,
                        side: sidesData.variedSide
                    })
                }(0, _tiling.addAlgorithm)("sliceanddice", sliceAndDice);
                exports.default = sliceAndDice;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        69657:
            /*!************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/tree_map/tiling.squarified.base.js ***!
              \************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = function(data, accumulate, isFixedStaticSide) {
                    const items = data.items;
                    const ii = items.length;
                    let i;
                    const context = {
                        sum: data.sum,
                        rect: data.rect,
                        directions: data.directions,
                        accumulate: accumulate
                    };
                    if (isFixedStaticSide) {
                        context.staticSideIndex = (0, _tiling.getStaticSideIndex)(context.rect)
                    }
                    items.sort(compare);
                    for (i = 0; i < ii;) {
                        i = doStep(items, i, context)
                    }
                };
                var _tiling = __webpack_require__( /*! ./tiling */ 17485);
                const _max = Math.max;
                const _round = Math.round;

                function compare(a, b) {
                    return b.value - a.value
                }

                function doStep(nodes, head, context) {
                    const sidesData = (0, _tiling.buildSidesData)(context.rect, context.directions, context.staticSideIndex);
                    const area = (rect = context.rect, (rect[2] - rect[0]) * (rect[3] - rect[1]));
                    var rect;
                    const rowData = area > 0 ? function(nodes, head, context) {
                        let bestAspectRatio = 1 / 0;
                        let nextAspectRatio;
                        let sum = 0;
                        let nextSum;
                        let i;
                        let j;
                        const ii = nodes.length;
                        const coeff = context.areaToValue / context.staticSide;
                        let totalAspectRatio;
                        for (i = head; i < ii;) {
                            nextSum = sum + nodes[i].value;
                            totalAspectRatio = context.staticSide / coeff / nextSum;
                            nextAspectRatio = 0;
                            for (j = head; j <= i; ++j) {
                                nextAspectRatio = context.accumulate(nextAspectRatio, (value = totalAspectRatio * nodes[j].value / nextSum, _max(value, 1 / value)), j - head + 1)
                            }
                            if (nextAspectRatio < bestAspectRatio) {
                                bestAspectRatio = nextAspectRatio;
                                sum = nextSum;
                                ++i
                            } else {
                                break
                            }
                        }
                        var value;
                        return {
                            sum: sum,
                            count: i - head,
                            side: _round(coeff * sum)
                        }
                    }(nodes, head, {
                        areaToValue: area / context.sum,
                        accumulate: context.accumulate,
                        staticSide: sidesData.staticSide
                    }) : {
                        sum: 1,
                        side: sidesData.variedSide,
                        count: nodes.length - head
                    };
                    (0, _tiling.calculateRectangles)(nodes, head, context.rect, sidesData, rowData);
                    context.sum -= rowData.sum;
                    return head + rowData.count
                }
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        93268:
            /*!*******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/tree_map/tiling.squarified.js ***!
              \*******************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _tilingSquarified = (e = __webpack_require__( /*! ./tiling.squarified.base */ 69657), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                var _tiling = __webpack_require__( /*! ./tiling */ 17485);
                const _max = Math.max;

                function accumulate(total, current) {
                    return _max(total, current)
                }

                function squarified(data) {
                    return (0, _tilingSquarified.default)(data, accumulate, false)
                }(0, _tiling.addAlgorithm)("squarified", squarified);
                exports.default = squarified;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        2085:
            /*!**************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/tree_map/tiling.strip.js ***!
              \**************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _tilingSquarified = (e = __webpack_require__( /*! ./tiling.squarified.base */ 69657), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                var _tiling = __webpack_require__( /*! ./tiling */ 17485);

                function accumulate(total, current, count) {
                    return ((count - 1) * total + current) / count
                }

                function strip(data) {
                    return (0, _tilingSquarified.default)(data, accumulate, true)
                }(0, _tiling.addAlgorithm)("strip", strip);
                exports.default = strip;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        60207:
            /*!*********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/tree_map/tooltip.js ***!
              \*********************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _helpers = __webpack_require__( /*! ../core/helpers */ 71115);
                var _tree_map = (e = __webpack_require__( /*! ./tree_map.base */ 91628), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                __webpack_require__( /*! ./api */ 81708);
                var _tooltip = __webpack_require__( /*! ../core/tooltip */ 23277);
                const proto = _tree_map.default.prototype;
                (0, _helpers.expand)(proto, "_extendProxyType", (function(proto) {
                    const that = this;
                    proto.showTooltip = function(coords) {
                        that._showTooltip(this._id, coords)
                    }
                }));
                (0, _helpers.expand)(proto, "_onNodesCreated", (function() {
                    if (this._tooltipIndex >= 0) {
                        this._tooltip.hide()
                    }
                    this._tooltipIndex = -1
                }));
                (0, _helpers.expand)(proto, "_onTilingPerformed", (function() {
                    if (this._tooltipIndex >= 0) {
                        this._moveTooltip(this._nodes[this._tooltipIndex])
                    }
                }));

                function getCoords(coords, rect, renderer) {
                    const offset = renderer.getRootOffset();
                    return coords || rect && [(rect[0] + rect[2]) / 2 + offset.left, (rect[1] + rect[3]) / 2 + offset.top] || [-1e3, -1e3]
                }
                proto._showTooltip = function(index, coords) {
                    const that = this;
                    const tooltip = that._tooltip;
                    const node = that._nodes[index];
                    if (that._tooltipIndex === index) {
                        that._moveTooltip(node, coords);
                        return
                    }
                    const callback = result => {
                        if (void 0 === result) {
                            return
                        }
                        if (!result) {
                            tooltip.hide()
                        }
                        that._tooltipIndex = result ? index : -1
                    };
                    const xy = getCoords(coords, node.rect, this._renderer);
                    callback(tooltip.show({
                        value: node.value,
                        valueText: tooltip.formatValue(node.value),
                        node: node.proxy
                    }, {
                        x: xy[0],
                        y: xy[1],
                        offset: 0
                    }, {
                        node: node.proxy
                    }, void 0, callback))
                };
                proto._moveTooltip = function(node, coords) {
                    const xy = getCoords(coords, node.rect, this._renderer);
                    this._tooltip.move(xy[0], xy[1], 0)
                };
                proto.hideTooltip = function() {
                    if (this._tooltipIndex >= 0) {
                        this._tooltipIndex = -1;
                        this._tooltip.hide()
                    }
                };
                _tree_map.default.addPlugin(_tooltip.plugin)
            },
        74408:
            /*!*********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/tree_map/tracker.js ***!
              \*********************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _tree_map = (e = __webpack_require__( /*! ./tree_map.base */ 91628), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                var _tracker = __webpack_require__( /*! ../components/tracker */ 16197);
                var _helpers = __webpack_require__( /*! ../core/helpers */ 71115);
                var _utils = __webpack_require__( /*! ../core/utils */ 28779);
                __webpack_require__( /*! ./api */ 81708);
                __webpack_require__( /*! ./hover */ 49774);
                __webpack_require__( /*! ./tooltip */ 60207);
                let dataKeyModifier = 0;
                const proto = _tree_map.default.prototype;
                proto._eventsMap.onClick = {
                    name: "click"
                };
                (0, _helpers.expand)(proto, "_initCore", (function() {
                    const that = this;
                    const dataKey = function() {
                        const dataKey = "__treemap_data_" + dataKeyModifier++;
                        return dataKey
                    }();
                    const getProxy = function(index) {
                        return that._nodes[index].proxy
                    };
                    that._tracker = new _tracker.Tracker({
                        widget: that,
                        root: that._renderer.root,
                        getNode: function(id) {
                            const proxy = getProxy(id);
                            const interactWithGroup = (0, _utils.parseScalar)(that._getOption("interactWithGroup", true));
                            return interactWithGroup && proxy.isLeaf() && proxy.getParent().isActive() ? proxy.getParent() : proxy
                        },
                        getData: function(e) {
                            const target = e.target;
                            return ("tspan" === target.tagName ? target.parentNode : target)[dataKey]
                        },
                        getProxy: getProxy,
                        click: function(e) {
                            that._eventTrigger("click", e)
                        }
                    });
                    that._handlers.setTrackerData = function(node, element) {
                        element.data(dataKey, node._id)
                    }
                }));
                (0, _helpers.expand)(proto, "_disposeCore", (function() {
                    this._tracker.dispose()
                }))
            },
        91628:
            /*!***************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/tree_map/tree_map.base.js ***!
              \***************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _common = __webpack_require__( /*! ./common */ 30211);
                var _node = _interopRequireDefault(__webpack_require__( /*! ./node */ 14206));
                var _tiling = __webpack_require__( /*! ./tiling */ 17485);
                var _colorizing = __webpack_require__( /*! ./colorizing */ 6134);
                var _utils = __webpack_require__( /*! ../core/utils */ 28779);
                var _common2 = __webpack_require__( /*! ../../core/utils/common */ 17781);
                var _m_base_widget = _interopRequireDefault(__webpack_require__( /*! ../../__internal/viz/core/m_base_widget */ 34506));
                __webpack_require__( /*! ./tiling.squarified */ 93268);
                __webpack_require__( /*! ./colorizing.discrete */ 53505);
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 92848));
                var _data_source = __webpack_require__( /*! ../core/data_source */ 25058);

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const _max = Math.max;
                const directions = {
                    lefttoprightbottom: [1, 1],
                    leftbottomrighttop: [1, -1],
                    righttopleftbottom: [-1, 1],
                    rightbottomlefttop: [-1, -1]
                };
                (0, _tiling.setDefaultAlgorithm)("squarified");
                (0, _colorizing.setDefaultColorizer)("discrete");

                function pickPositiveInteger(val) {
                    return val > 0 ? Math.round(val) : 0
                }
                const dxTreeMap = _m_base_widget.default.inherit({
                    _handlers: {
                        beginBuildNodes: _common2.noop,
                        buildNode: _common2.noop,
                        endBuildNodes: _common2.noop,
                        setTrackerData: _common2.noop,
                        calculateState: function(options) {
                            return (0, _common.buildRectAppearance)(options)
                        }
                    },
                    _rootClass: "dxtm-tree-map",
                    _rootClassPrefix: "dxtm",
                    _getDefaultSize: function() {
                        return {
                            width: 400,
                            height: 400
                        }
                    },
                    _themeSection: "treeMap",
                    _fontFields: ["tile.label.font", "group.label.font"],
                    _init: function() {
                        const that = this;
                        that._rectOffsets = {};
                        that._handlers = Object.create(that._handlers);
                        that._context = {
                            suspend: function() {
                                if (!that._applyingChanges) {
                                    that._suspendChanges()
                                }
                            },
                            resume: function() {
                                if (!that._applyingChanges) {
                                    that._resumeChanges()
                                }
                            },
                            change: function(codes) {
                                that._change(codes)
                            },
                            settings: [{}, {}],
                            calculateState: that._handlers.calculateState,
                            calculateLabelState: _common.buildTextAppearance
                        };
                        that._root = that._topNode = {
                            nodes: []
                        };
                        that.callBase.apply(that, arguments)
                    },
                    _initialChanges: ["DATA_SOURCE"],
                    _initCore: function() {
                        const renderer = this._renderer;
                        this._createProxyType();
                        this._tilesGroup = renderer.g().linkOn(renderer.root, "tiles").linkAppend();
                        this._labelsGroup = renderer.g().linkOn(renderer.root, "labels").linkAppend()
                    },
                    _createProxyType: _common2.noop,
                    _disposeCore: function() {
                        this._filter && this._filter.dispose();
                        this._labelsGroup.linkOff();
                        this._tilesGroup.linkOff()
                    },
                    _applySize: function(rect) {
                        this._tilingRect = rect.slice();
                        this._change(["TILING"])
                    },
                    _optionChangesMap: {
                        dataSource: "DATA_SOURCE",
                        valueField: "NODES_CREATE",
                        childrenField: "NODES_CREATE",
                        colorField: "TILES",
                        colorizer: "TILES",
                        labelField: "LABELS",
                        tile: "TILE_SETTINGS",
                        group: "GROUP_SETTINGS",
                        maxDepth: "MAX_DEPTH",
                        layoutAlgorithm: "TILING",
                        layoutDirection: "TILING"
                    },
                    _themeDependentChanges: ["TILE_SETTINGS", "GROUP_SETTINGS", "MAX_DEPTH"],
                    _changeDataSource: function() {
                        const that = this;
                        that._isDataExpected = that._isSyncData = true;
                        that._updateDataSource();
                        that._isSyncData = false;
                        if (that._isDataExpected) {
                            that._suspendChanges()
                        }
                    },
                    _dataSourceChangedHandler: function() {
                        const that = this;
                        if (that._isDataExpected) {
                            that._isDataExpected = false;
                            that._change(["NODES_CREATE"]);
                            if (!that._isSyncData) {
                                that._resumeChanges()
                            }
                        } else {
                            that._requestChange(["NODES_CREATE"])
                        }
                    },
                    _optionChangesOrder: ["DATA_SOURCE", "TILE_SETTINGS", "GROUP_SETTINGS", "MAX_DEPTH"],
                    _change_DATA_SOURCE: function() {
                        this._changeDataSource()
                    },
                    _change_TILE_SETTINGS: function() {
                        this._changeTileSettings()
                    },
                    _change_GROUP_SETTINGS: function() {
                        this._changeGroupSettings()
                    },
                    _change_MAX_DEPTH: function() {
                        this._changeMaxDepth()
                    },
                    _customChangesOrder: ["NODES_CREATE", "NODES_RESET", "TILES", "LABELS", "TILING", "LABELS_LAYOUT"],
                    _change_NODES_CREATE: function() {
                        this._buildNodes()
                    },
                    _change_NODES_RESET: function() {
                        this._resetNodes()
                    },
                    _change_TILES: function() {
                        this._applyTilesAppearance()
                    },
                    _change_LABELS: function() {
                        this._applyLabelsAppearance()
                    },
                    _change_TILING: function() {
                        this._performTiling()
                    },
                    _change_LABELS_LAYOUT: function() {
                        this._performLabelsLayout()
                    },
                    _applyChanges: function() {
                        const that = this;
                        that.callBase.apply(that, arguments);
                        if (!that._isDataExpected) {
                            that._drawn()
                        }
                        that._context.forceReset = false
                    },
                    _buildNodes: function() {
                        const root = this._root = this._topNode = new _node.default;
                        root._id = 0;
                        root.parent = {};
                        root.data = {};
                        root.level = root.index = -1;
                        root.ctx = this._context;
                        root.label = null;
                        this._nodes = [root];
                        this._handlers.beginBuildNodes();
                        const processedData = this._processDataSourceItems(this._dataSourceItems() || []);
                        traverseDataItems(root, processedData.items, 0, {
                            itemsField: !processedData.isPlain && this._getOption("childrenField", true) || "items",
                            valueField: this._getOption("valueField", true) || "value",
                            buildNode: this._handlers.buildNode,
                            ctx: this._context,
                            nodes: this._nodes
                        });
                        this._onNodesCreated();
                        this._handlers.endBuildNodes();
                        this._change(["NODES_RESET"])
                    },
                    _onNodesCreated: _common2.noop,
                    _processDataSourceItems: function(items) {
                        return {
                            items: items,
                            isPlain: false
                        }
                    },
                    _changeTileSettings: function() {
                        const that = this;
                        const options = that._getOption("tile");
                        const offsets = that._rectOffsets;
                        const borderWidth = pickPositiveInteger(options.border.width);
                        const edgeOffset = borderWidth / 2;
                        const innerOffset = 1 & borderWidth ? .5 : 0;
                        const labelOptions = options.label;
                        const settings = that._context.settings[0];
                        that._change(["TILES", "LABELS"]);
                        settings.state = that._handlers.calculateState(options);
                        that._filter = that._filter || that._renderer.shadowFilter("-50%", "-50%", "200%", "200%");
                        that._filter.attr(labelOptions.shadow);
                        that._calculateLabelSettings(settings, labelOptions, that._filter.id);
                        if (offsets.tileEdge !== edgeOffset || offsets.tileInner !== innerOffset) {
                            offsets.tileEdge = edgeOffset;
                            offsets.tileInner = innerOffset;
                            that._change(["TILING"])
                        }
                    },
                    _changeGroupSettings: function() {
                        const that = this;
                        const options = that._getOption("group");
                        const labelOptions = options.label;
                        const offsets = that._rectOffsets;
                        const borderWidth = pickPositiveInteger(options.border.width);
                        const edgeOffset = borderWidth / 2;
                        const innerOffset = 1 & borderWidth ? .5 : 0;
                        let headerHeight = 0;
                        const groupPadding = pickPositiveInteger(options.padding);
                        const settings = that._context.settings[1];
                        that._change(["TILES", "LABELS"]);
                        settings.state = that._handlers.calculateState(options);
                        that._calculateLabelSettings(settings, labelOptions);
                        if (options.headerHeight >= 0) {
                            headerHeight = pickPositiveInteger(options.headerHeight)
                        } else {
                            headerHeight = settings.labelParams.height + 2 * pickPositiveInteger(labelOptions.paddingTopBottom)
                        }
                        if (that._headerHeight !== headerHeight) {
                            that._headerHeight = headerHeight;
                            that._change(["TILING"])
                        }
                        if (that._groupPadding !== groupPadding) {
                            that._groupPadding = groupPadding;
                            that._change(["TILING"])
                        }
                        if (offsets.headerEdge !== edgeOffset || offsets.headerInner !== innerOffset) {
                            offsets.headerEdge = edgeOffset;
                            offsets.headerInner = innerOffset;
                            that._change(["TILING"])
                        }
                    },
                    _calculateLabelSettings: function(settings, options, filter) {
                        const bBox = this._getTextBBox(options.font);
                        const paddingLeftRight = pickPositiveInteger(options.paddingLeftRight);
                        const paddingTopBottom = pickPositiveInteger(options.paddingTopBottom);
                        const tileLabelOptions = this._getOption("tile.label");
                        const groupLabelOptions = this._getOption("group.label");
                        settings.labelState = (0, _common.buildTextAppearance)(options, filter);
                        settings.labelState.visible = !("visible" in options) || !!options.visible;
                        settings.labelParams = {
                            height: bBox.height,
                            rtlEnabled: this._getOption("rtlEnabled", true),
                            paddingTopBottom: paddingTopBottom,
                            paddingLeftRight: paddingLeftRight,
                            tileLabelWordWrap: tileLabelOptions.wordWrap,
                            tileLabelOverflow: tileLabelOptions.textOverflow,
                            groupLabelOverflow: groupLabelOptions.textOverflow
                        }
                    },
                    _changeMaxDepth: function() {
                        let maxDepth = this._getOption("maxDepth", true);
                        maxDepth = maxDepth >= 1 ? Math.round(maxDepth) : 1 / 0;
                        if (this._maxDepth !== maxDepth) {
                            this._maxDepth = maxDepth;
                            this._change(["NODES_RESET"])
                        }
                    },
                    _resetNodes: function() {
                        this._tilesGroup.clear();
                        this._renderer.initDefsElements();
                        this._context.forceReset = true;
                        this._context.minLevel = this._topNode.level + 1;
                        this._context.maxLevel = this._context.minLevel + this._maxDepth - 1;
                        this._change(["TILES", "LABELS", "TILING"])
                    },
                    _processNodes: function(context, process) {
                        processNodes(context, this._topNode, process)
                    },
                    _applyTilesAppearance: function() {
                        const colorizer = (0, _colorizing.getColorizer)(this._getOption("colorizer"), this._themeManager, this._topNode);
                        this._processNodes({
                            renderer: this._renderer,
                            group: this._tilesGroup,
                            setTrackerData: this._handlers.setTrackerData,
                            colorField: this._getOption("colorField", true) || "color",
                            getColor: colorizer
                        }, processTileAppearance)
                    },
                    _applyLabelsAppearance: function() {
                        this._labelsGroup.clear();
                        this._processNodes({
                            renderer: this._renderer,
                            group: this._labelsGroup,
                            setTrackerData: this._handlers.setTrackerData,
                            labelField: this._getOption("labelField", true) || "name"
                        }, processLabelAppearance);
                        this._change(["LABELS_LAYOUT"])
                    },
                    _performTiling: function() {
                        const context = {
                            algorithm: (0, _tiling.getAlgorithm)(this._getOption("layoutAlgorithm", true)),
                            directions: directions[String(this._getOption("layoutDirection", true)).toLowerCase()] || directions.lefttoprightbottom,
                            headerHeight: this._headerHeight,
                            groupPadding: this._groupPadding,
                            rectOffsets: this._rectOffsets
                        };
                        this._topNode.innerRect = this._tilingRect;
                        calculateRects(context, this._topNode);
                        this._processNodes(context, processTiling);
                        this._change(["LABELS_LAYOUT"]);
                        this._onTilingPerformed()
                    },
                    _onTilingPerformed: _common2.noop,
                    _performLabelsLayout: function() {
                        this._processNodes(null, processLabelsLayout)
                    },
                    _getTextBBox: function(fontOptions) {
                        const renderer = this._renderer;
                        const text = this._textForCalculations || renderer.text("0", 0, 0);
                        this._textForCalculations = text;
                        text.css((0, _utils.patchFontOptions)(fontOptions)).append(renderer.root);
                        const bBox = text.getBBox();
                        text.remove();
                        return bBox
                    }
                });

                function traverseDataItems(root, dataItems, level, params) {
                    const nodes = [];
                    const allNodes = params.nodes;
                    let node;
                    let i;
                    const ii = dataItems.length;
                    let dataItem;
                    let totalValue = 0;
                    let items;
                    for (i = 0; i < ii; ++i) {
                        var _items;
                        dataItem = dataItems[i];
                        node = new _node.default;
                        node._id = allNodes.length;
                        node.ctx = params.ctx;
                        node.parent = root;
                        node.level = level;
                        node.index = nodes.length;
                        node.data = dataItem;
                        params.buildNode(node);
                        allNodes.push(node);
                        nodes.push(node);
                        items = dataItem[params.itemsField];
                        if (null !== (_items = items) && void 0 !== _items && _items.length) {
                            traverseDataItems(node, items, level + 1, params)
                        }
                        if (dataItem[params.valueField] > 0) {
                            node.value = Number(dataItem[params.valueField])
                        }
                        totalValue += node.value
                    }
                    root.nodes = nodes;
                    root.value = totalValue
                }

                function processNodes(context, root, process) {
                    const nodes = root.nodes;
                    let node;
                    let i;
                    const ii = nodes.length;
                    for (i = 0; i < ii; ++i) {
                        node = nodes[i];
                        process(context, node);
                        if (node.isNode()) {
                            processNodes(context, node, process)
                        }
                    }
                }
                const createTile = [function(context, node) {
                    const tile = context.renderer.simpleRect().append(context.group);
                    context.setTrackerData(node, tile);
                    return tile
                }, function(context, node) {
                    const outer = context.renderer.simpleRect().append(context.group);
                    const inner = context.renderer.simpleRect().append(context.group);
                    context.setTrackerData(node, inner);
                    return {
                        outer: outer,
                        inner: inner
                    }
                }];

                function processTileAppearance(context, node) {
                    node.color = node.data[context.colorField] || context.getColor(node) || node.parent.color;
                    node.updateStyles();
                    node.tile = !node.ctx.forceReset && node.tile || createTile[Number(node.isNode())](context, node);
                    node.applyState()
                }

                function processLabelAppearance(context, node) {
                    node.updateLabelStyle();
                    if (node.labelState.visible) {
                        ! function(context, currentNode, settings) {
                            let textData = currentNode.data[context.labelField];
                            currentNode.label = textData ? String(textData) : null;
                            textData = currentNode.customLabel || currentNode.label;
                            if (textData) {
                                currentNode.text = context.renderer.text(textData).attr(settings.attr).css(settings.css).append(context.group);
                                context.setTrackerData(currentNode, currentNode.text)
                            }
                        }(context, node, node.labelState, node.labelParams)
                    }
                }
                const emptyRect = [0, 0, 0, 0];

                function calculateRects(context, root) {
                    const nodes = root.nodes;
                    const items = [];
                    const rects = [];
                    let sum = 0;
                    let i;
                    const ii = items.length = rects.length = nodes.length;
                    for (i = 0; i < ii; ++i) {
                        sum += nodes[i].value;
                        items[i] = {
                            value: nodes[i].value,
                            i: i
                        }
                    }
                    if (sum > 0) {
                        context.algorithm({
                            items: items.slice(),
                            sum: sum,
                            rect: root.innerRect.slice(),
                            isRotated: 1 & nodes[0].level,
                            directions: context.directions
                        })
                    }
                    for (i = 0; i < ii; ++i) {
                        rects[i] = items[i].rect || emptyRect
                    }
                    root.rects = rects
                }

                function processTiling(context, node) {
                    let rect = node.parent.rects[node.index];
                    const rectOffsets = context.rectOffsets;
                    let headerHeight;
                    if (node.isNode()) {
                        setRectAttrs(node.tile.outer, buildTileRect(rect, node.parent.innerRect, rectOffsets.headerEdge, rectOffsets.headerInner));
                        rect = marginateRect(rect, context.groupPadding);
                        headerHeight = Math.min(context.headerHeight, rect[3] - rect[1]);
                        node.rect = [rect[0], rect[1], rect[2], rect[1] + headerHeight];
                        setRectAttrs(node.tile.inner, marginateRect(node.rect, rectOffsets.headerEdge));
                        rect[1] += headerHeight;
                        node.innerRect = rect;
                        calculateRects(context, node)
                    } else {
                        node.rect = rect;
                        setRectAttrs(node.tile, buildTileRect(rect, node.parent.innerRect, rectOffsets.tileEdge, rectOffsets.tileInner))
                    }
                }

                function marginateRect(rect, margin) {
                    return [rect[0] + margin, rect[1] + margin, rect[2] - margin, rect[3] - margin]
                }

                function buildTileRect(rect, outer, edgeOffset, innerOffset) {
                    return [rect[0] + (rect[0] === outer[0] ? edgeOffset : +innerOffset), rect[1] + (rect[1] === outer[1] ? edgeOffset : +innerOffset), rect[2] - (rect[2] === outer[2] ? edgeOffset : -innerOffset), rect[3] - (rect[3] === outer[3] ? edgeOffset : -innerOffset)]
                }

                function setRectAttrs(element, rect) {
                    element.attr({
                        x: rect[0],
                        y: rect[1],
                        width: _max(rect[2] - rect[0], 0),
                        height: _max(rect[3] - rect[1], 0)
                    })
                }

                function processLabelsLayout(context, node) {
                    if (node.text && node.labelState.visible) {
                        ! function(node, params) {
                            const rect = node.rect;
                            const text = node.text;
                            const bBox = text.getBBox();
                            const paddingLeftRight = params.paddingLeftRight;
                            const paddingTopBottom = params.paddingTopBottom;
                            const effectiveWidth = rect[2] - rect[0] - 2 * paddingLeftRight;
                            text.setMaxSize(effectiveWidth, rect[3] - rect[1] - paddingTopBottom, node.isNode() ? {
                                textOverflow: params.groupLabelOverflow,
                                wordWrap: "none"
                            } : {
                                textOverflow: params.tileLabelOverflow,
                                wordWrap: params.tileLabelWordWrap,
                                hideOverflowEllipsis: true
                            });
                            text.move(params.rtlEnabled ? rect[2] - paddingLeftRight - bBox.x - bBox.width : rect[0] + paddingLeftRight - bBox.x, rect[1] + paddingTopBottom - bBox.y)
                        }(node, node.labelParams)
                    }
                }(0, _component_registrator.default)("dxTreeMap", dxTreeMap);
                exports.default = dxTreeMap;
                dxTreeMap.addPlugin(_data_source.plugin);
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        96191:
            /*!**********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/tree_map/tree_map.js ***!
              \**********************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _tree_map = (e = __webpack_require__( /*! ./tree_map.base */ 91628), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                __webpack_require__( /*! ./tiling.squarified */ 93268);
                __webpack_require__( /*! ./tiling.strip */ 2085);
                __webpack_require__( /*! ./tiling.slice_and_dice */ 94813);
                __webpack_require__( /*! ./tiling.rotated_slice_and_dice */ 10115);
                __webpack_require__( /*! ./colorizing.discrete */ 53505);
                __webpack_require__( /*! ./colorizing.gradient */ 18202);
                __webpack_require__( /*! ./colorizing.range */ 70185);
                __webpack_require__( /*! ./api */ 81708);
                __webpack_require__( /*! ./hover */ 49774);
                __webpack_require__( /*! ./selection */ 98350);
                __webpack_require__( /*! ./tooltip */ 60207);
                __webpack_require__( /*! ./tracker */ 74408);
                __webpack_require__( /*! ./drilldown */ 74721);
                __webpack_require__( /*! ./plain_data_source */ 34239);
                var _export = __webpack_require__( /*! ../core/export */ 74754);
                var _title = __webpack_require__( /*! ../core/title */ 16216);
                var _loading_indicator = __webpack_require__( /*! ../core/loading_indicator */ 92528);
                exports.default = _tree_map.default;
                _tree_map.default.addPlugin(_export.plugin);
                _tree_map.default.addPlugin(_title.plugin);
                _tree_map.default.addPlugin(_loading_indicator.plugin);
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        2225:
            /*!**********************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/utils.js ***!
              \**********************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.prepareSegmentRectPoints = exports.floorCanvasDimensions = exports.areCanvasesDifferent = void 0;
                Object.defineProperty(exports, "refreshPaths", {
                    enumerable: true,
                    get: function() {
                        return _renderer.refreshPaths
                    }
                });
                var _renderer = __webpack_require__( /*! ./core/renderers/renderer */ 63022);
                var _iterator = __webpack_require__( /*! ../core/utils/iterator */ 21274);

                function _extends() {
                    return _extends = Object.assign ? Object.assign.bind() : function(n) {
                        for (var e = 1; e < arguments.length; e++) {
                            var t = arguments[e];
                            for (var r in t) {
                                ({}).hasOwnProperty.call(t, r) && (n[r] = t[r])
                            }
                        }
                        return n
                    }, _extends.apply(null, arguments)
                }
                const {
                    floor: floor
                } = Math;
                exports.prepareSegmentRectPoints = function(left, top, width, height, borderOptions) {
                    const maxSW = ~~((width < height ? width : height) / 2);
                    const sw = borderOptions.width || 0;
                    const newSW = sw < maxSW ? sw : maxSW;
                    left += newSW / 2;
                    top += newSW / 2;
                    width -= newSW;
                    height -= newSW;
                    const right = left + width;
                    const bottom = top + height;
                    let points = [];
                    let segments = [];
                    let segmentSequence;
                    let visiblyOpt = 0;
                    let prevSegmentVisibility = 0;
                    const allSegment = {
                        top: [
                            [left, top],
                            [right, top]
                        ],
                        right: [
                            [right, top],
                            [right, bottom]
                        ],
                        bottom: [
                            [right, bottom],
                            [left, bottom]
                        ],
                        left: [
                            [left, bottom],
                            [left, top]
                        ]
                    };
                    (0, _iterator.each)(allSegment, (function(seg) {
                        const visibility = !!borderOptions[seg];
                        visiblyOpt = 2 * visiblyOpt + ~~visibility
                    }));
                    switch (visiblyOpt) {
                        case 13:
                        case 9:
                            segmentSequence = ["left", "top", "right", "bottom"];
                            break;
                        case 11:
                            segmentSequence = ["bottom", "left", "top", "right"];
                            break;
                        default:
                            segmentSequence = ["top", "right", "bottom", "left"]
                    }(0, _iterator.each)(segmentSequence, (function(_, seg) {
                        const segmentVisibility = !!borderOptions[seg];
                        if (!prevSegmentVisibility && segments.length) {
                            points.push(segments);
                            segments = []
                        }
                        if (segmentVisibility) {
                            (0, _iterator.each)(allSegment[seg].slice(prevSegmentVisibility), (function(_, segment) {
                                segments = segments.concat(segment)
                            }))
                        }
                        prevSegmentVisibility = ~~segmentVisibility
                    }));
                    segments.length && points.push(segments);
                    1 === points.length && (points = points[0]);
                    return {
                        points: points,
                        pathType: 15 === visiblyOpt ? "area" : "line"
                    }
                };
                exports.areCanvasesDifferent = function(canvas1, canvas2) {
                    const sizeLessThreshold = ["width", "height"].every((key => Math.abs(canvas1[key] - canvas2[key]) < 1));
                    const canvasCoordsIsEqual = ["left", "right", "top", "bottom"].every((key => canvas1[key] === canvas2[key]));
                    return !(sizeLessThreshold && canvasCoordsIsEqual)
                };
                exports.floorCanvasDimensions = function(canvas) {
                    return _extends({}, canvas, {
                        height: floor(canvas.height),
                        width: floor(canvas.width)
                    })
                }
            },
        85148:
            /*!***************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/vector_map.js ***!
              \***************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _vector_map = (e = __webpack_require__( /*! ./vector_map/vector_map */ 9713), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                exports.default = _vector_map.default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        77148:
            /*!***************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/vector_map/control_bar/control_bar.js ***!
              \***************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.ControlBar = ControlBar;
                var _utils = __webpack_require__( /*! ../../core/utils */ 28779);
                var _utils2 = __webpack_require__( /*! ./utils */ 16750);
                const _math = Math;
                const _min = _math.min;
                const _max = _math.max;
                const _round = _math.round;
                const _floor = _math.floor;
                const _sqrt = _math.sqrt;
                const parseHorizontalAlignment = (0, _utils.enumParser)(["left", "center", "right"]);
                const parseVerticalAlignment = (0, _utils.enumParser)(["top", "bottom"]);
                const SIZE_OPTIONS = {
                    bigCircleSize: 58,
                    smallCircleSize: 28,
                    buttonSize: 10,
                    arrowButtonOffset: 20,
                    incDecButtonSize: 11,
                    incButtonOffset: 66,
                    decButtonOffset: 227,
                    sliderLineStartOffset: 88.5,
                    sliderLineEndOffset: 205.5,
                    sliderLength: 20,
                    sliderWidth: 8,
                    trackerGap: 4
                };
                let COMMAND_TO_TYPE_MAP = {};
                COMMAND_TO_TYPE_MAP["command-reset"] = ResetCommand;
                COMMAND_TO_TYPE_MAP["command-move-up"] = COMMAND_TO_TYPE_MAP["command-move-right"] = COMMAND_TO_TYPE_MAP["command-move-down"] = COMMAND_TO_TYPE_MAP["command-move-left"] = MoveCommand;
                COMMAND_TO_TYPE_MAP["command-zoom-in"] = COMMAND_TO_TYPE_MAP["command-zoom-out"] = ZoomCommand;
                COMMAND_TO_TYPE_MAP["command-zoom-drag"] = ZoomDragCommand;

                function ControlBar(parameters) {
                    this._params = parameters;
                    this._createElements(parameters.renderer, parameters.container, parameters.dataKey);
                    parameters.layoutControl.addItem(this);
                    this._subscribeToProjection(parameters.projection);
                    this._subscribeToTracker(parameters.tracker);
                    this._createCallbacks(parameters.projection)
                }
                ControlBar.prototype = {
                    constructor: ControlBar,
                    _flags: 0,
                    dispose: function() {
                        this._params.layoutControl.removeItem(this);
                        this._root.linkRemove().linkOff();
                        this._offProjection();
                        this._offTracker();
                        this._params = this._root = this._offProjection = this._offTracker = this._callbacks = null
                    },
                    _subscribeToProjection: function(projection) {
                        const that = this;
                        that._offProjection = projection.on({
                            engine: function() {
                                that._update()
                            },
                            zoom: updateZoom,
                            "max-zoom": function() {
                                that._zoomPartition = projection.getZoomScalePartition();
                                that._sliderUnitLength = that._sliderLineLength / that._zoomPartition;
                                updateZoom()
                            }
                        });

                        function updateZoom() {
                            that._adjustZoom(projection.getScaledZoom())
                        }
                    },
                    _subscribeToTracker: function(tracker) {
                        const that = this;
                        let isActive = false;
                        that._offTracker = tracker.on({
                            start: function(arg) {
                                isActive = "control-bar" === arg.data.name;
                                if (isActive) {
                                    that._processStart(arg.data.index, arg)
                                }
                            },
                            move: function(arg) {
                                if (isActive) {
                                    that._processMove(arg.data.index, arg)
                                }
                            },
                            end: function() {
                                if (isActive) {
                                    that._processEnd();
                                    isActive = false
                                }
                            }
                        })
                    },
                    _createCallbacks: function(projection) {
                        this._callbacks = {
                            reset: function(isCenter, isZoom) {
                                if (isCenter) {
                                    projection.setCenter(null)
                                }
                                if (isZoom) {
                                    projection.setZoom(null)
                                }
                            },
                            beginMove: function() {
                                projection.beginMoveCenter()
                            },
                            endMove: function() {
                                projection.endMoveCenter()
                            },
                            move: function(shift) {
                                projection.moveCenter(shift)
                            },
                            zoom: function(zoom) {
                                projection.setScaledZoom(zoom)
                            }
                        }
                    },
                    _createElements: function(renderer, container, dataKey) {
                        this._root = renderer.g().attr({
                            class: "dxm-control-bar"
                        }).linkOn(container, "control-bar");
                        const panControl = this._panControl = (0, _utils2.createVisibilityGroup)(renderer, this._root, "dxm-pan-control");
                        const zoomBar = this._zoomBar = (0, _utils2.createVisibilityGroup)(renderer, this._root, "dxm-zoom-bar");
                        const trackersPan = this._trackersPan = (0, _utils2.createTracker)(renderer, this._root);
                        const trackersZoom = this._trackersZoom = (0, _utils2.createTracker)(renderer, this._root);
                        this._createTrackersPan(renderer, dataKey, trackersPan);
                        this._createTrackersZoom(renderer, dataKey, trackersZoom);
                        this._createPanControl(renderer, dataKey, panControl);
                        this._createZoomBar(renderer, dataKey, zoomBar)
                    },
                    _createPanControl: function(renderer, dataKey, group) {
                        const options = SIZE_OPTIONS;
                        const size = options.buttonSize / 2;
                        const offset1 = options.arrowButtonOffset - size;
                        const offset2 = options.arrowButtonOffset;
                        const directionOptions = {
                            "stroke-linecap": "square",
                            fill: "none"
                        };
                        renderer.circle(0, 0, options.bigCircleSize / 2).append(group);
                        renderer.circle(0, 0, size).attr({
                            fill: "none"
                        }).append(group);
                        renderer.path([-size, -offset1, 0, -offset2, size, -offset1], "line").attr(directionOptions).append(group);
                        renderer.path([offset1, -size, offset2, 0, offset1, size], "line").attr(directionOptions).append(group);
                        renderer.path([size, offset1, 0, offset2, -size, offset1], "line").attr(directionOptions).append(group);
                        renderer.path([-offset1, size, -offset2, 0, -offset1, -size], "line").attr(directionOptions).append(group)
                    },
                    _createZoomBar: function(renderer, dataKey, group) {
                        const options = SIZE_OPTIONS;
                        const incDecButtonSize = options.incDecButtonSize / 2;
                        renderer.circle(0, options.incButtonOffset, options.smallCircleSize / 2).append(group);
                        renderer.path([
                            [-incDecButtonSize, options.incButtonOffset, incDecButtonSize, options.incButtonOffset],
                            [0, options.incButtonOffset - incDecButtonSize, 0, options.incButtonOffset + incDecButtonSize]
                        ], "area").append(group);
                        renderer.circle(0, options.decButtonOffset, options.smallCircleSize / 2).append(group);
                        renderer.path([-incDecButtonSize, options.decButtonOffset, incDecButtonSize, options.decButtonOffset], "area").append(group);
                        this._zoomLine = renderer.path([], "line").append(group);
                        this._zoomDrag = renderer.rect(_floor(-options.sliderLength / 2), _floor(options.sliderLineEndOffset - options.sliderWidth / 2), options.sliderLength, options.sliderWidth).append(group);
                        this._sliderLineLength = options.sliderLineEndOffset - options.sliderLineStartOffset
                    },
                    _createTrackersPan: function(renderer, dataKey, group) {
                        const options = SIZE_OPTIONS;
                        const size = _round((options.arrowButtonOffset - options.trackerGap) / 2);
                        const offset1 = options.arrowButtonOffset - size;
                        const offset2 = _round(_sqrt(options.bigCircleSize * options.bigCircleSize / 4 - size * size));
                        const size2 = offset2 - offset1;
                        renderer.rect(-size, -size, 2 * size, 2 * size).data(dataKey, {
                            index: "command-reset",
                            name: "control-bar"
                        }).append(group);
                        renderer.rect(-size, -offset2, 2 * size, size2).data(dataKey, {
                            index: "command-move-up",
                            name: "control-bar"
                        }).append(group);
                        renderer.rect(offset1, -size, size2, 2 * size).data(dataKey, {
                            index: "command-move-right",
                            name: "control-bar"
                        }).append(group);
                        renderer.rect(-size, offset1, 2 * size, size2).data(dataKey, {
                            index: "command-move-down",
                            name: "control-bar"
                        }).append(group);
                        renderer.rect(-offset2, -size, size2, 2 * size).data(dataKey, {
                            index: "command-move-left",
                            name: "control-bar"
                        }).append(group)
                    },
                    _createTrackersZoom: function(renderer, dataKey, group) {
                        const options = SIZE_OPTIONS;
                        renderer.circle(0, options.incButtonOffset, options.smallCircleSize / 2).data(dataKey, {
                            index: "command-zoom-in",
                            name: "control-bar"
                        }).append(group);
                        renderer.circle(0, options.decButtonOffset, options.smallCircleSize / 2).data(dataKey, {
                            index: "command-zoom-out",
                            name: "control-bar"
                        }).append(group);
                        renderer.rect(-2, options.sliderLineStartOffset - 2, 4, options.sliderLineEndOffset - options.sliderLineStartOffset + 4).css({
                            cursor: "default"
                        }).data(dataKey, {
                            index: "command-zoom-drag-line",
                            name: "control-bar"
                        }).append(group);
                        this._zoomDragTracker = renderer.rect(-options.sliderLength / 2, options.sliderLineEndOffset - options.sliderWidth / 2, options.sliderLength, options.sliderWidth).data(dataKey, {
                            index: "command-zoom-drag",
                            name: "control-bar"
                        }).append(group)
                    },
                    resize: function(size) {
                        if (this._isActive) {
                            this._root.attr({
                                visibility: null !== size ? null : "hidden"
                            })
                        }
                    },
                    getLayoutOptions: function() {
                        return this._isActive ? this._layoutOptions : null
                    },
                    locate: function(x, y) {
                        this._root.attr({
                            translateX: x + this._margin + 30.5,
                            translateY: y + this._margin + 30.5
                        })
                    },
                    _update: function() {
                        const that = this;
                        that._isActive = that._isEnabled && that._flags && that._params.projection.isInvertible();
                        const groupPan = [that._panControl, that._trackersPan];
                        const groupZoom = [that._zoomBar, that._trackersZoom];
                        if (that._isActive) {
                            that._root.linkAppend();
                            (0, _utils2.toggleDisplay)(groupPan, that._isPanVisible);
                            (0, _utils2.toggleDisplay)(groupZoom, that._isZoomVisible)
                        } else {
                            that._root.linkRemove()
                        }
                        that._processEnd();
                        that.updateLayout()
                    },
                    setInteraction: function(interaction) {
                        const that = this;
                        if ((0, _utils.parseScalar)(interaction.centeringEnabled, true)) {
                            that._flags |= 1
                        } else {
                            that._flags &= -2
                        }
                        if ((0, _utils.parseScalar)(interaction.zoomingEnabled, true)) {
                            that._flags |= 2
                        } else {
                            that._flags &= -3
                        }
                        that._update()
                    },
                    setOptions: function(options) {
                        const styleSvg = {
                            "stroke-width": options.borderWidth,
                            stroke: options.borderColor,
                            fill: options.color,
                            "fill-opacity": options.opacity
                        };
                        this._isEnabled = !!(0, _utils.parseScalar)(options.enabled, true);
                        this._margin = options.margin || 0;
                        this._layoutOptions = {
                            width: 2 * this._margin + 61,
                            height: 2 * this._margin + 274,
                            horizontalAlignment: parseHorizontalAlignment(options.horizontalAlignment, "left"),
                            verticalAlignment: parseVerticalAlignment(options.verticalAlignment, "top")
                        };
                        this._isPanVisible = !!(0, _utils.parseScalar)(options.panVisible, true);
                        this._isZoomVisible = !!(0, _utils.parseScalar)(options.zoomVisible, true);
                        this._panControl.attr(styleSvg);
                        this._zoomBar.attr(styleSvg);
                        this._update()
                    },
                    _adjustZoom: function(zoom) {
                        const start = SIZE_OPTIONS.sliderLineStartOffset;
                        const end = SIZE_OPTIONS.sliderLineEndOffset;
                        const h = SIZE_OPTIONS.sliderWidth;
                        this._zoomFactor = _max(_min(_round(zoom), this._zoomPartition), 0);
                        const transform = {
                            translateY: -_round(this._zoomFactor * this._sliderUnitLength)
                        };
                        const y = end - h / 2 + transform.translateY;
                        this._zoomLine.attr({
                            points: [
                                [0, start, 0, _max(start, y)],
                                [0, _min(end, y + h), 0, end]
                            ]
                        });
                        this._zoomDrag.attr(transform);
                        this._zoomDragTracker.attr(transform)
                    },
                    _applyZoom: function() {
                        this._callbacks.zoom(this._zoomFactor)
                    },
                    _processStart: function(command, arg) {
                        let commandType;
                        if (this._isActive) {
                            commandType = COMMAND_TO_TYPE_MAP[command];
                            this._command = commandType && commandType.flags & this._flags ? new commandType(this, command, arg) : null
                        }
                    },
                    _processMove: function(command, arg) {
                        this._command && this._command.update(command, arg)
                    },
                    _processEnd: function() {
                        this._command && this._command.finish();
                        this._command = null
                    }
                };

                function disposeCommand(command) {
                    delete command._owner;
                    command.update = function() {};
                    command.finish = function() {}
                }

                function ResetCommand(owner, command) {
                    this._owner = owner;
                    this._command = command
                }
                ResetCommand.flags = 3;
                ResetCommand.prototype.update = function(command) {
                    command !== this._command && disposeCommand(this)
                };
                ResetCommand.prototype.finish = function() {
                    const flags = this._owner._flags;
                    this._owner._callbacks.reset(!!(1 & flags), !!(2 & flags));
                    disposeCommand(this)
                };

                function MoveCommand(owner, command, arg) {
                    this._command = command;
                    let timeout = null;
                    let dx = 0;
                    let dy = 0;
                    switch (this._command) {
                        case "command-move-up":
                            dy = -10;
                            break;
                        case "command-move-right":
                            dx = 10;
                            break;
                        case "command-move-down":
                            dy = 10;
                            break;
                        case "command-move-left":
                            dx = -10
                    }
                    this._stop = function() {
                        clearTimeout(timeout);
                        owner._callbacks.endMove();
                        this._stop = owner = null;
                        return this
                    };
                    0;
                    owner._callbacks.beginMove();
                    ! function callback() {
                        owner._callbacks.move([dx, dy]);
                        timeout = setTimeout(callback, 100)
                    }()
                }
                MoveCommand.flags = 1;
                MoveCommand.prototype.update = function(command) {
                    this._command !== command && this.finish()
                };
                MoveCommand.prototype.finish = function() {
                    disposeCommand(this._stop())
                };

                function ZoomCommand(owner, command) {
                    this._owner = owner;
                    this._command = command;
                    let timeout = null;
                    const dZoom = "command-zoom-in" === this._command ? 1 : -1;
                    this._stop = function() {
                        clearTimeout(timeout);
                        this._stop = owner = null;
                        return this
                    };
                    ! function callback() {
                        owner._adjustZoom(owner._zoomFactor + dZoom);
                        timeout = setTimeout(callback, 150)
                    }()
                }
                ZoomCommand.flags = 2;
                ZoomCommand.prototype.update = function(command) {
                    this._command !== command && this.finish()
                };
                ZoomCommand.prototype.finish = function() {
                    this._owner._applyZoom();
                    disposeCommand(this._stop())
                };

                function ZoomDragCommand(owner, command, arg) {
                    this._owner = owner;
                    this._zoomFactor = owner._zoomFactor;
                    this._pos = arg.y
                }
                ZoomDragCommand.flags = 2;
                ZoomDragCommand.prototype.update = function(command, arg) {
                    const owner = this._owner;
                    owner._adjustZoom(this._zoomFactor + owner._zoomPartition * (this._pos - arg.y) / owner._sliderLineLength)
                };
                ZoomDragCommand.prototype.finish = function() {
                    this._owner._applyZoom();
                    disposeCommand(this)
                }
            },
        16750:
            /*!*********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/vector_map/control_bar/utils.js ***!
              \*********************************************************************************/
            function(__unused_webpack_module, exports) {
                exports.toggleDisplay = exports.createVisibilityGroup = exports.createTracker = void 0;
                exports.createTracker = (renderer, root) => renderer.g().attr({
                    stroke: "none",
                    "stroke-width": 0,
                    fill: "#000000",
                    opacity: 1e-4
                }).css({
                    cursor: "pointer"
                }).append(root);
                exports.createVisibilityGroup = function(renderer, root) {
                    let className = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : "";
                    return renderer.g().attr({
                        class: className
                    }).append(root)
                };
                exports.toggleDisplay = (blocks, isVisible) => {
                    const style = isVisible ? {
                        display: "block"
                    } : {
                        display: "none"
                    };
                    blocks.map((item => item.css(style)))
                }
            },
        38409:
            /*!******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/vector_map/data_exchanger.js ***!
              \******************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.DataExchanger = DataExchanger;
                var _callbacks = (e = __webpack_require__( /*! ../../core/utils/callbacks */ 84718), e && e.__esModule ? e : {
                    default: e
                });
                var e;

                function DataExchanger() {
                    this._store = {}
                }
                DataExchanger.prototype = {
                    constructor: DataExchanger,
                    dispose: function() {
                        this._store = null;
                        return this
                    },
                    _get: function(category, name) {
                        const store = this._store[category] || (this._store[category] = {});
                        return store[name] || (store[name] = {
                            callbacks: (0, _callbacks.default)()
                        })
                    },
                    set: function(category, name, data) {
                        const item = this._get(category, name);
                        item.data = data;
                        item.callbacks.fire(data);
                        return this
                    },
                    bind: function(category, name, callback) {
                        const item = this._get(category, name);
                        item.callbacks.add(callback);
                        item.data && callback(item.data);
                        return this
                    },
                    unbind: function(category, name, callback) {
                        const item = this._get(category, name);
                        item.callbacks.remove(callback);
                        return this
                    }
                }
            },
        20366:
            /*!*****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/vector_map/event_emitter.js ***!
              \*****************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.makeEventEmitter = function(target) {
                    const proto = target.prototype;
                    let name;
                    for (name in eventEmitterMethods) {
                        proto[name] = eventEmitterMethods[name]
                    }
                };
                var _callbacks = (e = __webpack_require__( /*! ../../core/utils/callbacks */ 84718), e && e.__esModule ? e : {
                    default: e
                });
                var e;
                const eventEmitterMethods = {
                    _initEvents: function() {
                        const names = this._eventNames;
                        let i;
                        const ii = names.length;
                        const events = this._events = {};
                        for (i = 0; i < ii; ++i) {
                            events[names[i]] = (0, _callbacks.default)()
                        }
                    },
                    _disposeEvents: function() {
                        const events = this._events;
                        let name;
                        for (name in events) {
                            events[name].empty()
                        }
                        this._events = null
                    },
                    on: function(handlers) {
                        const events = this._events;
                        let name;
                        for (name in handlers) {
                            events[name].add(handlers[name])
                        }
                        return function() {
                            for (name in handlers) {
                                events[name].remove(handlers[name])
                            }
                        }
                    },
                    _fire: function(name, arg) {
                        this._events[name].fire(arg)
                    }
                }
            },
        6695:
            /*!*******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/vector_map/gesture_handler.js ***!
              \*******************************************************************************/
            function(__unused_webpack_module, exports) {
                exports.GestureHandler = GestureHandler;
                const _ln = Math.log;
                const _LN2 = Math.LN2;

                function GestureHandler(params) {
                    this._projection = params.projection;
                    this._renderer = params.renderer;
                    this._x = this._y = 0;
                    this._subscribeToTracker(params.tracker)
                }
                GestureHandler.prototype = {
                    constructor: GestureHandler,
                    dispose: function() {
                        this._offTracker();
                        this._offTracker = null
                    },
                    _subscribeToTracker: function(tracker) {
                        const that = this;
                        let isActive = false;
                        that._offTracker = tracker.on({
                            start: function(arg) {
                                isActive = "control-bar" !== arg.data.name;
                                if (isActive) {
                                    that._processStart(arg)
                                }
                            },
                            move: function(arg) {
                                if (isActive) {
                                    that._processMove(arg)
                                }
                            },
                            end: function() {
                                if (isActive) {
                                    that._processEnd()
                                }
                            },
                            zoom: function(arg) {
                                that._processZoom(arg)
                            }
                        })
                    },
                    setInteraction: function(options) {
                        this._processEnd();
                        this._centeringEnabled = options.centeringEnabled;
                        this._zoomingEnabled = options.zoomingEnabled
                    },
                    _processStart: function(arg) {
                        if (this._centeringEnabled) {
                            this._x = arg.x;
                            this._y = arg.y;
                            this._projection.beginMoveCenter()
                        }
                    },
                    _processMove: function(arg) {
                        const that = this;
                        if (that._centeringEnabled) {
                            that._renderer.root.attr({
                                cursor: "move"
                            });
                            that._projection.moveCenter([that._x - arg.x, that._y - arg.y]);
                            that._x = arg.x;
                            that._y = arg.y
                        }
                    },
                    _processEnd: function() {
                        if (this._centeringEnabled) {
                            this._renderer.root.attr({
                                cursor: "default"
                            });
                            this._projection.endMoveCenter()
                        }
                    },
                    _processZoom: function(arg) {
                        const that = this;
                        let delta;
                        let screenPosition;
                        let coords;
                        if (that._zoomingEnabled) {
                            if (arg.delta) {
                                delta = arg.delta
                            } else if (arg.ratio) {
                                delta = _ln(arg.ratio) / _LN2
                            }
                            if (that._centeringEnabled) {
                                screenPosition = that._renderer.getRootOffset();
                                screenPosition = [arg.x - screenPosition.left, arg.y - screenPosition.top];
                                coords = that._projection.fromScreenPoint(screenPosition)
                            }
                            that._projection.changeScaledZoom(delta);
                            if (that._centeringEnabled) {
                                that._projection.setCenterByPoint(coords, screenPosition)
                            }
                        }
                    }
                }
            },
        25217:
            /*!**********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/vector_map/layout.js ***!
              \**********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.LayoutControl = LayoutControl;
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 21274);
                const _round = Math.round;
                const _min = Math.min;
                const _max = Math.max;
                const _each = _iterator.each;
                const horizontalAlignmentMap = {
                    left: 0,
                    center: 1,
                    right: 2
                };
                const verticalAlignmentMap = {
                    top: 0,
                    bottom: 1
                };

                function createCells(canvas, items) {
                    const hStep = (canvas.right - canvas.left) / 3;
                    const vStep = (canvas.bottom - canvas.top) / 2;
                    const h1 = canvas.left;
                    const h2 = _round(h1 + hStep);
                    const h3 = _round(h1 + hStep + hStep);
                    const h4 = canvas.right;
                    const v1 = canvas.top;
                    const v2 = _round(v1 + vStep);
                    const v3 = canvas.bottom;
                    const cells = [{
                        rect: [h1, v1, h2, v2]
                    }, {
                        rect: [h2, v1, h3, v2],
                        center: true
                    }, {
                        rect: [h3, v1, h4, v2],
                        horInversion: true
                    }, {
                        rect: [h1, v2, h2, v3],
                        verInversion: true
                    }, {
                        rect: [h2, v2, h3, v3],
                        center: true,
                        verInversion: true
                    }, {
                        rect: [h3, v2, h4, v3],
                        horInversion: true,
                        verInversion: true
                    }];
                    const itemsList = [
                        [],
                        [],
                        [],
                        [],
                        [],
                        []
                    ];
                    _each(items, (function(_, item) {
                        const options = item.getLayoutOptions();
                        if (options) {
                            itemsList[function(options) {
                                return 3 * verticalAlignmentMap[options.verticalAlignment] + horizontalAlignmentMap[options.horizontalAlignment]
                            }(options)].push({
                                item: item,
                                width: options.width,
                                height: options.height
                            })
                        }
                    }));
                    _each(cells, (function(i, cell) {
                        if (itemsList[i].length) {
                            cell.items = itemsList[i]
                        } else {
                            if (cell.center) {
                                cell.rect[0] = cell.rect[2] = (cell.rect[0] + cell.rect[2]) / 2
                            } else {
                                cell.rect[cell.horInversion ? 0 : 2] = cell.rect[cell.horInversion ? 2 : 0]
                            }
                            cell.rect[cell.verInversion ? 1 : 3] = cell.rect[cell.verInversion ? 3 : 1]
                        }
                    }));
                    return cells
                }

                function adjustCellsAndApplyLayout(cells, forceMode) {
                    let hasHiddenItems = false;
                    ! function(cells) {
                        _each([0, 1, 2, 3, 4, 5], (function(_, index) {
                            const cell = cells[index];
                            const otherCell = cells[(index + 3) % 6];
                            if (cell.items) {
                                if (!otherCell.items) {
                                    cell.rect[1] = _min(cell.rect[1], otherCell.rect[3]);
                                    cell.rect[3] = _max(cell.rect[3], otherCell.rect[1])
                                }
                            }
                        }));
                        _each([1, 4], (function(_, index) {
                            const cell = cells[index];
                            const otherCell1 = cells[index - 1];
                            const otherCell2 = cells[index + 1];
                            let size1;
                            let size2;
                            if (cell.items) {
                                if (!otherCell1.items && !otherCell2.items) {
                                    size1 = cell.rect[0] - otherCell1.rect[2];
                                    size2 = otherCell2.rect[0] - cell.rect[2];
                                    if (size1 > size2) {
                                        if (size1 / size2 >= 2) {
                                            cell.rect[0] -= size1;
                                            cell.right = true
                                        } else {
                                            cell.rect[0] -= size2;
                                            cell.rect[2] += size2
                                        }
                                    } else if (size2 / size1 >= 2) {
                                        cell.rect[2] += size2;
                                        cell.center = null
                                    } else {
                                        cell.rect[0] -= size1;
                                        cell.rect[2] += size1
                                    }
                                }
                            } else {
                                if (otherCell1.items) {
                                    otherCell1.rect[2] = (cell.rect[0] + cell.rect[2]) / 2
                                }
                                if (otherCell2.items) {
                                    otherCell2.rect[0] = (cell.rect[0] + cell.rect[2]) / 2
                                }
                            }
                        }))
                    }(cells);
                    _each(cells, (function(_, cell) {
                        if (cell.items) {
                            hasHiddenItems = function(cell, forceMode) {
                                const cellRect = cell.rect;
                                const cellWidth = cellRect[2] - cellRect[0];
                                const cellHeight = cellRect[3] - cellRect[1];
                                let xOffset = 0;
                                let yOffset = 0;
                                let currentHeight = 0;
                                let totalL = cellRect[2];
                                let totalT = cellRect[3];
                                let totalR = cellRect[0];
                                let totalB = cellRect[1];
                                const moves = [];
                                let hasHiddenItems = false;
                                _each(cell.items, (function(_, item) {
                                    if (item.width > cellWidth || item.height > cellHeight) {
                                        moves.push(null);
                                        hasHiddenItems = true;
                                        return forceMode || false
                                    }
                                    if (xOffset + item.width > cellWidth) {
                                        yOffset += currentHeight;
                                        xOffset = currentHeight = 0
                                    }
                                    if (yOffset + item.height > cellHeight) {
                                        moves.push(null);
                                        hasHiddenItems = true;
                                        return forceMode || false
                                    }
                                    currentHeight = _max(currentHeight, item.height);
                                    const dx = cell.horInversion ? cellRect[2] - item.width - xOffset : cellRect[0] + xOffset;
                                    const dy = cell.verInversion ? cellRect[3] - item.height - yOffset : cellRect[1] + yOffset;
                                    xOffset += item.width;
                                    totalL = _min(totalL, dx);
                                    totalT = _min(totalT, dy);
                                    totalR = _max(totalR, dx + item.width);
                                    totalB = _max(totalB, dy + item.height);
                                    moves.push([dx, dy])
                                }));
                                if (forceMode || !hasHiddenItems) {
                                    xOffset = 0;
                                    if (cell.right) {
                                        xOffset = cellRect[2] - cellRect[0] - totalR + totalL
                                    } else if (cell.center) {
                                        xOffset = _round((cellRect[2] - cellRect[0] - totalR + totalL) / 2)
                                    }
                                    _each(cell.items, (function(i, item) {
                                        const move = moves[i];
                                        if (move) {
                                            item.item.locate(move[0] + xOffset, move[1])
                                        } else {
                                            item.item.resize(null)
                                        }
                                    }));
                                    cell.rect = [totalL, totalT, totalR, totalB];
                                    cell.items = null
                                }
                                return hasHiddenItems
                            }(cell, forceMode) || hasHiddenItems
                        }
                    }));
                    return hasHiddenItems
                }

                function LayoutControl(widget) {
                    const that = this;
                    that._items = [];
                    that._suspended = 0;
                    that._widget = widget;
                    that._updateLayout = function() {
                        that._update()
                    }
                }
                LayoutControl.prototype = {
                    constructor: LayoutControl,
                    dispose: function() {
                        this._items = this._updateLayout = null
                    },
                    setSize: function(canvas) {
                        this._canvas = canvas;
                        this._update()
                    },
                    suspend: function() {
                        ++this._suspended
                    },
                    resume: function() {
                        if (0 === --this._suspended) {
                            this._update()
                        }
                    },
                    addItem: function(item) {
                        this._items.push(item);
                        item.updateLayout = this._updateLayout
                    },
                    removeItem: function(item) {
                        const index = this._items.indexOf(item);
                        this._items.splice(index, 1);
                        item.updateLayout = null
                    },
                    _update: function() {
                        let canvas;
                        if (0 === this._suspended) {
                            canvas = this._canvas;
                            _each(this._items, (function(_, item) {
                                item.resize(canvas)
                            }));
                            this._widget.resolveItemsDeferred(this._items.filter((el => el.getTemplatesGroups && el.getTemplatesDef)));
                            ! function(canvas, items) {
                                const cells = createCells(canvas, items);
                                if (adjustCellsAndApplyLayout(cells)) {
                                    adjustCellsAndApplyLayout(cells, true)
                                }
                            }({
                                left: canvas.left,
                                top: canvas.top,
                                right: canvas.width + canvas.left,
                                bottom: canvas.height + canvas.top
                            }, this._items)
                        }
                    }
                }
            },
        92746:
            /*!**********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/vector_map/legend.js ***!
              \**********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.LegendsControl = LegendsControl;
                var _extend2 = __webpack_require__( /*! ../../core/utils/extend */ 52576);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 21274);
                var _object = __webpack_require__( /*! ../../core/utils/object */ 22263);
                var _legend = __webpack_require__( /*! ../components/legend */ 67056);
                const _extend = _extend2.extend;
                const _each = _iterator.each;
                const unknownSource = {
                    category: "UNKNOWN",
                    name: "UNKNOWN"
                };
                let Legend = function(parameters) {
                    const that = this;
                    that._params = parameters;
                    that._root = parameters.renderer.g().attr({
                        class: "dxm-legend"
                    }).linkOn(parameters.container, {
                        name: "legend",
                        after: "legend-base"
                    }).enableLinks().linkAppend();
                    parameters.layoutControl.addItem(that);
                    _legend.Legend.call(that, {
                        renderer: parameters.renderer,
                        widget: parameters.widget,
                        group: that._root,
                        backgroundClass: null,
                        itemsGroupClass: null,
                        textField: "text",
                        getFormatObject: function(data) {
                            return data
                        }
                    });
                    that._onDataChanged = function(data) {
                        that._updateData(data)
                    }
                };
                Legend.prototype = _extend((0, _object.clone)(_legend.Legend.prototype), {
                    constructor: Legend,
                    dispose: function() {
                        this._params.layoutControl.removeItem(this);
                        this._unbindData();
                        this._root.linkRemove().linkOff();
                        this._params = this._root = this._onDataChanged = null;
                        return _legend.Legend.prototype.dispose.apply(this, arguments)
                    },
                    resize: function(size) {
                        this._params.notifyDirty();
                        if (null === size) {
                            this.erase()
                        } else {
                            this.draw(size.width, size.height)
                        }
                        this._params.notifyReady()
                    },
                    locate: _legend.Legend.prototype.shift,
                    _updateData: function(data) {
                        this._options.defaultColor = data && data.defaultColor;
                        this.update(data ? function(partition, values, field) {
                            let i;
                            const ii = values.length;
                            const list = [];
                            let item;
                            for (i = 0; i < ii; ++i) {
                                list[i] = item = {
                                    start: partition[i],
                                    end: partition[i + 1],
                                    index: i
                                };
                                item[field] = values[i];
                                item.states = {
                                    normal: {
                                        fill: item.color
                                    }
                                };
                                item.visible = true
                            }
                            return list
                        }(data.partition, data.values, this._dataName) : [], this._options, this._params.themeManager.theme("legend").title);
                        this.updateLayout()
                    },
                    _unbindData: function() {
                        if (this._dataCategory) {
                            this._params.dataExchanger.unbind(this._dataCategory, this._dataName, this._onDataChanged)
                        }
                    },
                    _bindData: function(arg) {
                        this._params.dataExchanger.bind(this._dataCategory = arg.category, this._dataName = arg.name, this._onDataChanged)
                    },
                    setOptions: function(options) {
                        this.update(this._data, options, this._params.themeManager.theme("legend").title);
                        this._unbindData();
                        const source = options.source;
                        this._bindData(source ? {
                            category: source.layer,
                            name: source.grouping
                        } : unknownSource);
                        this.updateLayout();
                        return this
                    }
                });

                function LegendsControl(parameters) {
                    this._params = parameters;
                    this._items = [];
                    parameters.container.virtualLink("legend-base")
                }
                LegendsControl.prototype = {
                    constructor: LegendsControl,
                    dispose: function() {
                        _each(this._items, (function(_, item) {
                            item.dispose()
                        }));
                        this._params = this._items = null
                    },
                    setOptions: function(options) {
                        const optionList = options && options.length ? options : [];
                        const items = this._items;
                        let i;
                        const ii = optionList.length;
                        const params = this._params;
                        const theme = params.themeManager.theme("legend");
                        for (i = items.length; i < ii; ++i) {
                            items[i] = new Legend(params)
                        }
                        for (i = items.length - 1; i >= ii; --i) {
                            items[i].dispose();
                            items.splice(i, 1)
                        }
                        params.layoutControl.suspend();
                        for (i = 0; i < ii; ++i) {
                            items[i].setOptions(_extend(true, {}, theme, optionList[i]))
                        }
                        params.layoutControl.resume()
                    }
                }
            },
        65379:
            /*!*************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/vector_map/map_layer.js ***!
              \*************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.MapLayerCollection = MapLayerCollection;
                exports.getMaxBound = getMaxBound;
                var _common = __webpack_require__( /*! ../../core/utils/common */ 17781);
                var _extend2 = __webpack_require__( /*! ../../core/utils/extend */ 52576);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 21274);
                var _data = __webpack_require__( /*! ../../common/data */ 11036);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 11528);
                var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 87739);
                var _utils = __webpack_require__( /*! ../core/utils */ 28779);
                const _noop = _common.noop;
                const _extend = _extend2.extend;
                const _each = _iterator.each;
                const _concat = Array.prototype.concat;
                const STATE_TO_INDEX = [0, 1, 2, 2];
                const SELECTIONS = {
                    none: null,
                    single: -1,
                    multiple: NaN
                };
                const _isArray = Array.isArray;
                const _Number = Number;
                const _String = String;
                const _abs = Math.abs;
                const _round = Math.round;
                const _min = Math.min;
                const _max = Math.max;
                const _sqrt = Math.sqrt;

                function getMaxBound(arr) {
                    return arr.reduce(((a, c) => c ? [_min(a[0], c[0]), _min(a[1], c[1]), _max(a[2], c[2]), _max(a[3], c[3])] : a), arr[0])
                }

                function getName(opt, index) {
                    return (opt[index] || {}).name
                }

                function EmptySource() {}
                EmptySource.prototype.count = function() {
                    return 0
                };

                function ArraySource(raw) {
                    this.raw = raw
                }
                ArraySource.prototype = {
                    constructor: ArraySource,
                    count: function() {
                        return this.raw.length
                    },
                    item: function(index) {
                        return this.raw[index]
                    },
                    geometry: function(item) {
                        return {
                            coordinates: item.coordinates
                        }
                    },
                    attributes: function(item) {
                        return item.attributes
                    },
                    getBBox: function(index) {
                        return 0 === arguments.length ? void 0 : this.raw[index].bbox
                    }
                };

                function GeoJsonSource(raw) {
                    this.raw = raw
                }
                GeoJsonSource.prototype = {
                    constructor: GeoJsonSource,
                    count: function() {
                        return this.raw.features.length
                    },
                    item: function(index) {
                        return this.raw.features[index]
                    },
                    geometry: function(item) {
                        return item.geometry
                    },
                    attributes: function(item) {
                        return item.properties
                    },
                    getBBox: function(index) {
                        return 0 === arguments.length ? this.raw.bbox : this.raw.features[index].bbox
                    }
                };

                function isGeoJsonObject(obj) {
                    return _isArray(obj.features)
                }

                function setAreaLabelVisibility(label) {
                    label.text.attr({
                        visibility: label.size[0] / label.spaceSize[0] < 1 && label.size[1] / label.spaceSize[1] < 1 ? null : "hidden"
                    })
                }

                function setLineLabelVisibility(label) {
                    label.text.attr({
                        visibility: label.size[0] / label.spaceSize[0] < 1 || label.size[1] / label.spaceSize[1] < 1 ? null : "hidden"
                    })
                }

                function getDataValue(proxy, dataField) {
                    return proxy.attribute(dataField)
                }
                const TYPE_TO_TYPE_MAP = {
                    Point: "marker",
                    MultiPoint: "line",
                    LineString: "line",
                    MultiLineString: "line",
                    Polygon: "area",
                    MultiPolygon: "area"
                };

                function pick(a, b) {
                    return void 0 !== a ? a : b
                }
                const emptyStrategy = {
                    setup: _noop,
                    reset: _noop,
                    arrange: _noop,
                    updateGrouping: _noop,
                    getDefaultColor: _noop
                };
                const strategiesByType = {};
                const strategiesByGeometry = {};
                const strategiesByElementType = {};
                let groupByColor;
                let groupBySize;
                let selectStrategy = function(options, data) {
                    let type = (0, _utils.normalizeEnum)(options.type);
                    let elementType = (0, _utils.normalizeEnum)(options.elementType);
                    let sample;
                    const strategy = _extend({}, emptyStrategy);
                    if (data.count() > 0) {
                        sample = data.geometry(data.item(0));
                        type = strategiesByType[type] ? type : function(sample) {
                            let type = TYPE_TO_TYPE_MAP[sample.type];
                            const coordinates = sample.coordinates;
                            if (!type) {
                                if ("number" === typeof coordinates[0]) {
                                    type = "marker"
                                } else if ("number" === typeof coordinates[0][0]) {
                                    type = "line"
                                } else {
                                    type = "area"
                                }
                            }
                            return type
                        }(sample);
                        _extend(strategy, strategiesByType[type]);
                        strategy.fullType = strategy.type = type;
                        if (strategiesByGeometry[type]) {
                            _extend(strategy, strategiesByGeometry[type](sample))
                        }
                        if (strategiesByElementType[type]) {
                            elementType = strategiesByElementType[type][elementType] ? elementType : strategiesByElementType[type]._default;
                            _extend(strategy, strategiesByElementType[type][elementType]);
                            strategy.elementType = elementType;
                            strategy.fullType += ":" + elementType
                        }
                    }
                    return strategy
                };

                function applyElementState(figure, styles, state, field) {
                    figure[field].attr(styles[field][state])
                }
                strategiesByType.area = {
                    projectLabel: function(coordinates) {
                        let i;
                        const ii = coordinates.length;
                        let centroid;
                        let resultCentroid;
                        let maxArea = 0;
                        for (i = 0; i < ii; ++i) {
                            centroid = calculatePolygonCentroid(coordinates[i]);
                            if (centroid.area > maxArea) {
                                maxArea = centroid.area;
                                resultCentroid = centroid
                            }
                        }
                        return resultCentroid ? [resultCentroid.center, [_sqrt(resultCentroid.area), _sqrt(resultCentroid.area)]] : [
                            [],
                            []
                        ]
                    },
                    transform: transformPointList,
                    transformLabel: function(label, projection, coordinates) {
                        const data = projection.transform(coordinates[0]);
                        label.spaceSize = projection.getSquareSize(coordinates[1]);
                        label.text.attr({
                            translateX: data[0],
                            translateY: data[1]
                        });
                        setAreaLabelVisibility(label)
                    },
                    draw: function(context, figure, data) {
                        figure.root = context.renderer.path([], "area").data(context.dataKey, data)
                    },
                    refresh: _noop,
                    getLabelOffset: function(label) {
                        setAreaLabelVisibility(label);
                        return [0, 0]
                    },
                    getStyles: function(settings) {
                        const color = settings.color || null;
                        const borderColor = settings.borderColor || null;
                        const borderWidth = pick(settings.borderWidth, null);
                        const opacity = pick(settings.opacity, null);
                        return {
                            root: [{
                                class: "dxm-area",
                                stroke: borderColor,
                                "stroke-width": borderWidth,
                                fill: color,
                                opacity: opacity
                            }, {
                                class: "dxm-area dxm-area-hovered",
                                stroke: settings.hoveredBorderColor || borderColor,
                                "stroke-width": pick(settings.hoveredBorderWidth, borderWidth),
                                fill: settings.hoveredColor || color,
                                opacity: pick(settings.hoveredOpacity, opacity)
                            }, {
                                class: "dxm-area dxm-area-selected",
                                stroke: settings.selectedBorderColor || borderColor,
                                "stroke-width": pick(settings.selectedBorderWidth, borderWidth),
                                fill: settings.selectedColor || color,
                                opacity: pick(settings.selectedOpacity, opacity)
                            }]
                        }
                    },
                    setState: function(figure, styles, state) {
                        applyElementState(figure, styles, state, "root")
                    },
                    hasLabelsGroup: true,
                    updateGrouping: function(context) {
                        groupByColor(context)
                    },
                    getDefaultColor: _noop
                };
                strategiesByType.line = {
                    projectLabel: function(coordinates) {
                        let i;
                        const ii = coordinates.length;
                        let maxLength = 0;
                        let data;
                        let resultData;
                        for (i = 0; i < ii; ++i) {
                            data = calculateLineStringData(coordinates[i]);
                            if (data[2] > maxLength) {
                                maxLength = data[2];
                                resultData = data
                            }
                        }
                        return resultData || [
                            [],
                            []
                        ]
                    },
                    transform: transformPointList,
                    transformLabel: function(label, projection, coordinates) {
                        const data = projection.transform(coordinates[0]);
                        label.spaceSize = projection.getSquareSize(coordinates[1]);
                        label.text.attr({
                            translateX: data[0],
                            translateY: data[1]
                        });
                        setLineLabelVisibility(label)
                    },
                    draw: function(context, figure, data) {
                        figure.root = context.renderer.path([], "line").data(context.dataKey, data)
                    },
                    refresh: _noop,
                    getLabelOffset: function(label) {
                        setLineLabelVisibility(label);
                        return [0, 0]
                    },
                    getStyles: function(settings) {
                        const color = settings.color || settings.borderColor || null;
                        const width = pick(settings.borderWidth, null);
                        const opacity = pick(settings.opacity, null);
                        return {
                            root: [{
                                class: "dxm-line",
                                stroke: color,
                                "stroke-width": width,
                                opacity: opacity
                            }, {
                                class: "dxm-line dxm-line-hovered",
                                stroke: settings.hoveredColor || settings.hoveredBorderColor || color,
                                "stroke-width": pick(settings.hoveredBorderWidth, width),
                                opacity: pick(settings.hoveredOpacity, opacity)
                            }, {
                                class: "dxm-line dxm-line-selected",
                                stroke: settings.selectedColor || settings.selectedBorderColor || color,
                                "stroke-width": pick(settings.selectedBorderWidth, width),
                                opacity: pick(settings.selectedOpacity, opacity)
                            }]
                        }
                    },
                    setState: function(figure, styles, state) {
                        applyElementState(figure, styles, state, "root")
                    },
                    hasLabelsGroup: true,
                    updateGrouping: function(context) {
                        groupByColor(context)
                    },
                    getDefaultColor: _noop
                };
                strategiesByType.marker = {
                    project: function(projection, coordinates) {
                        return projection.project(coordinates)
                    },
                    transform: function(content, projection, coordinates) {
                        const data = projection.transform(coordinates);
                        content.root.attr({
                            translateX: data[0],
                            translateY: data[1]
                        })
                    },
                    draw: function(context, figure, data) {
                        figure.root = context.renderer.g();
                        this._draw(context, figure, data)
                    },
                    refresh: _noop,
                    hasLabelsGroup: false,
                    getLabelOffset: function(label, settings) {
                        return [_round((label.size[0] + _max(settings.size || 0, 0)) / 2) + 2, 0]
                    },
                    getStyles: function(settings) {
                        const styles = {
                            root: [{
                                class: "dxm-marker"
                            }, {
                                class: "dxm-marker dxm-marker-hovered"
                            }, {
                                class: "dxm-marker dxm-marker-selected"
                            }]
                        };
                        this._getStyles(styles, settings);
                        return styles
                    },
                    setState: function(figure, styles, state) {
                        applyElementState(figure, styles, state, "root");
                        this._setState(figure, styles, state)
                    },
                    updateGrouping: function(context) {
                        groupByColor(context);
                        groupBySize(context)
                    },
                    getDefaultColor: function(ctx, palette) {
                        return ctx.params.themeManager.getAccentColor(palette)
                    }
                };
                strategiesByGeometry.area = function(sample) {
                    return {
                        project: (projection, coordinates) => coordinates[0] && coordinates[0][0] && coordinates[0][0][0] && "number" === typeof coordinates[0][0][0][0] ? function(projection, coordinates) {
                            const output = [];
                            let i;
                            const ii = output.length = coordinates.length;
                            for (i = 0; i < ii; ++i) {
                                output[i] = projectPolygon(projection, coordinates[i])
                            }
                            return _concat.apply([], output)
                        }(projection, coordinates) : projectPolygon(projection, coordinates)
                    }
                };
                strategiesByGeometry.line = function(sample) {
                    const coordinates = sample.coordinates;
                    return {
                        project: coordinates[0] && coordinates[0][0] && "number" === typeof coordinates[0][0][0] ? projectPolygon : projectLineString
                    }
                };
                strategiesByElementType.marker = {
                    _default: "dot",
                    dot: {
                        setup: function(context) {
                            context.filter = context.renderer.shadowFilter("-40%", "-40%", "180%", "200%", 0, 1, 1, "#000000", .2)
                        },
                        reset: function(context) {
                            context.filter.dispose();
                            context.filter = null
                        },
                        _draw: function(ctx, figure, data) {
                            figure.back = ctx.renderer.circle().sharp().data(ctx.dataKey, data).append(figure.root);
                            figure.dot = ctx.renderer.circle().sharp().data(ctx.dataKey, data).append(figure.root)
                        },
                        refresh: function(ctx, figure, data, proxy, settings) {
                            figure.dot.attr({
                                filter: settings.shadow ? ctx.filter.id : null
                            })
                        },
                        _getStyles: function(styles, style) {
                            const size = style.size > 0 ? _Number(style.size) : 0;
                            const hoveredSize = size;
                            const selectedSize = size + (style.selectedStep > 0 ? _Number(style.selectedStep) : 0);
                            const hoveredBackSize = hoveredSize + (style.backStep > 0 ? _Number(style.backStep) : 0);
                            const selectedBackSize = selectedSize + (style.backStep > 0 ? _Number(style.backStep) : 0);
                            const color = style.color || null;
                            const borderColor = style.borderColor || null;
                            const borderWidth = pick(style.borderWidth, null);
                            const opacity = pick(style.opacity, null);
                            const backColor = style.backColor || null;
                            const backOpacity = pick(style.backOpacity, null);
                            styles.dot = [{
                                r: size / 2,
                                stroke: borderColor,
                                "stroke-width": borderWidth,
                                fill: color,
                                opacity: opacity
                            }, {
                                r: hoveredSize / 2,
                                stroke: style.hoveredBorderColor || borderColor,
                                "stroke-width": pick(style.hoveredBorderWidth, borderWidth),
                                fill: style.hoveredColor || color,
                                opacity: pick(style.hoveredOpacity, opacity)
                            }, {
                                r: selectedSize / 2,
                                stroke: style.selectedBorderColor || borderColor,
                                "stroke-width": pick(style.selectedBorderWidth, borderWidth),
                                fill: style.selectedColor || color,
                                opacity: pick(style.selectedOpacity, opacity)
                            }];
                            styles.back = [{
                                r: size / 2,
                                stroke: "none",
                                "stroke-width": 0,
                                fill: backColor,
                                opacity: backOpacity
                            }, {
                                r: hoveredBackSize / 2,
                                stroke: "none",
                                "stroke-width": 0,
                                fill: backColor,
                                opacity: backOpacity
                            }, {
                                r: selectedBackSize / 2,
                                stroke: "none",
                                "stroke-width": 0,
                                fill: backColor,
                                opacity: backOpacity
                            }]
                        },
                        _setState: function(figure, styles, state) {
                            applyElementState(figure, styles, state, "dot");
                            applyElementState(figure, styles, state, "back")
                        }
                    },
                    bubble: {
                        _draw: function(ctx, figure, data) {
                            figure.bubble = ctx.renderer.circle().sharp().data(ctx.dataKey, data).append(figure.root)
                        },
                        refresh: function(ctx, figure, data, proxy, settings) {
                            figure.bubble.attr({
                                r: settings.size / 2
                            })
                        },
                        _getStyles: function(styles, style) {
                            const color = style.color || null;
                            const borderColor = style.borderColor || null;
                            const borderWidth = pick(style.borderWidth, null);
                            const opacity = pick(style.opacity, null);
                            styles.bubble = [{
                                stroke: borderColor,
                                "stroke-width": borderWidth,
                                fill: color,
                                opacity: opacity
                            }, {
                                stroke: style.hoveredBorderColor || borderColor,
                                "stroke-width": pick(style.hoveredBorderWidth, borderWidth),
                                fill: style.hoveredColor || style.color,
                                opacity: pick(style.hoveredOpacity, opacity)
                            }, {
                                stroke: style.selectedBorderColor || borderColor,
                                "stroke-width": pick(style.selectedBorderWidth, borderWidth),
                                fill: style.selectedColor || style.color,
                                opacity: pick(style.selectedOpacity, opacity)
                            }]
                        },
                        _setState: function(figure, styles, state) {
                            applyElementState(figure, styles, state, "bubble")
                        },
                        arrange: function(context, handles) {
                            const values = [];
                            let i;
                            const ii = values.length = handles.length;
                            const settings = context.settings;
                            const dataField = settings.dataField;
                            const minSize = settings.minSize > 0 ? _Number(settings.minSize) : 0;
                            const maxSize = settings.maxSize > minSize ? _Number(settings.maxSize) : minSize;
                            if (settings.sizeGroups) {
                                return
                            }
                            for (i = 0; i < ii; ++i) {
                                values[i] = _max(getDataValue(handles[i].proxy, dataField) || 0, 0)
                            }
                            const minValue = _min.apply(null, values);
                            const maxValue = _max.apply(null, values);
                            const deltaValue = maxValue - minValue || 1;
                            const deltaSize = maxSize - minSize;
                            for (i = 0; i < ii; ++i) {
                                handles[i]._settings.size = minSize + deltaSize * (values[i] - minValue) / deltaValue
                            }
                        },
                        updateGrouping: function(context) {
                            const dataField = context.settings.dataField;
                            strategiesByType.marker.updateGrouping(context);
                            groupBySize(context, (function(proxy) {
                                return getDataValue(proxy, dataField)
                            }))
                        }
                    },
                    pie: {
                        _draw: function(ctx, figure, data) {
                            figure.pie = ctx.renderer.g().append(figure.root);
                            figure.border = ctx.renderer.circle().sharp().data(ctx.dataKey, data).append(figure.root)
                        },
                        refresh: function(ctx, figure, data, proxy, settings) {
                            const values = getDataValue(proxy, ctx.settings.dataField) || [];
                            const colors = settings._colors;
                            let sum = 0;
                            const pie = figure.pie;
                            const renderer = ctx.renderer;
                            const dataKey = ctx.dataKey;
                            const r = (settings.size > 0 ? _Number(settings.size) : 0) / 2;
                            let start = 90;
                            let end = start;
                            let zeroSum = false;
                            sum = values.reduce((function(total, item) {
                                return total + (item || 0)
                            }), 0);
                            if (0 === sum) {
                                zeroSum = true;
                                sum = 360 / values.length
                            }
                            values.forEach((function(item, i) {
                                start = end;
                                end += zeroSum ? sum : (item || 0) / sum * 360;
                                renderer.arc(0, 0, 0, r, start, end).attr({
                                    "stroke-linejoin": "round",
                                    fill: colors[i]
                                }).data(dataKey, data).append(pie)
                            }));
                            figure.border.attr({
                                r: r
                            })
                        },
                        _getStyles: function(styles, style) {
                            const opacity = pick(style.opacity, null);
                            const borderColor = style.borderColor || null;
                            const borderWidth = pick(style.borderWidth, null);
                            styles.pie = [{
                                opacity: opacity
                            }, {
                                opacity: pick(style.hoveredOpacity, opacity)
                            }, {
                                opacity: pick(style.selectedOpacity, opacity)
                            }];
                            styles.border = [{
                                stroke: borderColor,
                                "stroke-width": borderWidth
                            }, {
                                stroke: style.hoveredBorderColor || borderColor,
                                "stroke-width": pick(style.hoveredBorderWidth, borderWidth)
                            }, {
                                stroke: style.selectedBorderColor || borderColor,
                                "stroke-width": pick(style.selectedBorderWidth, borderWidth)
                            }]
                        },
                        _setState: function(figure, styles, state) {
                            applyElementState(figure, styles, state, "pie");
                            applyElementState(figure, styles, state, "border")
                        },
                        arrange: function(context, handles) {
                            let i;
                            const ii = handles.length;
                            const dataField = context.settings.dataField;
                            let values;
                            let count = 0;
                            let palette;
                            for (i = 0; i < ii; ++i) {
                                values = getDataValue(handles[i].proxy, dataField);
                                if (values && values.length > count) {
                                    count = values.length
                                }
                            }
                            if (count > 0) {
                                palette = context.params.themeManager.createPalette(context.settings.palette, {
                                    useHighlight: true,
                                    extensionMode: "alternate"
                                });
                                values = palette.generateColors(count);
                                context.settings._colors = values;
                                context.grouping.color = {
                                    callback: _noop,
                                    field: "",
                                    partition: [],
                                    values: []
                                };
                                context.params.dataExchanger.set(context.name, "color", {
                                    partition: [],
                                    values: values
                                })
                            }
                        }
                    },
                    image: {
                        _draw: function(ctx, figure, data) {
                            figure.image = ctx.renderer.image(null, null, null, null, null, "center").attr({
                                "pointer-events": "visible"
                            }).data(ctx.dataKey, data).append(figure.root)
                        },
                        refresh: function(ctx, figure, data, proxy) {
                            figure.image.attr({
                                href: getDataValue(proxy, ctx.settings.dataField)
                            })
                        },
                        _getStyles: function(styles, style) {
                            const size = style.size > 0 ? _Number(style.size) : 0;
                            const hoveredSize = size + (style.hoveredStep > 0 ? _Number(style.hoveredStep) : 0);
                            const selectedSize = size + (style.selectedStep > 0 ? _Number(style.selectedStep) : 0);
                            const opacity = pick(style.opacity, null);
                            styles.image = [{
                                x: -size / 2,
                                y: -size / 2,
                                width: size,
                                height: size,
                                opacity: opacity
                            }, {
                                x: -hoveredSize / 2,
                                y: -hoveredSize / 2,
                                width: hoveredSize,
                                height: hoveredSize,
                                opacity: pick(style.hoveredOpacity, opacity)
                            }, {
                                x: -selectedSize / 2,
                                y: -selectedSize / 2,
                                width: selectedSize,
                                height: selectedSize,
                                opacity: pick(style.selectedOpacity, opacity)
                            }]
                        },
                        _setState: function(figure, styles, state) {
                            applyElementState(figure, styles, state, "image")
                        }
                    }
                };

                function projectPointList(projection, coordinates) {
                    const output = [];
                    let i;
                    const ii = output.length = coordinates.length;
                    for (i = 0; i < ii; ++i) {
                        output[i] = projection.project(coordinates[i])
                    }
                    return output
                }

                function projectLineString(projection, coordinates) {
                    return [projectPointList(projection, coordinates)]
                }

                function projectPolygon(projection, coordinates) {
                    const output = [];
                    let i;
                    const ii = output.length = coordinates.length;
                    for (i = 0; i < ii; ++i) {
                        output[i] = projectPointList(projection, coordinates[i])
                    }
                    return output
                }

                function transformList(projection, coordinates) {
                    const output = [];
                    let i;
                    const ii = coordinates.length;
                    let item;
                    let k = 0;
                    output.length = 2 * ii;
                    for (i = 0; i < ii; ++i) {
                        item = projection.transform(coordinates[i]);
                        output[k++] = item[0];
                        output[k++] = item[1]
                    }
                    return output
                }

                function transformPointList(content, projection, coordinates) {
                    const output = [];
                    let i;
                    const ii = output.length = coordinates.length;
                    for (i = 0; i < ii; ++i) {
                        output[i] = transformList(projection, coordinates[i])
                    }
                    content.root.attr({
                        points: output
                    })
                }

                function getItemSettings(context, proxy, settings) {
                    const result = combineSettings(context.settings, settings);
                    ! function(grouping, proxy, settings) {
                        _each(grouping, (function(name, data) {
                            const index = findGroupingIndex(data.callback(proxy, data.field), data.partition);
                            if (index >= 0) {
                                settings[name] = data.values[index]
                            }
                        }))
                    }(context.grouping, proxy, result);
                    if (void 0 === settings.color && settings.paletteIndex >= 0) {
                        result.color = result._colors[settings.paletteIndex]
                    }
                    return result
                }

                function findGroupingIndex(value, partition) {
                    let start = 0;
                    let end = partition.length - 1;
                    let index = -1;
                    let middle;
                    if (partition[start] <= value && value <= partition[end]) {
                        if (value === partition[end]) {
                            index = end - 1
                        } else {
                            while (end - start > 1) {
                                middle = start + end >> 1;
                                if (value < partition[middle]) {
                                    end = middle
                                } else {
                                    start = middle
                                }
                            }
                            index = start
                        }
                    }
                    return index
                }

                function raiseChanged(context, handle, state, name) {
                    context.params.eventTrigger(name, {
                        target: handle.proxy,
                        state: state
                    })
                }

                function combineSettings(common, partial) {
                    const obj = _extend({}, common, partial);
                    obj.label = _extend({}, common.label, obj.label);
                    obj.label.font = _extend({}, common.label.font, obj.label.font);
                    return obj
                }

                function valueCallback(proxy, dataField) {
                    return proxy.attribute(dataField)
                }
                let performGrouping = function(context, partition, settingField, dataField, valuesCallback) {
                    let values;
                    if (dataField && partition && partition.length > 1) {
                        values = valuesCallback(partition.length - 1);
                        context.grouping[settingField] = {
                            callback: (0, _type.isFunction)(dataField) ? dataField : valueCallback,
                            field: dataField,
                            partition: partition,
                            values: values
                        };
                        context.params.dataExchanger.set(context.name, settingField, {
                            partition: partition,
                            values: values,
                            defaultColor: context.settings.color
                        })
                    }
                };

                function dropGrouping(context) {
                    const name = context.name;
                    const dataExchanger = context.params.dataExchanger;
                    _each(context.grouping, (function(field) {
                        dataExchanger.set(name, field, null)
                    }));
                    context.grouping = {}
                }
                groupByColor = function(context) {
                    performGrouping(context, context.settings.colorGroups, "color", context.settings.colorGroupingField, (function(count) {
                        const _palette = context.params.themeManager.createDiscretePalette(context.settings.palette, count);
                        let i;
                        const list = [];
                        for (i = 0; i < count; ++i) {
                            list.push(_palette.getColor(i))
                        }
                        return list
                    }))
                };
                groupBySize = function(context, valueCallback) {
                    const settings = context.settings;
                    performGrouping(context, settings.sizeGroups, "size", valueCallback || settings.sizeGroupingField, (function(count) {
                        const minSize = settings.minSize > 0 ? _Number(settings.minSize) : 0;
                        const maxSize = settings.maxSize >= minSize ? _Number(settings.maxSize) : 0;
                        let i = 0;
                        const sizes = [];
                        if (count > 1) {
                            for (i = 0; i < count; ++i) {
                                sizes.push((minSize * (count - i - 1) + maxSize * i) / (count - 1))
                            }
                        } else if (1 === count) {
                            sizes.push((minSize + maxSize) / 2)
                        }
                        return sizes
                    }))
                };

                function setFlag(flags, flag, state) {
                    if (state) {
                        flags |= flag
                    } else {
                        flags &= ~flag
                    }
                    return flags
                }

                function hasFlag(flags, flag) {
                    return !!(flags & flag)
                }
                let MapLayerElement;
                let MapLayer = function(params, container, name, index) {
                    this._params = params;
                    this._onProjection();
                    this.proxy = function(layer, name, index) {
                        const proxy = {
                            index: index,
                            name: name,
                            getElements: function() {
                                return layer.getProxies()
                            },
                            clearSelection: function(_noEvent) {
                                layer.clearSelection(_noEvent);
                                return proxy
                            },
                            getDataSource: function() {
                                return layer.getDataSource()
                            },
                            getBounds: () => layer.getBounds()
                        };
                        return proxy
                    }(this, name, index);
                    this._context = {
                        name: name,
                        layer: this.proxy,
                        renderer: params.renderer,
                        projection: params.projection,
                        params: params,
                        dataKey: params.dataKey,
                        str: emptyStrategy,
                        hover: false,
                        selection: null,
                        grouping: {},
                        root: params.renderer.g().attr({
                            class: "dxm-layer"
                        }).linkOn(container, name).linkAppend()
                    };
                    this._container = container;
                    this._options = {};
                    this._handles = [];
                    this._data = new EmptySource;
                    this._dataSourceLoaded = null
                };
                MapLayer.prototype = _extend({
                    constructor: MapLayer,
                    getDataReadyCallback() {
                        return this._dataSourceLoaded
                    },
                    _onProjection: function() {
                        const that = this;
                        that._removeHandlers = that._params.projection.on({
                            engine: function() {
                                that._project()
                            },
                            screen: function() {
                                that._transform()
                            },
                            center: function() {
                                that._transformCore()
                            },
                            zoom: function() {
                                that._transform()
                            }
                        })
                    },
                    getData() {
                        return this._data
                    },
                    _dataSourceLoadErrorHandler: function() {
                        this._dataSourceChangedHandler()
                    },
                    _dataSourceChangedHandler: function() {
                        this._data = function(source) {
                            let sourceType;
                            if (source) {
                                if (isGeoJsonObject(source)) {
                                    sourceType = GeoJsonSource
                                } else if (1 === source.length && source[0] && isGeoJsonObject(source[0])) {
                                    sourceType = GeoJsonSource;
                                    source = source[0]
                                } else if (_isArray(source)) {
                                    sourceType = ArraySource
                                }
                            }
                            sourceType = sourceType || EmptySource;
                            return new sourceType(source)
                        }(this._dataSource && this._dataSource.items());
                        this._update(true)
                    },
                    _dataSourceOptions: function() {
                        return {
                            paginate: false
                        }
                    },
                    _getSpecificDataSourceOption: function() {
                        return this._specificDataSourceOption
                    },
                    _normalizeDataSource: function(dataSource) {
                        const store = dataSource.store();
                        if ("raw" === store._loadMode) {
                            store._loadMode = void 0
                        }
                        return dataSource
                    },
                    _offProjection: function() {
                        this._removeHandlers();
                        this._removeHandlers = null
                    },
                    dispose: function() {
                        this._disposeDataSource();
                        this._destroyHandles();
                        dropGrouping(this._context);
                        this._context.root.linkRemove().linkOff();
                        this._context.labelRoot && this._context.labelRoot.linkRemove().linkOff();
                        this._context.str.reset(this._context);
                        this._offProjection();
                        this._params = this._container = this._context = this.proxy = null;
                        return this
                    },
                    setOptions: function(options) {
                        const that = this;
                        options = that._options = options || {};
                        that._dataSourceLoaded = new _deferred.Deferred;
                        if ("dataSource" in options && options.dataSource !== that._options_dataSource) {
                            that._options_dataSource = options.dataSource;
                            that._params.notifyDirty();
                            that._specificDataSourceOption = (option = options.dataSource, option ? isGeoJsonObject(option) ? [option] : option : []);
                            that._refreshDataSource()
                        } else if (that._data.count() > 0) {
                            that._params.notifyDirty();
                            that._update(void 0 !== options.type && options.type !== that._context.str.type || void 0 !== options.elementType && options.elementType !== that._context.str.elementType)
                        }
                        var option;
                        that._transformCore()
                    },
                    _update: function(isContextChanged) {
                        const that = this;
                        const context = that._context;
                        if (isContextChanged) {
                            context.str.reset(context);
                            context.root.clear();
                            context.labelRoot && context.labelRoot.clear();
                            that._params.tracker.reset();
                            that._destroyHandles();
                            context.str = selectStrategy(that._options, that._data);
                            context.str.setup(context);
                            that.proxy.type = context.str.type;
                            that.proxy.elementType = context.str.elementType
                        }
                        context.settings = function(context, options) {
                            const themeManager = context.params.themeManager;
                            const strategy = context.str;
                            const settings = combineSettings(_extend({
                                label: {},
                                color: strategy.getDefaultColor(context, options.palette)
                            }, themeManager.theme("layer:" + strategy.fullType)), options);
                            let colors;
                            let i;
                            let palette;
                            if (settings.paletteSize > 0) {
                                palette = themeManager.createDiscretePalette(settings.palette, settings.paletteSize);
                                for (i = 0, colors = []; i < settings.paletteSize; ++i) {
                                    colors.push(palette.getColor(i))
                                }
                                settings._colors = colors
                            }
                            return settings
                        }(context, that._options);
                        context.hasSeparateLabel = !!(context.settings.label.enabled && context.str.hasLabelsGroup);
                        context.hover = !!(0, _utils.parseScalar)(context.settings.hoverEnabled, true);
                        if (context.selection) {
                            _each(context.selection.state, (function(_, handle) {
                                handle && handle.resetSelected()
                            }))
                        }
                        context.selection = function(selectionMode) {
                            let selection = (0, _utils.normalizeEnum)(selectionMode);
                            selection = selection in SELECTIONS ? SELECTIONS[selection] : SELECTIONS.single;
                            if (null !== selection) {
                                selection = {
                                    state: {},
                                    single: selection
                                }
                            }
                            return selection
                        }(context.settings.selectionMode);
                        if (context.hasSeparateLabel) {
                            if (!context.labelRoot) {
                                context.labelRoot = context.renderer.g().attr({
                                    class: "dxm-layer-labels"
                                }).linkOn(that._container, {
                                    name: context.name + "-labels",
                                    after: context.name
                                }).linkAppend();
                                that._transformCore()
                            }
                        } else if (context.labelRoot) {
                            context.labelRoot.linkRemove().linkOff();
                            context.labelRoot = null
                        }
                        if (isContextChanged) {
                            that._createHandles()
                        }
                        dropGrouping(context);
                        context.str.arrange(context, that._handles);
                        context.str.updateGrouping(context);
                        that._updateHandles();
                        that._params.notifyReady();
                        if (that._dataSourceLoaded) {
                            that._dataSourceLoaded.resolve();
                            that._dataSourceLoaded = null
                        } else {
                            that._params.dataReady()
                        }
                    },
                    getBounds() {
                        return getMaxBound(this._handles.map((_ref => {
                            let {
                                proxy: proxy
                            } = _ref;
                            return proxy.coordinates().map((coords => {
                                if (!_isArray(coords)) {
                                    return
                                }
                                const coordsToBoundsSearch = _isArray(coords[0][0]) ? coords.reduce(((ac, val) => ac.concat(val)), []) : coords;
                                const initValue = coordsToBoundsSearch[0];
                                return coordsToBoundsSearch.reduce(((min, c) => [_min(min[0], c[0]), _min(min[1], c[1]), _max(min[2], c[0]), _max(min[3], c[1])]), [initValue[0], initValue[1], initValue[0], initValue[1]])
                            }))
                        })).map(getMaxBound))
                    },
                    _destroyHandles() {
                        this._handles.forEach((h => h.dispose()));
                        if (this._context.selection) {
                            this._context.selection.state = {}
                        }
                        this._handles = []
                    },
                    _createHandles: function() {
                        const handles = this._handles = [];
                        const data = this._data;
                        let i;
                        const ii = handles.length = data.count();
                        const context = this._context;
                        const geometry = data.geometry;
                        const attributes = data.attributes;
                        let handle;
                        let dataItem;
                        for (i = 0; i < ii; ++i) {
                            dataItem = data.item(i);
                            handles[i] = new MapLayerElement(context, i, geometry(dataItem), attributes(dataItem))
                        }(0, _type.isFunction)(this._options.customize) && (proxies = this.getProxies(), callback = this._options.customize, widget = this._params.widget, void callback.call(widget, proxies));
                        var proxies, callback, widget;
                        for (i = 0; i < ii; ++i) {
                            handle = handles[i];
                            handle.project();
                            handle.draw();
                            handle.transform()
                        }
                        if (context.selection) {
                            _each(context.selection.state, (function(_, handle) {
                                handle && handle.restoreSelected()
                            }))
                        }
                    },
                    _updateHandles: function() {
                        const handles = this._handles;
                        let i;
                        const ii = handles.length;
                        for (i = 0; i < ii; ++i) {
                            handles[i].refresh()
                        }
                        if (this._context.settings.label.enabled) {
                            for (i = 0; i < ii; ++i) {
                                handles[i].measureLabel()
                            }
                            for (i = 0; i < ii; ++i) {
                                handles[i].adjustLabel()
                            }
                        }
                    },
                    _transformCore: function() {
                        const transform = this._params.projection.getTransform();
                        this._context.root.attr(transform);
                        this._context.labelRoot && this._context.labelRoot.attr(transform)
                    },
                    _project: function() {
                        const handles = this._handles;
                        let i;
                        const ii = handles.length;
                        for (i = 0; i < ii; ++i) {
                            handles[i].project()
                        }
                    },
                    _transform: function() {
                        const handles = this._handles;
                        let i;
                        const ii = handles.length;
                        this._transformCore();
                        for (i = 0; i < ii; ++i) {
                            handles[i].transform()
                        }
                    },
                    getProxies() {
                        return this._handles.map((p => p.proxy))
                    },
                    getProxy: function(index) {
                        return this._handles[index].proxy
                    },
                    raiseClick: function(i, dxEvent) {
                        this._params.eventTrigger("click", {
                            target: this._handles[i].proxy,
                            event: dxEvent
                        })
                    },
                    hoverItem: function(i, state) {
                        this._handles[i].setHovered(state)
                    },
                    selectItem: function(i, state, _noEvent) {
                        this._handles[i].setSelected(state, _noEvent)
                    },
                    clearSelection: function() {
                        const selection = this._context.selection;
                        if (selection) {
                            _each(selection.state, (function(_, handle) {
                                handle && handle.setSelected(false)
                            }));
                            selection.state = {}
                        }
                    }
                }, _data.DataHelperMixin);
                MapLayerElement = function(context, index, geometry, attributes) {
                    const proxy = this.proxy = function(handle, coords, attrs) {
                        const proxy = {
                            coordinates: function() {
                                return coords
                            },
                            attribute: function(name, value) {
                                if (arguments.length > 1) {
                                    attrs[name] = value;
                                    return proxy
                                } else {
                                    return arguments.length > 0 ? attrs[name] : attrs
                                }
                            },
                            selected: function(state, _noEvent) {
                                if (arguments.length > 0) {
                                    handle.setSelected(state, _noEvent);
                                    return proxy
                                } else {
                                    return handle.isSelected()
                                }
                            },
                            applySettings: function(settings) {
                                handle.update(settings);
                                return proxy
                            }
                        };
                        return proxy
                    }(this, geometry.coordinates, _extend({}, attributes));
                    this._ctx = context;
                    this._index = index;
                    this._fig = this._label = null;
                    this._state = 0;
                    this._coordinates = geometry.coordinates;
                    this._settings = {
                        label: {}
                    };
                    proxy.index = index;
                    proxy.layer = context.layer;
                    this._data = {
                        name: context.name,
                        index: index
                    }
                };
                MapLayerElement.prototype = {
                    constructor: MapLayerElement,
                    dispose: function() {
                        this._ctx = this.proxy = this._settings = this._fig = this._label = this.data = null;
                        return this
                    },
                    project: function() {
                        const context = this._ctx;
                        this._projection = context.str.project(context.projection, this._coordinates);
                        if (context.hasSeparateLabel && this._label) {
                            this._projectLabel()
                        }
                    },
                    _projectLabel: function() {
                        this._labelProjection = this._ctx.str.projectLabel(this._projection)
                    },
                    draw: function() {
                        const context = this._ctx;
                        context.str.draw(context, this._fig = {}, this._data);
                        this._fig.root.append(context.root)
                    },
                    transform: function() {
                        const that = this;
                        const context = that._ctx;
                        context.str.transform(that._fig, context.projection, that._projection);
                        if (context.hasSeparateLabel && that._label) {
                            that._transformLabel()
                        }
                    },
                    _transformLabel: function() {
                        this._ctx.str.transformLabel(this._label, this._ctx.projection, this._labelProjection)
                    },
                    refresh: function() {
                        const strategy = this._ctx.str;
                        const settings = getItemSettings(this._ctx, this.proxy, this._settings);
                        this._styles = strategy.getStyles(settings);
                        strategy.refresh(this._ctx, this._fig, this._data, this.proxy, settings);
                        this._refreshLabel(settings);
                        this._setState()
                    },
                    _refreshLabel: function(settings) {
                        const that = this;
                        const context = that._ctx;
                        const labelSettings = settings.label;
                        let label = that._label;
                        if (context.settings.label.enabled) {
                            if (!label) {
                                label = that._label = {
                                    root: context.labelRoot || that._fig.root,
                                    text: context.renderer.text().attr({
                                        class: "dxm-label"
                                    }),
                                    size: [0, 0]
                                };
                                if (context.hasSeparateLabel) {
                                    that._projectLabel();
                                    that._transformLabel()
                                }
                            }
                            label.value = _String(that.proxy.text || that.proxy.attribute(labelSettings.dataField) || "");
                            if (label.value) {
                                label.text.attr({
                                    text: label.value,
                                    x: 0,
                                    y: 0
                                }).css((0, _utils.patchFontOptions)(labelSettings.font)).attr({
                                    align: "center",
                                    stroke: labelSettings.stroke,
                                    "stroke-width": labelSettings["stroke-width"],
                                    "stroke-opacity": labelSettings["stroke-opacity"]
                                }).data(context.dataKey, that._data).append(label.root);
                                label.settings = settings
                            }
                        } else if (label) {
                            label.text.remove();
                            that._label = null
                        }
                    },
                    measureLabel: function() {
                        const label = this._label;
                        let bBox;
                        if (label.value) {
                            bBox = label.text.getBBox();
                            label.size = [bBox.width, bBox.height, -bBox.y - bBox.height / 2]
                        }
                    },
                    adjustLabel: function() {
                        const label = this._label;
                        let offset;
                        if (label.value) {
                            offset = this._ctx.str.getLabelOffset(label, label.settings);
                            label.settings = null;
                            label.text.attr({
                                x: offset[0],
                                y: offset[1] + label.size[2]
                            })
                        }
                    },
                    update: function(settings) {
                        const that = this;
                        that._settings = combineSettings(that._settings, settings);
                        if (that._fig) {
                            that.refresh();
                            if (that._label && that._label.value) {
                                that.measureLabel();
                                that.adjustLabel()
                            }
                        }
                    },
                    _setState: function() {
                        this._ctx.str.setState(this._fig, this._styles, STATE_TO_INDEX[this._state])
                    },
                    _setForeground: function() {
                        const root = this._fig.root;
                        this._state ? root.toForeground() : root.toBackground()
                    },
                    setHovered: function(state) {
                        const that = this;
                        const currentState = hasFlag(that._state, 1);
                        const newState = !!state;
                        if (that._ctx.hover && currentState !== newState) {
                            that._state = setFlag(that._state, 1, newState);
                            that._setState();
                            that._setForeground();
                            raiseChanged(that._ctx, that, newState, "hoverChanged")
                        }
                        return that
                    },
                    setSelected: function(state, _noEvent) {
                        const that = this;
                        const currentState = hasFlag(that._state, 2);
                        const newState = !!state;
                        const selection = that._ctx.selection;
                        let tmp;
                        if (selection && currentState !== newState) {
                            that._state = setFlag(that._state, 2, newState);
                            tmp = selection.state[selection.single];
                            selection.state[selection.single] = null;
                            if (tmp) {
                                tmp.setSelected(false)
                            }
                            selection.state[selection.single || that._index] = state ? that : null;
                            if (that._fig) {
                                that._setState();
                                that._setForeground();
                                if (!_noEvent) {
                                    raiseChanged(that._ctx, that, newState, "selectionChanged")
                                }
                            }
                        }
                    },
                    isSelected: function() {
                        return hasFlag(this._state, 2)
                    },
                    resetSelected: function() {
                        this._state = setFlag(this._state, 2, false)
                    },
                    restoreSelected: function() {
                        this._fig.root.toForeground()
                    }
                };

                function calculatePolygonCentroid(coordinates) {
                    let i;
                    const length = coordinates.length;
                    let v1;
                    let v2 = coordinates[length - 1];
                    let cross;
                    let cx = 0;
                    let cy = 0;
                    let area = 0;
                    let minX = 1 / 0;
                    let maxX = -1 / 0;
                    let minY = 1 / 0;
                    let maxY = -1 / 0;
                    for (i = 0; i < length; ++i) {
                        v1 = v2;
                        v2 = coordinates[i];
                        cross = v1[0] * v2[1] - v2[0] * v1[1];
                        area += cross;
                        cx += (v1[0] + v2[0]) * cross;
                        cy += (v1[1] + v2[1]) * cross;
                        minX = _min(minX, v2[0]);
                        maxX = _max(maxX, v2[0]);
                        minY = _min(minY, v2[1]);
                        maxY = _max(maxY, v2[1])
                    }
                    return {
                        area: _abs(area) / 2,
                        center: [2 * cx / 3 / area - (minX + maxX) / 2, 2 * cy / 3 / area - (minY + maxY) / 2]
                    }
                }

                function calculateLineStringData(coordinates) {
                    let i;
                    const ii = coordinates.length;
                    let v1;
                    let v2 = coordinates[0] || [];
                    let totalLength = 0;
                    const items = [0];
                    let min0 = v2[0];
                    let max0 = v2[0];
                    let min1 = v2[1];
                    let max1 = v2[1];
                    for (i = 1; i < ii; ++i) {
                        v1 = v2;
                        v2 = coordinates[i];
                        totalLength += _sqrt((v1[0] - v2[0]) * (v1[0] - v2[0]) + (v1[1] - v2[1]) * (v1[1] - v2[1]));
                        items[i] = totalLength;
                        min0 = _min(min0, v2[0]);
                        max0 = _max(max0, v2[0]);
                        min1 = _min(min1, v2[1]);
                        max1 = _max(max1, v2[1])
                    }
                    i = findGroupingIndex(totalLength / 2, items);
                    v1 = coordinates[i];
                    v2 = coordinates[i + 1];
                    const t = (totalLength / 2 - items[i]) / (items[i + 1] - items[i]);
                    return ii ? [
                        [v1[0] * (1 - t) + v2[0] * t, v1[1] * (1 - t) + v2[1] * t],
                        [max0 - min0, max1 - min1], totalLength
                    ] : []
                }

                function MapLayerCollection(params) {
                    const renderer = params.renderer;
                    this._params = params;
                    this._layers = [];
                    this._layerByName = {};
                    this._rect = [0, 0, 0, 0];
                    this._clip = renderer.clipRect();
                    this._background = renderer.rect().attr({
                        class: "dxm-background"
                    }).data(params.dataKey, {
                        name: "background"
                    }).append(renderer.root);
                    this._container = renderer.g().attr({
                        class: "dxm-layers",
                        "clip-path": this._clip.id
                    }).append(renderer.root).enableLinks();
                    this._subscribeToTracker(params.tracker, renderer, params.eventTrigger);
                    this._dataReady = params.dataReady
                }
                MapLayerCollection.prototype = {
                    constructor: MapLayerCollection,
                    dispose: function() {
                        this._clip.dispose();
                        this._layers.forEach((l => l.dispose()));
                        this._offTracker();
                        this._params = this._offTracker = this._layers = this._layerByName = this._clip = this._background = this._container = null
                    },
                    _subscribeToTracker: function(tracker, renderer, eventTrigger) {
                        const that = this;
                        that._offTracker = tracker.on({
                            click: function(arg) {
                                const offset = renderer.getRootOffset();
                                const layer = that.byName(arg.data.name);
                                arg.$event.x = arg.x - offset.left;
                                arg.$event.y = arg.y - offset.top;
                                if (layer) {
                                    layer.raiseClick(arg.data.index, arg.$event)
                                } else if ("background" === arg.data.name) {
                                    eventTrigger("click", {
                                        event: arg.$event
                                    })
                                }
                            },
                            "hover-on": function(arg) {
                                const layer = that.byName(arg.data.name);
                                if (layer) {
                                    layer.hoverItem(arg.data.index, true)
                                }
                            },
                            "hover-off": function(arg) {
                                const layer = that.byName(arg.data.name);
                                if (layer) {
                                    layer.hoverItem(arg.data.index, false)
                                }
                            }
                        })
                    },
                    setOptions(options) {
                        const that = this;
                        const optionList = options ? _isArray(options) ? options : [options] : [];
                        let layers = that._layers;
                        let readyCallbacks = [];
                        const needToCreateLayers = optionList.length !== layers.length || layers.some(((l, i) => {
                            const name = getName(optionList, i);
                            return (0, _type.isDefined)(name) && name !== l.proxy.name
                        }));
                        if (needToCreateLayers) {
                            that._params.tracker.reset();
                            that._layers.forEach((l => l.dispose()));
                            const layerByName = that._layerByName = {};
                            that._layers = layers = [];
                            for (let i = 0, ii = optionList.length; i < ii; ++i) {
                                const name = getName(optionList, i) || "map-layer-" + i;
                                const layer = layers[i] = new MapLayer(that._params, that._container, name, i);
                                layerByName[name] = layer
                            }
                        }
                        layers.forEach(((l, i) => {
                            l.setOptions(optionList[i])
                        }));
                        readyCallbacks = layers.map((l => l.getDataReadyCallback()));
                        readyCallbacks.length && _deferred.when.apply(void 0, readyCallbacks).done(that._dataReady)
                    },
                    _updateClip: function() {
                        const rect = this._rect;
                        const bw = this._borderWidth;
                        this._clip.attr({
                            x: rect[0] + bw,
                            y: rect[1] + bw,
                            width: _max(rect[2] - 2 * bw, 0),
                            height: _max(rect[3] - 2 * bw, 0)
                        })
                    },
                    setBackgroundOptions: function(options) {
                        this._background.attr({
                            stroke: options.borderColor,
                            "stroke-width": options.borderWidth,
                            fill: options.color
                        });
                        this._borderWidth = _max(options.borderWidth, 0);
                        this._updateClip()
                    },
                    setRect: function(rect) {
                        this._rect = rect;
                        this._background.attr({
                            x: rect[0],
                            y: rect[1],
                            width: rect[2],
                            height: rect[3]
                        });
                        this._updateClip()
                    },
                    byIndex: function(index) {
                        return this._layers[index]
                    },
                    byName: function(name) {
                        return this._layerByName[name]
                    },
                    items: function() {
                        return this._layers
                    }
                }
            },
        99094:
            /*!**************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/vector_map/projection.js ***!
              \**************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "projection", {
                    enumerable: true,
                    get: function() {
                        return _projection.projection
                    }
                });
                var _projection = __webpack_require__( /*! ./projection.main */ 2875);
                const _min = Math.min;
                const _max = Math.max;
                const _sin = Math.sin;
                const _asin = Math.asin;
                const _tan = Math.tan;
                const _atan = Math.atan;
                const _exp = Math.exp;
                const _log = Math.log;
                const PI = Math.PI;
                const PI_DIV_4 = PI / 4;
                const RADIANS = PI / 180;
                const MERCATOR_LAT_BOUND = (2 * _atan(_exp(PI)) - PI / 2) / RADIANS;
                const MILLER_LAT_BOUND = (2.5 * _atan(_exp(.8 * PI)) - .625 * PI) / RADIANS;

                function clamp(value, threshold) {
                    return _max(_min(value, +threshold), -threshold)
                }
                _projection.projection.add("mercator", (0, _projection.projection)({
                    aspectRatio: 1,
                    to: function(coordinates) {
                        return [coordinates[0] / 180, _log(_tan(PI_DIV_4 + clamp(coordinates[1], MERCATOR_LAT_BOUND) * RADIANS / 2)) / PI]
                    },
                    from: function(coordinates) {
                        return [180 * coordinates[0], (2 * _atan(_exp(coordinates[1] * PI)) - PI / 2) / RADIANS]
                    }
                }));
                _projection.projection.add("equirectangular", (0, _projection.projection)({
                    aspectRatio: 2,
                    to: function(coordinates) {
                        return [coordinates[0] / 180, coordinates[1] / 90]
                    },
                    from: function(coordinates) {
                        return [180 * coordinates[0], 90 * coordinates[1]]
                    }
                }));
                _projection.projection.add("lambert", (0, _projection.projection)({
                    aspectRatio: 2,
                    to: function(coordinates) {
                        return [coordinates[0] / 180, _sin(clamp(coordinates[1], 90) * RADIANS)]
                    },
                    from: function(coordinates) {
                        return [180 * coordinates[0], _asin(clamp(coordinates[1], 1)) / RADIANS]
                    }
                }));
                _projection.projection.add("miller", (0, _projection.projection)({
                    aspectRatio: 1,
                    to: function(coordinates) {
                        return [coordinates[0] / 180, 1.25 * _log(_tan(PI_DIV_4 + clamp(coordinates[1], MILLER_LAT_BOUND) * RADIANS * .4)) / PI]
                    },
                    from: function(coordinates) {
                        return [180 * coordinates[0], (2.5 * _atan(_exp(.8 * coordinates[1] * PI)) - .625 * PI) / RADIANS]
                    }
                }))
            },
        2875:
            /*!*******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/vector_map/projection.main.js ***!
              \*******************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.projection = exports.Projection = void 0;
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 52576);
                var _event_emitter = __webpack_require__( /*! ./event_emitter */ 20366);
                const _Number = Number;
                const _min = Math.min;
                const _max = Math.max;
                const _abs = Math.abs;
                const _round = Math.round;
                const _ln = Math.log;
                const _pow = Math.pow;
                const TWO_TO_LN2 = 2 / Math.LN2;
                const DEFAULT_CENTER = [NaN, NaN];

                function floatsEqual(f1, f2) {
                    return _abs(f1 - f2) < 1e-8
                }

                function arraysEqual(a1, a2) {
                    return floatsEqual(a1[0], a2[0]) && floatsEqual(a1[1], a2[1])
                }

                function parseAndClamp(value, minValue, maxValue, defaultValue) {
                    const val = _Number(value);
                    return isFinite(val) ? _min(_max(val, minValue), maxValue) : defaultValue
                }

                function parseAndClampArray(value, minValue, maxValue, defaultValue) {
                    return [parseAndClamp(value[0], minValue[0], maxValue[0], defaultValue[0]), parseAndClamp(value[1], minValue[1], maxValue[1], defaultValue[1])]
                }

                function getEngine(engine) {
                    return engine instanceof Engine && engine || projection.get(engine) || projection(engine) || projection.get("mercator")
                }
                const Projection = function(parameters) {
                    this._initEvents();
                    this._params = parameters;
                    this._engine = getEngine();
                    this._center = this._engine.center();
                    this._adjustCenter()
                };
                exports.Projection = Projection;
                Projection.prototype = {
                    constructor: Projection,
                    _minZoom: 1,
                    _maxZoom: 256,
                    _zoom: 1,
                    _center: DEFAULT_CENTER,
                    _canvas: {},
                    _scale: [],
                    dispose: function() {
                        this._disposeEvents()
                    },
                    setEngine: function(value) {
                        const that = this;
                        const engine = getEngine(value);
                        if (that._engine !== engine) {
                            that._engine = engine;
                            that._fire("engine");
                            if (that._changeCenter(engine.center())) {
                                that._triggerCenterChanged()
                            }
                            if (that._changeZoom(that._minZoom)) {
                                that._triggerZoomChanged()
                            }
                            that._adjustCenter();
                            that._setupScreen()
                        }
                    },
                    setBounds: function(bounds) {
                        if (void 0 !== bounds) {
                            this.setEngine(this._engine.original().bounds(bounds))
                        }
                    },
                    _setupScreen: function() {
                        const that = this;
                        const canvas = that._canvas;
                        const width = canvas.width;
                        const height = canvas.height;
                        const engine = that._engine;
                        const aspectRatio = engine.ar();
                        that._x0 = canvas.left + width / 2;
                        that._y0 = canvas.top + height / 2;
                        const min = [that.project([engine.min()[0], 0])[0], that.project([0, engine.min()[1]])[1]];
                        const max = [that.project([engine.max()[0], 0])[0], that.project([0, engine.max()[1]])[1]];
                        const screenAR = width / height;
                        const boundsAR = _abs(max[0] - min[0]) / _abs(max[1] - min[1]);
                        let correction;
                        if (isNaN(boundsAR) || 0 === boundsAR || _min(screenAR, aspectRatio) <= aspectRatio * boundsAR && aspectRatio * boundsAR <= _max(screenAR, aspectRatio)) {
                            correction = 1
                        } else {
                            correction = boundsAR > 1 ? boundsAR : 1 / boundsAR
                        }
                        if (aspectRatio * boundsAR >= screenAR) {
                            that._xRadius = width / 2 / correction;
                            that._yRadius = width / 2 / (aspectRatio * correction)
                        } else {
                            that._xRadius = height / 2 * (aspectRatio / correction);
                            that._yRadius = height / 2 / correction
                        }
                        that._fire("screen")
                    },
                    setSize: function(canvas) {
                        this._canvas = canvas;
                        this._setupScreen()
                    },
                    getCanvas: function() {
                        return this._canvas
                    },
                    _toScreen: function(coordinates) {
                        return [this._x0 + this._xRadius * coordinates[0], this._y0 + this._yRadius * coordinates[1]]
                    },
                    _fromScreen: function(coordinates) {
                        return [(coordinates[0] - this._x0) / this._xRadius, (coordinates[1] - this._y0) / this._yRadius]
                    },
                    _toTransformed: function(coordinates) {
                        return [coordinates[0] * this._zoom + this._xCenter, coordinates[1] * this._zoom + this._yCenter]
                    },
                    _toTransformedFast: function(coordinates) {
                        return [coordinates[0] * this._zoom, coordinates[1] * this._zoom]
                    },
                    _fromTransformed: function(coordinates) {
                        return [(coordinates[0] - this._xCenter) / this._zoom, (coordinates[1] - this._yCenter) / this._zoom]
                    },
                    _adjustCenter: function() {
                        const center = this._engine.project(this._center);
                        this._xCenter = -center[0] * this._zoom || 0;
                        this._yCenter = -center[1] * this._zoom || 0
                    },
                    project: function(coordinates) {
                        return this._engine.project(coordinates)
                    },
                    transform: function(coordinates) {
                        return this._toScreen(this._toTransformedFast(coordinates))
                    },
                    isInvertible: function() {
                        return this._engine.isInvertible()
                    },
                    getSquareSize: function(size) {
                        return [size[0] * this._zoom * this._xRadius, size[1] * this._zoom * this._yRadius]
                    },
                    getZoom: function() {
                        return this._zoom
                    },
                    _changeZoom: function(value) {
                        const that = this;
                        const oldZoom = that._zoom;
                        const newZoom = that._zoom = parseAndClamp(value, that._minZoom, that._maxZoom, that._minZoom);
                        const isChanged = !floatsEqual(oldZoom, newZoom);
                        if (isChanged) {
                            that._adjustCenter();
                            that._fire("zoom")
                        }
                        return isChanged
                    },
                    setZoom: function(value) {
                        if (this._engine.isInvertible() && this._changeZoom(value)) {
                            this._triggerZoomChanged()
                        }
                    },
                    getScaledZoom: function() {
                        return _round((this._scale.length - 1) * _ln(this._zoom) / _ln(this._maxZoom))
                    },
                    setScaledZoom: function(scaledZoom) {
                        this.setZoom(this._scale[_round(scaledZoom)])
                    },
                    changeScaledZoom: function(deltaZoom) {
                        this.setZoom(this._scale[_max(_min(_round(this.getScaledZoom() + deltaZoom), this._scale.length - 1), 0)])
                    },
                    getZoomScalePartition: function() {
                        return this._scale.length - 1
                    },
                    _setupScaling: function() {
                        const that = this;
                        const k = _max(_round(TWO_TO_LN2 * _ln(that._maxZoom)), 4);
                        const step = _pow(that._maxZoom, 1 / k);
                        let zoom = that._minZoom;
                        that._scale = [zoom];
                        for (let i = 1; i <= k; ++i) {
                            that._scale.push(zoom *= step)
                        }
                    },
                    setMaxZoom: function(maxZoom) {
                        const that = this;
                        that._minZoom = 1;
                        that._maxZoom = parseAndClamp(maxZoom, that._minZoom, _Number.MAX_VALUE, 256);
                        that._setupScaling();
                        if (that._zoom > that._maxZoom) {
                            that.setZoom(that._maxZoom)
                        }
                        that._fire("max-zoom")
                    },
                    getCenter: function() {
                        return this._center.slice()
                    },
                    setCenter: function(value) {
                        if (this._engine.isInvertible() && this._changeCenter(value || [])) {
                            this._triggerCenterChanged()
                        }
                    },
                    _changeCenter: function(value) {
                        const that = this;
                        const engine = that._engine;
                        const oldCenter = that._center;
                        const newCenter = that._center = parseAndClampArray(value, engine.min(), engine.max(), engine.center());
                        const isChanged = !arraysEqual(oldCenter, newCenter);
                        if (isChanged) {
                            that._adjustCenter();
                            that._fire("center")
                        }
                        return isChanged
                    },
                    _triggerCenterChanged: function() {
                        this._params.centerChanged(this.getCenter())
                    },
                    _triggerZoomChanged: function() {
                        this._params.zoomChanged(this.getZoom())
                    },
                    setCenterByPoint: function(coordinates, screenPosition) {
                        const p = this._engine.project(coordinates);
                        const q = this._fromScreen(screenPosition);
                        this.setCenter(this._engine.unproject([-q[0] / this._zoom + p[0], -q[1] / this._zoom + p[1]]))
                    },
                    beginMoveCenter: function() {
                        if (this._engine.isInvertible()) {
                            this._moveCenter = this._center
                        }
                    },
                    endMoveCenter: function() {
                        const that = this;
                        if (that._moveCenter) {
                            if (!arraysEqual(that._moveCenter, that._center)) {
                                that._triggerCenterChanged()
                            }
                            that._moveCenter = null
                        }
                    },
                    moveCenter: function(shift) {
                        const that = this;
                        if (that._moveCenter) {
                            const current = that.toScreenPoint(that._center);
                            that._changeCenter(that.fromScreenPoint([current[0] + shift[0], current[1] + shift[1]]))
                        }
                    },
                    getViewport: function() {
                        const unproject = this._engine.unproject;
                        const lt = unproject(this._fromTransformed([-1, -1]));
                        const lb = unproject(this._fromTransformed([-1, 1]));
                        const rt = unproject(this._fromTransformed([1, -1]));
                        const rb = unproject(this._fromTransformed([1, 1]));
                        const minMax = findMinMax([selectFarthestPoint(lt[0], lb[0], rt[0], rb[0]), selectFarthestPoint(lt[1], rt[1], lb[1], rb[1])], [selectFarthestPoint(rt[0], rb[0], lt[0], lb[0]), selectFarthestPoint(lb[1], rb[1], lt[1], rt[1])]);
                        return [].concat(minMax.min[0], minMax.max[1], minMax.max[0], minMax.min[1])
                    },
                    setViewport: function(viewport) {
                        const engine = this._engine;
                        const data = viewport ? function(project, unproject, viewport) {
                            const lt = project([viewport[0], viewport[3]]);
                            const lb = project([viewport[0], viewport[1]]);
                            const rt = project([viewport[2], viewport[3]]);
                            const rb = project([viewport[2], viewport[1]]);
                            const l = selectClosestPoint(lt[0], lb[0], rt[0], rb[0]);
                            const r = selectClosestPoint(rt[0], rb[0], lt[0], lb[0]);
                            const t = selectClosestPoint(lt[1], rt[1], lb[1], rb[1]);
                            const b = selectClosestPoint(lb[1], rb[1], lt[1], rt[1]);
                            return [2 / _max(_abs(l - r), _abs(t - b)), unproject([(l + r) / 2, (t + b) / 2])]
                        }(engine.project, engine.unproject, viewport) : [this._minZoom, engine.center()];
                        this.setZoom(data[0]);
                        this.setCenter(data[1])
                    },
                    getTransform: function() {
                        return {
                            translateX: this._xCenter * this._xRadius,
                            translateY: this._yCenter * this._yRadius
                        }
                    },
                    fromScreenPoint: function(coordinates) {
                        return this._engine.unproject(this._fromTransformed(this._fromScreen(coordinates)))
                    },
                    toScreenPoint: function(coordinates) {
                        return this._toScreen(this._toTransformed(this._engine.project(coordinates)))
                    },
                    _eventNames: ["engine", "screen", "center", "zoom", "max-zoom"]
                };
                (0, _event_emitter.makeEventEmitter)(Projection);

                function selectFarthestPoint(point1, point2, basePoint1, basePoint2) {
                    const basePoint = (basePoint1 + basePoint2) / 2;
                    return _abs(point1 - basePoint) > _abs(point2 - basePoint) ? point1 : point2
                }

                function selectClosestPoint(point1, point2, basePoint1, basePoint2) {
                    const basePoint = (basePoint1 + basePoint2) / 2;
                    return _abs(point1 - basePoint) < _abs(point2 - basePoint) ? point1 : point2
                }

                function setMinMax(engine, p1, p2) {
                    const {
                        min: min,
                        max: max
                    } = findMinMax(p1, p2);
                    engine.min = returnArray(min);
                    engine.max = returnArray(max)
                }
                const Engine = class {
                    constructor(parameters) {
                        const project = (method = parameters.to, arg => invertVerticalAxis(method(arg)));
                        var method;
                        const unproject = parameters.from ? function(method) {
                            return arg => method(invertVerticalAxis(arg))
                        }(parameters.from) : returnValue(DEFAULT_CENTER);
                        this.project = project;
                        this.unproject = unproject;
                        this.original = returnValue(this);
                        this.source = function() {
                            return (0, _extend.extend)({}, parameters)
                        };
                        this.isInvertible = returnValue(!!parameters.from);
                        this.ar = returnValue(parameters.aspectRatio > 0 ? _Number(parameters.aspectRatio) : 1);
                        this.center = returnArray(unproject([0, 0]));
                        setMinMax(this, [unproject([-1, 0])[0], unproject([0, 1])[1]], [unproject([1, 0])[0], unproject([0, -1])[1]])
                    }
                    aspectRatio(aspectRatio) {
                        const engine = new Engine((0, _extend.extend)(this.source(), {
                            aspectRatio: aspectRatio
                        }));
                        engine.original = this.original;
                        engine.min = this.min;
                        engine.max = this.max;
                        return engine
                    }
                    bounds(bounds) {
                        bounds = bounds || [];
                        const parameters = this.source();
                        const min = this.min();
                        const max = this.max();
                        const b1 = parseAndClampArray([bounds[0], bounds[1]], min, max, min);
                        const b2 = parseAndClampArray([bounds[2], bounds[3]], min, max, max);
                        const p1 = parameters.to(b1);
                        const p2 = parameters.to(b2);
                        const delta = _min(_abs(p2[0] - p1[0]) > 1.54320987654321e-7 ? _abs(p2[0] - p1[0]) : 2, _abs(p2[1] - p1[1]) > 1.54320987654321e-7 ? _abs(p2[1] - p1[1]) : 2);
                        if (delta < 2) {
                            (0, _extend.extend)(parameters, function(project, unproject, p1, p2, delta) {
                                const x0 = (p1[0] + p2[0]) / 2 - delta / 2;
                                const y0 = (p1[1] + p2[1]) / 2 - delta / 2;
                                const k = 2 / delta;
                                return {
                                    to: function(coordinates) {
                                        const [p0, p1] = project(coordinates);
                                        return [(p0 - x0) * k - 1, (p1 - y0) * k - 1]
                                    },
                                    from: function(coordinates) {
                                        return unproject([x0 + (coordinates[0] + 1) / k, y0 + (coordinates[1] + 1) / k])
                                    }
                                }
                            }(parameters.to, parameters.from, p1, p2, delta))
                        }
                        const engine = new Engine(parameters);
                        engine.original = this.original;
                        setMinMax(engine, b1, b2);
                        return engine
                    }
                };

                function invertVerticalAxis(pair) {
                    return [pair[0], -pair[1]]
                }

                function returnValue(value) {
                    return () => value
                }

                function returnArray(value) {
                    return () => value.slice()
                }

                function findMinMax(p1, p2) {
                    return {
                        min: [_min(p1[0], p2[0]), _min(p1[1], p2[1])],
                        max: [_max(p1[0], p2[0]), _max(p1[1], p2[1])]
                    }
                }
                const projection = function(parameters) {
                    return parameters && parameters.to ? new Engine(parameters) : null
                };
                exports.projection = projection;
                const projectionsCache = {};
                projection.get = function(name) {
                    return projectionsCache[name] || null
                };
                projection.add = function(name, engine) {
                    engine = engine instanceof Engine && engine || projection(engine);
                    if (!projectionsCache[name] && engine) {
                        projectionsCache[name] = engine
                    }
                    return projection
                }
            },
        44561:
            /*!******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/vector_map/tooltip_viewer.js ***!
              \******************************************************************************/
            function(__unused_webpack_module, exports) {
                exports.TooltipViewer = TooltipViewer;

                function TooltipViewer(params) {
                    this._subscribeToTracker(params.tracker, params.tooltip, params.layerCollection)
                }
                TooltipViewer.prototype = {
                    constructor: TooltipViewer,
                    dispose: function() {
                        this._offTracker();
                        this._offTracker = null
                    },
                    _subscribeToTracker: function(tracker, tooltip, layerCollection) {
                        this._offTracker = tracker.on({
                            "focus-on": function(arg) {
                                let layer;
                                let proxy;
                                if (tooltip.isEnabled()) {
                                    layer = layerCollection.byName(arg.data.name);
                                    proxy = layer && layer.getProxy(arg.data.index);
                                    const callback = result => {
                                        result && arg.done(result)
                                    };
                                    proxy && callback(tooltip.show(proxy, {
                                        x: arg.x,
                                        y: arg.y,
                                        offset: 12
                                    }, {
                                        target: proxy
                                    }, void 0, callback))
                                }
                            },
                            "focus-move": function(arg) {
                                tooltip.move(arg.x, arg.y, 12)
                            },
                            "focus-off": function() {
                                tooltip.hide()
                            }
                        })
                    }
                }
            },
        61483:
            /*!***********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/vector_map/tracker.js ***!
              \***********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.Tracker = Tracker;
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../common/core/events/core/events_engine */ 92774));
                var _window = __webpack_require__( /*! ../../core/utils/window */ 3104);
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../core/dom_adapter */ 64960));
                var _event_emitter = __webpack_require__( /*! ./event_emitter */ 20366);
                var _index = __webpack_require__( /*! ../../common/core/events/utils/index */ 98834);
                var _wheel = __webpack_require__( /*! ../../common/core/events/core/wheel */ 37373);
                var _utils = __webpack_require__( /*! ../core/utils */ 28779);

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const navigator = (0, _window.getNavigator)();
                const _math = Math;
                const _abs = _math.abs;
                const _sqrt = _math.sqrt;
                const _round = _math.round;
                const _addNamespace = _index.addNamespace;
                const _NAME = "dxVectorMap";
                let EVENTS;
                let Focus;
                ! function() {
                    let flags = [navigator.pointerEnabled, navigator.msPointerEnabled, (0, _window.hasProperty)("ontouchstart")];
                    EVENTS = {
                        start: selectItem(flags, ["pointerdown", "MSPointerDown", "touchstart mousedown", "mousedown"]),
                        move: selectItem(flags, ["pointermove", "MSPointerMove", "touchmove mousemove", "mousemove"]),
                        end: selectItem(flags, ["pointerup", "MSPointerUp", "touchend mouseup", "mouseup"]),
                        wheel: _addNamespace(_wheel.name, _NAME)
                    }
                }();

                function Tracker(parameters) {
                    const that = this;
                    that._root = parameters.root;
                    that._createEventHandlers(parameters.dataKey);
                    that._createProjectionHandlers(parameters.projection);
                    that._initEvents();
                    that._focus = new Focus((function(name, arg) {
                        that._fire(name, arg)
                    }));
                    that._attachHandlers()
                }
                Tracker.prototype = {
                    constructor: Tracker,
                    dispose: function() {
                        this._detachHandlers();
                        this._disposeEvents();
                        this._focus.dispose();
                        this._root = this._focus = this._docHandlers = this._rootHandlers = null
                    },
                    _eventNames: ["start", "move", "end", "zoom", "click", "hover-on", "hover-off", "focus-on", "focus-off", "focus-move"],
                    _startClick: function(event, data) {
                        if (!data) {
                            return
                        }
                        const coords = getEventCoords(event);
                        this._clickState = {
                            x: coords.x,
                            y: coords.y,
                            threshold: isTouchEvent(event) ? 20 : 5,
                            time: Date.now()
                        }
                    },
                    _endClick: function(event, data) {
                        const state = this._clickState;
                        let threshold;
                        let coords;
                        if (!state) {
                            return
                        }
                        if (data && Date.now() - state.time <= 500) {
                            threshold = state.threshold;
                            coords = getEventCoords(event);
                            if (_abs(coords.x - state.x) <= threshold && _abs(coords.y - state.y) <= threshold) {
                                this._fire("click", {
                                    data: data,
                                    x: coords.x,
                                    y: coords.y,
                                    $event: event
                                })
                            }
                        }
                        this._clickState = null
                    },
                    _startDrag: function(event, data) {
                        if (!data) {
                            return
                        }
                        const coords = getEventCoords(event);
                        const state = this._dragState = {
                            x: coords.x,
                            y: coords.y,
                            data: data
                        };
                        this._fire("start", {
                            x: state.x,
                            y: state.y,
                            data: state.data
                        })
                    },
                    _moveDrag: function(event, data) {
                        const state = this._dragState;
                        if (!state) {
                            return
                        }
                        const coords = getEventCoords(event);
                        const threshold = isTouchEvent(event) ? 10 : 5;
                        if (state.active || _abs(coords.x - state.x) > threshold || _abs(coords.y - state.y) > threshold) {
                            state.x = coords.x;
                            state.y = coords.y;
                            state.active = true;
                            state.data = data || {};
                            this._fire("move", {
                                x: state.x,
                                y: state.y,
                                data: state.data
                            })
                        }
                    },
                    _endDrag: function() {
                        const state = this._dragState;
                        if (!state) {
                            return
                        }
                        this._dragState = null;
                        this._fire("end", {
                            x: state.x,
                            y: state.y,
                            data: state.data
                        })
                    },
                    _wheelZoom: function(event, data) {
                        if (!data) {
                            return
                        }
                        const lock = this._wheelLock;
                        const time = Date.now();
                        if (time - lock.time <= 50) {
                            return
                        }
                        if (time - lock.dirTime > 300) {
                            lock.dir = 0
                        }
                        const delta = function(delta, lock) {
                            if (0 === delta) {
                                return 0
                            }
                            let _delta = _abs(delta);
                            const sign = _round(delta / _delta);
                            if (lock.dir && sign !== lock.dir) {
                                return 0
                            }
                            lock.dir = sign;
                            if (_delta < .1) {
                                _delta = 0
                            } else if (_delta < 1) {
                                _delta = 1
                            } else if (_delta > 4) {
                                _delta = 4
                            } else {
                                _delta = _round(_delta)
                            }
                            return sign * _delta
                        }(event.delta / 120 || 0, lock);
                        if (0 === delta) {
                            return
                        }
                        const coords = getEventCoords(event);
                        this._fire("zoom", {
                            delta: delta,
                            x: coords.x,
                            y: coords.y
                        });
                        lock.time = lock.dirTime = time
                    },
                    _startZoom: function(event, data) {
                        if (!isTouchEvent(event) || !data) {
                            return
                        }
                        const state = this._zoomState = this._zoomState || {};
                        let coords;
                        let pointer2;
                        if (state.pointer1 && state.pointer2) {
                            return
                        }
                        if (void 0 === state.pointer1) {
                            state.pointer1 = getPointerId(event) || 0;
                            coords = getMultitouchEventCoords(event, state.pointer1);
                            state.x1 = state.x1_0 = coords.x;
                            state.y1 = state.y1_0 = coords.y
                        }
                        if (void 0 === state.pointer2) {
                            pointer2 = getPointerId(event) || 1;
                            if (pointer2 !== state.pointer1) {
                                coords = getMultitouchEventCoords(event, pointer2);
                                if (coords) {
                                    state.x2 = state.x2_0 = coords.x;
                                    state.y2 = state.y2_0 = coords.y;
                                    state.pointer2 = pointer2;
                                    state.ready = true;
                                    this._endDrag()
                                }
                            }
                        }
                    },
                    _moveZoom: function(event) {
                        const state = this._zoomState;
                        let coords;
                        if (!state || !isTouchEvent(event)) {
                            return
                        }
                        if (void 0 !== state.pointer1) {
                            coords = getMultitouchEventCoords(event, state.pointer1);
                            if (coords) {
                                state.x1 = coords.x;
                                state.y1 = coords.y
                            }
                        }
                        if (void 0 !== state.pointer2) {
                            coords = getMultitouchEventCoords(event, state.pointer2);
                            if (coords) {
                                state.x2 = coords.x;
                                state.y2 = coords.y
                            }
                        }
                    },
                    _endZoom: function(event) {
                        const state = this._zoomState;
                        let startDistance;
                        let currentDistance;
                        if (!state || !isTouchEvent(event)) {
                            return
                        }
                        if (state.ready) {
                            startDistance = getDistance(state.x1_0, state.y1_0, state.x2_0, state.y2_0);
                            currentDistance = getDistance(state.x1, state.y1, state.x2, state.y2);
                            this._fire("zoom", {
                                ratio: currentDistance / startDistance,
                                x: (state.x1_0 + state.x2_0) / 2,
                                y: (state.y1_0 + state.y2_0) / 2
                            })
                        }
                        this._zoomState = null
                    },
                    _startHover: function(event, data) {
                        this._doHover(event, data, true)
                    },
                    _moveHover: function(event, data) {
                        this._doHover(event, data, false)
                    },
                    _doHover: function(event, data, isTouch) {
                        const that = this;
                        if (that._dragState && that._dragState.active || that._zoomState && that._zoomState.ready) {
                            that._cancelHover();
                            return
                        }
                        if (isTouchEvent(event) !== isTouch || that._hoverTarget === event.target || that._hoverState && that._hoverState.data === data) {
                            return
                        }
                        that._cancelHover();
                        if (data) {
                            that._hoverState = {
                                data: data
                            };
                            that._fire("hover-on", {
                                data: data
                            })
                        }
                        that._hoverTarget = event.target
                    },
                    _cancelHover: function() {
                        const state = this._hoverState;
                        this._hoverState = this._hoverTarget = null;
                        if (state) {
                            this._fire("hover-off", {
                                data: state.data
                            })
                        }
                    },
                    _startFocus: function(event, data) {
                        this._doFocus(event, data, true)
                    },
                    _moveFocus: function(event, data) {
                        this._doFocus(event, data, false)
                    },
                    _doFocus: function(event, data, isTouch) {
                        const that = this;
                        if (that._dragState && that._dragState.active || that._zoomState && that._zoomState.ready) {
                            that._cancelFocus();
                            return
                        }
                        if (isTouchEvent(event) !== isTouch) {
                            return
                        }
                        that._focus.turnOff();
                        data && that._focus.turnOn(data, getEventCoords(event))
                    },
                    _cancelFocus: function() {
                        this._focus.cancel()
                    },
                    _createEventHandlers: function(DATA_KEY) {
                        const that = this;
                        that._docHandlers = {};
                        that._rootHandlers = {};
                        that._docHandlers[EVENTS.start] = function(event) {
                            const isTouch = isTouchEvent(event);
                            const data = getData(event);
                            if (isTouch && !that._isTouchEnabled) {
                                return
                            }
                            if (data) {
                                event.preventDefault()
                            }
                            that._startClick(event, data);
                            that._startDrag(event, data);
                            that._startZoom(event, data);
                            that._startHover(event, data);
                            that._startFocus(event, data)
                        };
                        that._docHandlers[EVENTS.move] = function(event) {
                            const isTouch = isTouchEvent(event);
                            const data = getData(event);
                            if (isTouch && !that._isTouchEnabled) {
                                return
                            }
                            that._moveDrag(event, data);
                            that._moveZoom(event, data);
                            that._moveHover(event, data);
                            that._moveFocus(event, data)
                        };
                        that._docHandlers[EVENTS.end] = function(event) {
                            const isTouch = isTouchEvent(event);
                            const data = getData(event);
                            if (isTouch && !that._isTouchEnabled) {
                                return
                            }
                            that._endClick(event, data);
                            that._endDrag(event, data);
                            that._endZoom(event, data)
                        };
                        that._rootHandlers[EVENTS.wheel] = function(event) {
                            that._cancelFocus();
                            if (!that._isWheelEnabled) {
                                return
                            }
                            const data = getData(event);
                            if (data) {
                                event.preventDefault();
                                event.stopPropagation();
                                that._wheelZoom(event, data)
                            }
                        };
                        that._wheelLock = {
                            dir: 0
                        };

                        function getData(event) {
                            const target = event.target;
                            return ("tspan" === target.tagName ? target.parentNode : target)[DATA_KEY]
                        }
                    },
                    _createProjectionHandlers: function(projection) {
                        const that = this;
                        projection.on({
                            center: handler,
                            zoom: handler
                        });

                        function handler() {
                            that._cancelFocus()
                        }
                    },
                    reset: function() {
                        this._clickState = null;
                        this._endDrag();
                        this._cancelHover();
                        this._cancelFocus()
                    },
                    setOptions: function(options) {
                        this.reset();
                        this._detachHandlers();
                        this._isTouchEnabled = !!(0, _utils.parseScalar)(options.touchEnabled, true);
                        this._isWheelEnabled = !!(0, _utils.parseScalar)(options.wheelEnabled, true);
                        this._attachHandlers()
                    },
                    _detachHandlers: function() {
                        const that = this;
                        if (that._isTouchEnabled) {
                            that._root.css({
                                "touch-action": "",
                                "-webkit-user-select": ""
                            }).off(_addNamespace("MSHoldVisual", _NAME)).off(_addNamespace("contextmenu", _NAME))
                        }
                        _events_engine.default.off(_dom_adapter.default.getDocument(), that._docHandlers);
                        that._root.off(that._rootHandlers)
                    },
                    _attachHandlers: function() {
                        const that = this;
                        if (that._isTouchEnabled) {
                            that._root.css({
                                "touch-action": "none",
                                "-webkit-user-select": "none"
                            }).on(_addNamespace("MSHoldVisual", _NAME), (function(event) {
                                event.preventDefault()
                            })).on(_addNamespace("contextmenu", _NAME), (function(event) {
                                isTouchEvent(event) && event.preventDefault()
                            }))
                        }
                        _events_engine.default.on(_dom_adapter.default.getDocument(), that._docHandlers);
                        that._root.on(that._rootHandlers)
                    }
                };
                Focus = function(fire) {
                    let that = this;
                    let _activeData = null;
                    let _data = null;
                    let _disabled = false;
                    let _x;
                    let _y;
                    that.dispose = function() {
                        that.turnOn = that.turnOff = that.cancel = that.dispose = that = fire = _activeData = _data = null
                    };
                    that.turnOn = function(data, coords) {
                        if (data === _data && _disabled) {
                            return
                        }
                        _disabled = false;
                        _data = data;
                        if (_activeData) {
                            _x = coords.x;
                            _y = coords.y;
                            if (_data === _activeData) {
                                fire("focus-move", {
                                    data: _data,
                                    x: _x,
                                    y: _y
                                });
                                onCheck(true)
                            } else {
                                fire("focus-on", {
                                    data: _data,
                                    x: _x,
                                    y: _y,
                                    done: onCheck
                                })
                            }
                        } else {
                            _x = coords.x;
                            _y = coords.y;
                            fire("focus-on", {
                                data: _data,
                                x: _x,
                                y: _y,
                                done: onCheck
                            })
                        }

                        function onCheck(result) {
                            _disabled = !result;
                            if (result) {
                                _activeData = _data
                            }
                        }
                    };
                    that.turnOff = function() {
                        _data = null;
                        if (_activeData && !_disabled) {
                            fire("focus-off", {
                                data: _activeData
                            });
                            _activeData = null
                        }
                    };
                    that.cancel = function() {
                        if (_activeData) {
                            fire("focus-off", {
                                data: _activeData
                            })
                        }
                        _activeData = _data = null
                    }
                };
                (0, _event_emitter.makeEventEmitter)(Tracker);

                function getDistance(x1, y1, x2, y2) {
                    return _sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2))
                }

                function isTouchEvent(event) {
                    const type = event.originalEvent.type;
                    const pointerType = event.originalEvent.pointerType;
                    return /^touch/.test(type) || /^MSPointer/.test(type) && 4 !== pointerType || /^pointer/.test(type) && "mouse" !== pointerType
                }

                function selectItem(flags, items) {
                    let i = 0;
                    const ii = flags.length;
                    let item;
                    for (; i < ii; ++i) {
                        if (flags[i]) {
                            item = items[i];
                            break
                        }
                    }
                    return _addNamespace(item || items[i], _NAME)
                }

                function getEventCoords(event) {
                    const originalEvent = event.originalEvent;
                    const touch = originalEvent.touches && originalEvent.touches[0] || {};
                    return {
                        x: touch.pageX || originalEvent.pageX || event.pageX,
                        y: touch.pageY || originalEvent.pageY || event.pageY
                    }
                }

                function getPointerId(event) {
                    return event.originalEvent.pointerId
                }

                function getMultitouchEventCoords(event, pointerId) {
                    let originalEvent = event.originalEvent;
                    if (void 0 !== originalEvent.pointerId) {
                        originalEvent = originalEvent.pointerId === pointerId ? originalEvent : null
                    } else {
                        originalEvent = originalEvent.touches[pointerId]
                    }
                    return originalEvent ? {
                        x: originalEvent.pageX || event.pageX,
                        y: originalEvent.pageY || event.pageY
                    } : null
                }
            },
        9713:
            /*!**************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/vector_map/vector_map.js ***!
              \**************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _utils = __webpack_require__( /*! ../core/utils */ 28779);
                var _projection = __webpack_require__( /*! ./projection.main */ 2875);
                var _control_bar = __webpack_require__( /*! ./control_bar/control_bar */ 77148);
                var _gesture_handler = __webpack_require__( /*! ./gesture_handler */ 6695);
                var _tracker = __webpack_require__( /*! ./tracker */ 61483);
                var _data_exchanger = __webpack_require__( /*! ./data_exchanger */ 38409);
                var _legend = __webpack_require__( /*! ./legend */ 92746);
                var _layout = __webpack_require__( /*! ./layout */ 25217);
                var _map_layer = __webpack_require__( /*! ./map_layer */ 65379);
                var _tooltip_viewer = __webpack_require__( /*! ./tooltip_viewer */ 44561);
                var _vector_map = __webpack_require__( /*! ./vector_map.utils */ 68198);
                __webpack_require__( /*! ./projection */ 99094);
                var _m_base_widget = _interopRequireDefault(__webpack_require__( /*! ../../__internal/viz/core/m_base_widget */ 34506));
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 92848));
                var _export = __webpack_require__( /*! ../core/export */ 74754);
                var _title = __webpack_require__( /*! ../core/title */ 16216);
                var _tooltip = __webpack_require__( /*! ../core/tooltip */ 23277);
                var _loading_indicator = __webpack_require__( /*! ../core/loading_indicator */ 92528);
                var _annotations = __webpack_require__( /*! ../core/annotations */ 97808);

                function _interopRequireDefault(e) {
                    return e && e.__esModule ? e : {
                        default: e
                    }
                }
                const RE_STARTS_LAYERS = /^layers/;
                const RE_ENDS_DATA_SOURCE = /\.dataSource$/;

                function mergeBounds(sumBounds, dataBounds) {
                    return dataBounds ? [Math.min(dataBounds[0], dataBounds[2], sumBounds[0]), Math.min(dataBounds[1], dataBounds[3], sumBounds[3]), Math.max(dataBounds[0], dataBounds[2], sumBounds[2]), Math.max(dataBounds[1], dataBounds[3], sumBounds[1])] : sumBounds
                }
                const dxVectorMap = _m_base_widget.default.inherit({
                    _eventsMap: {
                        onClick: {
                            name: "click"
                        },
                        onCenterChanged: {
                            name: "centerChanged"
                        },
                        onZoomFactorChanged: {
                            name: "zoomFactorChanged"
                        },
                        onHoverChanged: {
                            name: "hoverChanged"
                        },
                        onSelectionChanged: {
                            name: "selectionChanged"
                        }
                    },
                    _rootClassPrefix: "dxm",
                    _rootClass: "dxm-vector-map",
                    _themeSection: "map",
                    _fontFields: ["layer:area.label.font", "layer:marker:dot.label.font", "layer:marker:bubble.label.font", "layer:marker:pie.label.font", "layer:marker:image.label.font", "legend.font", "legend.title.font", "legend.title.subtitle.font"],
                    _initLayerCollection: function(dataKey) {
                        const that = this;
                        that._layerCollection = new _map_layer.MapLayerCollection({
                            renderer: that._renderer,
                            projection: that._projection,
                            themeManager: that._themeManager,
                            tracker: that._tracker,
                            dataKey: dataKey,
                            eventTrigger: that._eventTrigger,
                            dataExchanger: that._dataExchanger,
                            tooltip: that._tooltip,
                            notifyDirty: that._notifyDirty,
                            notifyReady: that._notifyReady,
                            dataReady() {
                                let bounds;
                                if (that.option("getBoundsFromData") && !that.option("bounds")) {
                                    that._preventProjectionEvents();
                                    bounds = that._getBoundsFromData();
                                    that._projection.setBounds(bounds);
                                    that._allowProjectionEvents()
                                }
                                if (!that.option("projection")) {
                                    bounds = bounds || that._getBoundsFromData();
                                    if (Math.ceil(bounds[0]) < -180 || Math.ceil(bounds[3]) < -90 || Math.floor(bounds[2]) > 180 || Math.floor(bounds[1]) > 90) {
                                        const longitudeLength = bounds[2] - bounds[0];
                                        const latitudeLength = bounds[1] - bounds[3];
                                        that._projection.setEngine({
                                            to: coordinates => [2 * (coordinates[0] - bounds[0]) / longitudeLength - 1, 2 * (coordinates[1] - bounds[3]) / latitudeLength - 1],
                                            from: coordinates => [(coordinates[0] + 1) * longitudeLength / 2 + bounds[0], (coordinates[1] + 1) * latitudeLength / 2 + bounds[3]]
                                        })
                                    }
                                }
                            }
                        })
                    },
                    _getBoundsFromData() {
                        let bounds = this._getBoundingBoxFromDataSource();
                        if (!bounds) {
                            const layersBounds = this.getLayers().map((l => l.getBounds())).filter((x => void 0 !== x));
                            const boundsByData = (0, _map_layer.getMaxBound)(layersBounds);
                            if (boundsByData) {
                                bounds = boundsByData
                            }
                        }
                        bounds = bounds || [];
                        bounds = [bounds[0], bounds[3], bounds[2], bounds[1]];
                        return bounds
                    },
                    _initLegendsControl: function() {
                        this._legendsControl = new _legend.LegendsControl({
                            renderer: this._renderer,
                            container: this._root,
                            widget: this,
                            layoutControl: this._layoutControl,
                            themeManager: this._themeManager,
                            dataExchanger: this._dataExchanger,
                            notifyDirty: this._notifyDirty,
                            notifyReady: this._notifyReady
                        })
                    },
                    _initControlBar: function(dataKey) {
                        this._controlBar = new _control_bar.ControlBar({
                            renderer: this._renderer,
                            container: this._root,
                            layoutControl: this._layoutControl,
                            projection: this._projection,
                            tracker: this._tracker,
                            dataKey: dataKey
                        })
                    },
                    _initElements: function() {
                        const that = this;
                        const dataKey = (0, _vector_map.generateDataKey)();
                        let notifyCounter = 0;
                        let preventProjectionEvents;
                        that._preventProjectionEvents = function() {
                            preventProjectionEvents = true
                        };
                        that._allowProjectionEvents = function() {
                            preventProjectionEvents = false
                        };
                        that._notifyDirty = function() {
                            that._resetIsReady();
                            ++notifyCounter
                        };
                        that._notifyReady = function() {
                            that._allowProjectionEvents();
                            if (0 === --notifyCounter) {
                                that._drawn()
                            }
                        };
                        that._preventProjectionEvents();
                        that._dataExchanger = new _data_exchanger.DataExchanger;
                        that._projection = new _projection.Projection({
                            centerChanged: function(value) {
                                if (!preventProjectionEvents) {
                                    that._eventTrigger("centerChanged", {
                                        center: value
                                    })
                                }
                            },
                            zoomChanged: function(value) {
                                if (!preventProjectionEvents) {
                                    that._eventTrigger("zoomFactorChanged", {
                                        zoomFactor: value
                                    })
                                }
                            }
                        });
                        that._tracker = new _tracker.Tracker({
                            root: that._root,
                            projection: that._projection,
                            dataKey: dataKey
                        });
                        that._gestureHandler = new _gesture_handler.GestureHandler({
                            projection: that._projection,
                            renderer: that._renderer,
                            tracker: that._tracker
                        });
                        that._layoutControl = new _layout.LayoutControl(that);
                        that._layoutControl.suspend();
                        that._initLayerCollection(dataKey);
                        that._createHtmlStructure();
                        that._initControlBar(dataKey);
                        that._initLegendsControl();
                        that._prepareExtraElements();
                        that._tooltipViewer = new _tooltip_viewer.TooltipViewer({
                            tracker: that._tracker,
                            tooltip: that._tooltip,
                            layerCollection: that._layerCollection
                        })
                    },
                    _change_RESUME_LAYOUT: function() {
                        this._layoutControl.resume()
                    },
                    _initialChanges: ["PROJECTION", "RESUME_LAYOUT", "LAYOUT_INIT", "BOUNDS", "MAX_ZOOM_FACTOR", "ZOOM_FACTOR", "CENTER"],
                    _layoutChangesOrder: ["RESUME_LAYOUT", "LAYERS"],
                    _customChangesOrder: ["EXTRA_ELEMENTS"],
                    _initCore: function() {
                        this._root = this._renderer.root.attr({
                            align: "center",
                            cursor: "default"
                        });
                        this._initElements()
                    },
                    _disposeCore: function() {
                        this._controlBar.dispose();
                        this._gestureHandler.dispose();
                        this._tracker.dispose();
                        this._legendsControl.dispose();
                        this._layerCollection.dispose();
                        this._layoutControl.dispose();
                        this._tooltipViewer.dispose();
                        this._dataExchanger.dispose();
                        this._projection.dispose();
                        this._dataExchanger = this._gestureHandler = this._projection = this._tracker = this._layoutControl = this._root = this._layerCollection = this._controlBar = this._legendsControl = null
                    },
                    _setupInteraction: function() {
                        const options = {
                            centeringEnabled: !!(0, _utils.parseScalar)(this._getOption("panningEnabled", true), true),
                            zoomingEnabled: !!(0, _utils.parseScalar)(this._getOption("zoomingEnabled", true), true)
                        };
                        this._gestureHandler.setInteraction(options);
                        this._controlBar.setInteraction(options)
                    },
                    _getDefaultSize: function() {
                        return {
                            width: 800,
                            height: 400
                        }
                    },
                    _applySize: function(rect) {
                        const layout = {
                            left: rect[0],
                            top: rect[1],
                            width: rect[2] - rect[0],
                            height: rect[3] - rect[1],
                            right: 0,
                            bottom: 0
                        };
                        this._projection.setSize(layout);
                        this._layoutControl.setSize(layout);
                        this._layerCollection.setRect([layout.left, layout.top, layout.width, layout.height]);
                        this._requestChange(["EXTRA_ELEMENTS"])
                    },
                    _optionChanging: function(name, currentValue, nextValue) {
                        if (currentValue && nextValue) {
                            if (RE_STARTS_LAYERS.test(name)) {
                                if (currentValue.dataSource && nextValue.dataSource && currentValue !== nextValue) {
                                    currentValue.dataSource = null
                                } else if (RE_ENDS_DATA_SOURCE.test(name)) {
                                    this.option(name, null)
                                }
                            }
                        }
                    },
                    _applyChanges: function() {
                        this._notifyDirty();
                        this.callBase.apply(this, arguments);
                        this._notifyReady()
                    },
                    _optionChangesMap: {
                        background: "BACKGROUND",
                        layers: "LAYERS",
                        extraElements: "EXTRA_ELEMENTS",
                        controlBar: "CONTROL_BAR",
                        legends: "LEGENDS",
                        touchEnabled: "TRACKER",
                        wheelEnabled: "TRACKER",
                        panningEnabled: "INTERACTION",
                        zoomingEnabled: "INTERACTION",
                        projection: "PROJECTION",
                        bounds: "BOUNDS",
                        maxZoomFactor: "MAX_ZOOM_FACTOR",
                        zoomFactor: "ZOOM_FACTOR",
                        center: "CENTER"
                    },
                    _optionChangesOrder: ["PROJECTION", "BOUNDS", "MAX_ZOOM_FACTOR", "ZOOM_FACTOR", "CENTER", "BACKGROUND", "CONTROL_BAR", "LEGENDS", "TRACKER", "INTERACTION"],
                    _change_PROJECTION: function() {
                        this._setProjection()
                    },
                    _change_BOUNDS: function() {
                        this._setBounds()
                    },
                    _change_MAX_ZOOM_FACTOR: function() {
                        this._setMaxZoom()
                    },
                    _change_ZOOM_FACTOR: function() {
                        this._setZoom()
                    },
                    _change_CENTER: function() {
                        this._setCenter()
                    },
                    _change_BACKGROUND: function() {
                        this._setBackgroundOptions()
                    },
                    _change_LAYERS: function() {
                        this._setLayerCollectionOptions()
                    },
                    _change_CONTROL_BAR: function() {
                        this._setControlBarOptions()
                    },
                    _change_EXTRA_ELEMENTS: function() {
                        this._renderExtraElements()
                    },
                    _change_LEGENDS: function() {
                        this._setLegendsOptions()
                    },
                    _change_TRACKER: function() {
                        this._setTrackerOptions()
                    },
                    _change_INTERACTION: function() {
                        this._setupInteraction()
                    },
                    _themeDependentChanges: ["BACKGROUND", "LAYERS", "CONTROL_BAR", "LEGENDS", "TRACKER", "INTERACTION"],
                    _setProjection: function() {
                        this._projection.setEngine(this.option("projection"))
                    },
                    _setBounds: function() {
                        this._projection.setBounds(this.option("bounds"))
                    },
                    _setMaxZoom: function() {
                        this._projection.setMaxZoom(this.option("maxZoomFactor"))
                    },
                    _setZoom: function() {
                        this._projection.setZoom(this.option("zoomFactor"))
                    },
                    _setCenter: function() {
                        this._projection.setCenter(this.option("center"))
                    },
                    _setBackgroundOptions: function() {
                        this._layerCollection.setBackgroundOptions(this._getOption("background"))
                    },
                    _setLayerCollectionOptions: function() {
                        this._layerCollection.setOptions(this.option("layers"))
                    },
                    _getBoundingBoxFromDataSource() {
                        const layers = this._layerCollection.items();
                        const infinityBounds = [1 / 0, -1 / 0, -1 / 0, 1 / 0];
                        const resultBBox = layers && layers.length ? layers.reduce(((sumBBox, l) => {
                            const layerData = l.getData();
                            const itemCount = layerData.count();
                            if (itemCount > 0) {
                                const rootBBox = layerData.getBBox();
                                if (rootBBox) {
                                    sumBBox = mergeBounds(sumBBox, rootBBox)
                                } else {
                                    for (let i = 0; i < itemCount; i++) {
                                        sumBBox = mergeBounds(sumBBox, layerData.getBBox(i))
                                    }
                                }
                            }
                            return sumBBox
                        }), infinityBounds) : void 0;
                        return resultBBox === infinityBounds ? void 0 : resultBBox
                    },
                    _setControlBarOptions: function() {
                        this._controlBar.setOptions(this._getOption("controlBar"))
                    },
                    _setLegendsOptions: function() {
                        this._legendsControl.setOptions(this.option("legends"))
                    },
                    _setTrackerOptions: function() {
                        this._tracker.setOptions({
                            touchEnabled: this._getOption("touchEnabled", true),
                            wheelEnabled: this._getOption("wheelEnabled", true)
                        })
                    },
                    getLayers() {
                        return this._layerCollection.items().map((l => l.proxy))
                    },
                    getLayerByIndex: function(index) {
                        const layer = this._layerCollection.byIndex(index);
                        return layer ? layer.proxy : null
                    },
                    getLayerByName: function(name) {
                        const layer = this._layerCollection.byName(name);
                        return layer ? layer.proxy : null
                    },
                    clearSelection: function(_noEvent) {
                        const layers = this._layerCollection.items();
                        let i;
                        const ii = layers.length;
                        for (i = 0; i < ii; ++i) {
                            layers[i].clearSelection(_noEvent)
                        }
                        return this
                    },
                    center: function(value) {
                        const that = this;
                        if (void 0 === value) {
                            return that._projection.getCenter()
                        } else {
                            that._projection.setCenter(value);
                            return that
                        }
                    },
                    zoomFactor: function(value) {
                        const that = this;
                        if (void 0 === value) {
                            return that._projection.getZoom()
                        } else {
                            that._projection.setZoom(value);
                            return that
                        }
                    },
                    viewport: function(value) {
                        const that = this;
                        if (void 0 === value) {
                            return that._projection.getViewport()
                        } else {
                            that._projection.setViewport(value);
                            return that
                        }
                    },
                    convertToGeo: function(x, y) {
                        return this._projection.fromScreenPoint([x, y])
                    },
                    convertToXY: function(longitude, latitude) {
                        return this._projection.toScreenPoint([longitude, latitude])
                    }
                });
                (0, _component_registrator.default)("dxVectorMap", dxVectorMap);
                exports.default = dxVectorMap;
                dxVectorMap.addPlugin(_export.plugin);
                dxVectorMap.addPlugin(_title.plugin);
                dxVectorMap.addPlugin(_tooltip.plugin);
                dxVectorMap.addPlugin(_loading_indicator.plugin);
                dxVectorMap.addPlugin(_annotations.plugins.core);
                dxVectorMap.addPlugin(_annotations.plugins.vectorMap);
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        68198:
            /*!********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/vector_map/vector_map.utils.js ***!
              \********************************************************************************/
            function(__unused_webpack_module, exports) {
                exports.generateDataKey = function() {
                    return "vectormap-data-" + nextDataKey++
                };
                let nextDataKey = 1
            },
        87626:
            /*!***********************************!*\
              !*** external "window.Globalize" ***!
              \***********************************/
            function(module) {
                module.exports = window.Globalize
            },
        87531:
            /*!*******************************!*\
              !*** external "window.JSZip" ***!
              \*******************************/
            function(module) {
                module.exports = window.JSZip
            },
        10561:
            /*!********************************!*\
              !*** external "window.jQuery" ***!
              \********************************/
            function(module) {
                module.exports = window.jQuery
            },
        78117:
            /*!****************************!*\
              !*** external "window.ko" ***!
              \****************************/
            function(module) {
                module.exports = window.ko
            }
    };
    var __webpack_module_cache__ = {};

    function __webpack_require__(moduleId) {
        var cachedModule = __webpack_module_cache__[moduleId];
        if (void 0 !== cachedModule) {
            return cachedModule.exports
        }
        var module = __webpack_module_cache__[moduleId] = {
            exports: {}
        };
        __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
        return module.exports
    }!void(__webpack_require__.d = function(exports, definition) {
        for (var key in definition) {
            if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
                Object.defineProperty(exports, key, {
                    enumerable: true,
                    get: definition[key]
                })
            }
        }
    });
    !void(__webpack_require__.o = function(obj, prop) {
        return Object.prototype.hasOwnProperty.call(obj, prop)
    });
    !void(__webpack_require__.r = function(exports) {
        if ("undefined" !== typeof Symbol && Symbol.toStringTag) {
            Object.defineProperty(exports, Symbol.toStringTag, {
                value: "Module"
            })
        }
        Object.defineProperty(exports, "__esModule", {
            value: true
        })
    });
    /*!***************************************************************!*\
      !*** ./artifacts/transpiled-renovation-npm/bundles/dx.viz.js ***!
      \***************************************************************/
    __webpack_require__( /*! ./modules/parts/viz */ 90750)
}();
